我通过ODBC连接到OpenEdge DataServer(不是我们的产品,我们只是访问他们的数据库,我几乎没有任何信息,当然也没有来自另一方的帮助).
无论如何,我只需要执行一个简单的Select,添加几行,我需要等效的IsNull语句.
基本上我想执行
SELECT ISNULL(NULL,'test')
Run Code Online (Sandbox Code Playgroud)
这会因语法错误而失败.我看了一下他们误导性地称之为"文档"的东西,但是只有对SP_SQL_ISNULL的引用,但我也无法使用它.我适合T-SQL,所以任何方向的指针都会受到赞赏,即使它只是一个带有TFM链接的RTFM :)
谢谢
如果我在 Java 中有一个具有不可变成员的类,我会这样做:
class MyClass {
private final String name;
private final int id;
myClass(String name, int id) {
this.name = name;
this.id = id;
}
String getName() { return name; }
int getId() { return id; }
}
Run Code Online (Sandbox Code Playgroud)
在 Progress-4GL 中,您通常会看到这样的内容:(请不要讲匈牙利符号。我也讨厌它,但它在 Progress 社区中很常见,所以我只接受它。)
CLASS MyClass :
DEFINE VARIABLE mcName as CHARACTER NO-UNDO.
DEFINE VARIABLE miId as INTEGER NO-UNDO.
CONSTRUCTOR PUBLIC MyClass(INPUT ipcName AS CHARACTER,
INPUT ipiId AS INTEGER):
ASSIGN mcName = ipcName
miId = ipiID.
END. /* constructor(char,int)*/
END …Run Code Online (Sandbox Code Playgroud) 我是 4gl 的新手。我有一个查询,我必须计算特定客户的销售订单数量。
例如:我的表为 so_mstr,so_cust 是我的客户名称字段,so_nbr 是我的销售订单编号字段。
在 SQL 我试过这样,
select so_cust,count(distinct so_nbr) from so_mstr group by so_cust.
Run Code Online (Sandbox Code Playgroud)
请帮助我进行中。谢谢。
这个表中的字段是_field所属字段所属的表的信息.例如,假设_Field有一个_field-name ='XYZ'的记录,我该如何识别这个XYZ字段属于哪个表?
何我为可以接受三个输入参数的程序编写代码:x,y和要写入的文件名?
我应该能够像这样调用程序:运行prog.p(输入"1",输入5,输入"filename1.csv").
到目前为止,我已经编写了下面的代码,不知道如何解决它.
OUTPUT TO xxxxxx\filename1.csv".
DEFINE VARIABLE Profit AS DECIMAL FORMAT "->>,>>9.99":U INITIAL 0 NO-UNDO.
EXPORT DELIMITER "," "Amount" "Customer Number" "Invoice Date" "Invoice Number" "Total_Paid" "Profit".
FOR EACH Invoice WHERE Invoice.Ship-charge > 5.00
AND Invoice.Total-Paid > 0.01
AND Invoice.Invoice-Date GE 01/31/93 /* this is between also can use < >*/
AND Invoice.Invoice-Date LE TODAY NO-LOCK:
Profit = (Invoice.Invoice-Num / Invoice.Total-Paid) * 100.
EXPORT DELIMITER "," Amount Cust-Num Invoice-Date Invoice-Num Total-Paid Profit.
END.
OUTPUT CLOSE.
Run Code Online (Sandbox Code Playgroud)
谢谢.
我想知道为什么我们需要编译4GL进度程序?真的在那里后面发生了什么?为什么我们在编译程序后得到.r文件?当我们检查语法是否正确时,我们将得到一个消息框``语法正确'',它如何发现错误并显示消息。欢迎任何解释。
我写了一个查询以将字符显示为十进制值,但出现错误。让我分享:
DEFINE VARIABLE cDateTime AS CHARACTER NO-UNDO.
DEFINE TEMP-TABLE tt_data NO-UNDO
FIELD DateTime AS DECIMAL FORMAT "->>,>>9.99".
ASSIGN
cDateTime = "20191604121566".
CREATE tt_data.
ASSIGN
tt_data.DateTime = DECIMAL(cDateTime) /* Message Date and Time */
Run Code Online (Sandbox Code Playgroud)
但它说:
“无法使用->>>,>>>,>> 9.999999显示值”。
您能帮忙解决这个问题,并告诉我这里有什么问题吗?
是否有任何功能正在按升序对逗号分隔的列表值进行排序?或者有另一种方法吗?Ex- 4,6,8,1 输出- 1,4,6,8
正如之前的问题所述,我对 Progress-4GL 开发还很陌生。
我刚刚创建了一个 windows(*.w file)以及一个(*.p file)基于包含文件的过程文件(*.i file)。
我做错了什么,我收到一条错误消息,复制粘贴显示以下内容:
---------------------------
Fout
---------------------------
** Begin positie voor SUBSTRING, OVERLAY, enz. moet 1 of groter zijn. (82)
---------------------------
OK
---------------------------
Run Code Online (Sandbox Code Playgroud)
如您所见,这是错误 82 的荷兰语翻译:
** Starting position for SUBSTRING, OVERLAY, etc. must be 1 or greater. (82)
The SUBSTRING, OVERLAY, etc, functions require that the start position (second argument) be greater than or equal to 1.
P
Run Code Online (Sandbox Code Playgroud)
我想知道哪个过程/函数正在启动此错误消息。我正在使用 AppBuilder 版本 11.6 和相应的过程编辑器,因此调试的可能性非常有限。我在想的一件事是转储 Windows 进程,以确定调用堆栈,但我不确定如何执行此操作。我还尝试使用Process Explorer并检查“procwin32.exe”进程内线程的各个堆栈的堆栈,但我不确定如何继续。 …
我正在使用 Progress-4GL 版本 11.6。
正如在另一个问题中所解释的,我现在正在使用动态查询,如下所示:
CREATE BUFFER h-Table1 FOR TABLE "Table1" NO-ERROR.
IF VALID-HANDLE(h-Table1)
...
Run Code Online (Sandbox Code Playgroud)
我已将这段代码放在一个*.i文件中,我将其包含为:
{incl\include_file.i}
Run Code Online (Sandbox Code Playgroud)
我只想将此包含文件放在某些客户的系统中。但是,这会导致其他客户出现编译问题。
有没有办法说(C 风格的预处理器):
#IF <condition>
#THEN {incl\include_file.i}
Run Code Online (Sandbox Code Playgroud)
如果是,我可以在这样的预处理器指令中使用什么条件?
提前致谢
openedge ×10
progress-4gl ×9
progress-db ×2
callstack ×1
debugging ×1
final ×1
odbc ×1
preprocessor ×1
rdbms ×1
sql ×1