我是progress 4GL 语言的初学者,我想知道NO-UNDO 和NO-ERROR in progress 4gl 语言之间的区别。
For every 和 For First.. 的含义是什么?下面的示例
FOR EACH <db> NO-LOCK,
FIRST <db> OF <db> NO-LOCK:
Run Code Online (Sandbox Code Playgroud)
展示 ..
这也是为什么我们每次都需要对每个表使用 NO-LOCK。
我想知道为什么我们需要编译4GL进度程序?真的在那里后面发生了什么?为什么我们在编译程序后得到.r文件?当我们检查语法是否正确时,我们将得到一个消息框``语法正确'',它如何发现错误并显示消息。欢迎任何解释。
我写了一个简单的查询,但想在临时表中将空白值显示为整数字段。如您所知,如果整数字段中没有数据,则默认值为0,但我们的客户表示应为空,而不是默认值0。
DEFINE TEMP-TABLE tt_data
FIELD CarColour AS CHARACTER
FIELD Qty AS INTEGER.
FOR EACH <db> NO-LOCK WHERE <db.field> = "White Car" AND <db.field> = "Red Car":
DISPLAY <db.field1> <db.field2>.
END.
/* Note <db.field1> is CHARACTER <db.field2> is INTEGER */
/* DISPLAYED VALUE IS */
WHITE 0 /* There is no qty for this white car so its showing default value 0 */
RED 100
Run Code Online (Sandbox Code Playgroud)
因此,当我将这些数据存储到临时表时,白色汽车数量应为空白而不是0。
注意-我无法更改“临时表”字段类型。
我写了一个查询以将字符显示为十进制值,但出现错误。让我分享:
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显示值”。
您能帮忙解决这个问题,并告诉我这里有什么问题吗?
只是知道从 UTF-8 到 UTF-8 BOM 的转换。我使用下面的查询,但它没有给出预期的结果。如果我错了请纠正我。
define stream m_str.
output stream m_str to value("C:\inetpub\file.txt") convert target "UTF-8".
/*Data goes here*/
output stream m_str close.
Run Code Online (Sandbox Code Playgroud) 我已经编写了一个程序,用于将某些文本文件导出到特定目录,我更喜欢使用MTIME来使每个导出文件具有唯一名称,这是最好的方法,但是问题出在我们的服务器上,另一个过程是使用MTIME导出具有不同数据的相同文件名因此将有机会巧合和改写。您能告诉我拥有唯一文件名的最佳方法吗?让我分享一些样本。
DEFINE INPUT PARAMETER ipData1 AS CHARACTER NO-UNDO.
DEFINE INPUT PARAMETER ipData2 AS CHARACTER NO-UNDO.
DEFINE INPUT PARAMETER ipData3 AS CHARACTER NO-UNDO.
DEFINE VARIABLE cExportData AS CHARACTER NO-UNDO FORMAT 'X(250)'.
DEFINE VARIABLE cPath AS CHARACTER NO-UNDO.
DEFINE VARIABLE cExt AS CHARACTER NO-UNDO.
DEFINE VARIABLE cSFTL AS CHARACTER NO-UNDO FORMAT 'X(150)'.
DEFINE VARIABLE cMessageDateTime AS CHARACTER NO-UNDO.
ASSIGN
cPath = "R:\Downloads\progress\"
cExt = ".Txt"
cMessageDateTime = "123456789".
OUTPUT TO VALUE (cPath + cMessageDateTime + STRING(MTIME) + cExt ).
put unformatted ipData1 …Run Code Online (Sandbox Code Playgroud)