openedge - 我可以根据变量的值命名临时表字段吗?
问题描述
您好 Progress4GL 开发人员,
是否可以根据参数的值命名临时表中的字段。
例如,假设我有一个值为“fieldname”的变量集:
define variable randomvariable as character initial "fieldname" NO-UNDO.
现在,我想做这样的事情(下面的代码不起作用):
define variable randomvariable as character initial "fieldname" NO-UNDO.
define temp-table tt_table
field VALUE(randomvariable) AS CHARACTER.
提前谢谢了!
解决方案
正如 bupereira 指出的那样,这需要一个动态临时表。要定义/创建动态临时表,请在此处执行此操作:
DEFINE VARIABLE randomvariable AS CHARACTER INITIAL "fieldname" NO-UNDO.
DEFINE VARIABLE hTempTable AS HANDLE NO-UNDO.
DEFINE VARIABLE hBuffer AS HANDLE NO-UNDO.
CREATE TEMP-TABLE hTempTable .
hTempTable:ADD-NEW-FIELD (randomvariable, "CHARACTER") .
// Optional, but good practive when temp-table becomes large
hTempTable:ADD-NEW-INDEX("myPrimaryIndex",
TRUE, // unique
TRUE, // primary
FALSE // no word-index
) .
hTempTable:ADD-INDEX-FIELD ("myPrimaryIndex", randomvariable) .
hTempTable:TEMP-TABLE-PREPARE ("tt_table") .
hBuffer = hTempTable:DEFAULT-BUFFER-HANDLE .
然后使用默认缓冲区创建一些记录:
hBuffer:BUFFER-CREATE () .
hBuffer:BUFFER-FIELD (randomvariable):BUFFER-VALUE = "Hello" .
hBuffer:BUFFER-CREATE () .
hBuffer:BUFFER-FIELD (randomvariable):BUFFER-VALUE = "World" .
hBuffer:BUFFER-RELEASE .
然后使用默认缓冲区的 FIND... 方法之一或动态查询来访问记录:
hBuffer:FIND-FIRST (SUBSTITUTE ("where &1 = &2",
randomvariable,
QUOTER ("World"))) .
MESSAGE hBuffer:BUFFER-FIELD (randomvariable):BUFFER-VALUE .
推荐阅读
- html - 如何使一个元素超越另一个元素
- jquery - 不工作 $(this).removeAttr('123').attr('456','');
- ruby-on-rails - 赫斯基显示 Bundler::RubyVersionMismatch 错误
- opencv - 使用opencv从python中的圆棒图像中提取文本
- asp.net - ASP.NET 中的弹性搜索 - 使用 & 符号
- angular - TypeError:无法读取未定义的属性“订阅”(角度单元测试)
- prestashop-1.7 - 分享库存多店prestashop 1.7
- c - 打印指针值 NULL
- scala - Scala中的嵌套Monads组合
- javascript - 从 json 响应动态创建模式