我经常执行以下进度4GL代码
output to /OUTText.txt.
def var dRow as char.
dRow = "cmpid|CustNum|Cur".
put unformatted dRow skip.
for each Cust no-lock:
dRow = subst("&1|&2|&3", Cust.CmpId, Cust.CustNum, Cust.Curr).
put unformatted dRow skip.
end.
output close. 为了模仿
select * from cust (in MS SQL)我的问题是,是否有一种方法可以使这个代码块,甚至非常类似于使用4GL的"select *“。这样,我就不必键入每个列名,它将打印所有列中的所有值。我的想法是。就像这样。
output to /OUTText.txt.
def var dRow as char.
dRow = "cmpid|CustNum|Cur".
put unformatted dRow skip.
for each Cust no-lock:
if row = 1 then do:
for each Column in Cust:
**'PRINT THE COLUMN HEADER**
end.
end.
else do:
**'PRINT EACH CELL**
end.
end.
output close. 如果有这样的事情。然后,我就不必在dRow中保留显式的列名了。
发布于 2016-11-01 07:58:12
如果您首先输出所有字段标签(或名称),然后使用导出输出表内容,则可以执行所需的操作。
若要更改为字段名而不是标签:将下面的:LABEL更改为:NAME
例如:
DEFINE VARIABLE i AS INTEGER NO-UNDO.
OUTPUT TO c:\temp\somefile.txt.
DO i = 1 TO BUFFER Customer:NUM-FIELDS.
PUT QUOTER(BUFFER Customer:BUFFER-FIELD(i):LABEL).
IF i < BUFFER Customer:NUM-FIELDS THEN
PUT UNFORMATTED ";".
ELSE IF i = BUFFER Customer:NUM-FIELDS THEN
PUT SKIP.
END.
FOR EACH Customer NO-LOCK:
EXPORT DELIMITER ";" Customer.
END.
OUTPUT CLOSE.您可以将标题部分放在一个单独的程序中,以便在每次需要执行类似操作时动态调用:
DEFINE STREAM str.
OUTPUT STREAM str TO c:\temp\somefile.txt.
RUN putHeaders.p(INPUT BUFFER Customer:HANDLE, INPUT ";", INPUT STREAM str:HANDLE).
FOR EACH Customer NO-LOCK:
EXPORT STREAM str DELIMITER ";" Customer.
END.
OUTPUT STREAM str CLOSE.
putHeaders.p
============
DEFINE INPUT PARAMETER phBufferHandle AS HANDLE NO-UNDO.
DEFINE INPUT PARAMETER pcDelimiter AS CHARACTER NO-UNDO.
DEFINE INPUT PARAMETER phStreamHandle AS HANDLE NO-UNDO.
DEFINE VARIABLE i AS INTEGER NO-UNDO.
DO i = 1 TO phBufferHandle:NUM-FIELDS.
PUT STREAM-HANDLE phStreamHandle UNFORMATTED QUOTER(phBufferHandle:BUFFER-FIELD(i):LABEL).
IF i < phBufferHandle:NUM-FIELDS THEN
PUT STREAM-HANDLE phStreamHandle UNFORMATTED pcDelimiter.
ELSE IF i = phBufferHandle:NUM-FIELDS THEN
PUT STREAM-HANDLE phStreamHandle SKIP.
END.发布于 2016-10-31 23:54:01
output to "somefile".
for each customer no-lock:
display customer.
end.我一般不会提到这一点,因为4GL中的嵌入式SQL-89是通往地狱的公路( SQL的方言只为最基本和最琐碎的目的工作,实际上根本不应该在生产代码中使用),但碰巧:
output to "somefile".
select * from customer.是否恰好符合原始问题的规范(尽管,与显示解决方案一样,它也不支持分隔符.)
https://stackoverflow.com/questions/40351975
复制相似问题