CREATE QUERY ohQuery.
ohQuery:SET-BUFFERS(hBuffer).
OhQuery:QUERY-PREPARE("FOR EACH " + ip-tablename ).
ohQuery:QUERY-OPEN().
ohQuery:GET-FIRST().
ip-tablename = value from UI (combo box)
现在我需要为此查询创建一个临时表。如何创作?
如果我使用类似create的方法,我应该传递哪个值?
答案 0 :(得分:2)
要在运行时动态创建临时表,您需要具有所述表的缓冲区的句柄或表名本身。看到你已经拥有'ip-tablename'缓冲区的句柄(我假设hBuffer是名为'ip-tablename'的表的缓冲区,否则你的上述语句将不起作用),你应该使用该句柄出于性能原因而不是'只是'表名。这是如何做到的:
DEF VAR ttH AS HANDLE NO-UNDO.
ttH:CREATE-LIKE(hBuffer).
或者,您也可以使用'ip-tablename'作为类似create的方法,尽管它的表现不佳:
ttH:CREATE-LIKE(ip-tablename).
在使用新的临时表之前,不要忘记你需要使用temp-table prepare方法:
ttH:TEMP-TABLE-PREPARE("myNewTempTable").
希望有所帮助!