【问题标题】:Progress 4GL: Buffer handle attribute for all fieldsProgress 4GL:所有字段的缓冲区句柄属性
【发布时间】:2022-04-27 13:26:02
【问题描述】:

我对 Progress 还很陌生,如果我遗漏了任何明显的东西,我会很抱歉,所以我已经在网上搜索过,但还没有找到我要找的东西。

我正在运行类似于下面的动态查询,在此示例中,在运行查询之后,相应记录的“年龄”字段显示在屏幕上,我了解这是如何从缓冲区字段属性完成的 -方法,但我的问题是如何显示整个记录,是否有等效的属性方法,或者我误解了一些关键的东西?感谢您的时间。 :

def var tbl as character no-undo.
def var fld as character no-undo.
def var qh as handle no-undo.
def var bh as handle no-undo.
def var fh as handle no-undo.

assign tbl = "customer".
assign fld = "age".
create buffer bh for table tbl.
create query qh.
qh:set-buffers( bh ).
qh:query-prepare( "for each " + tbl + " where name = 'tom'" ).
qh:query-open.

do transaction:
    qh:get-first( no-lock ).
    fh = bh:buffer-field( fld ).
    display fh:buffer-value.
end.

delete object bh.
delete object qh

【问题讨论】:

    标签: progress-4gl openedge dynamicquery


    【解决方案1】:

    没有像使用静态“DISPLAY table-name”语句那样在一个语句中显示整个记录的“简单”方法。您可以获取字段计数(缓冲区句柄:NUM-FIELDS),然后逐步浏览各个字段并使用

    显示它们的值
    DO i = 1 to bh:NUM-FIELDS: 
         DISPLAY bh:BUFFER-FIELD(i):BUFFER-VALUE WITH DOWN.
         DOWN.
    END.
    

    【讨论】:

      【解决方案2】:
      create query qh.
      qh:set-buffers( bh ).
      qh:query-prepare( "for each " + tbl + " where name = 'tom'" ).
      qh:query-open.
      qh:GET-FIRST().
      DO while qh:QUERY-OFF-END = False:  
         DO i = 1 TO bh:NUM-FIELDS:
            display bh:BUFFER-FIELD (i):NAME STRING(bh:BUFFER-FIELD(i):BUFFER-VALUE) with down.
            down.
         END. 
         qh:GET-NEXT ().
      END. 
      

      【讨论】:

      • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
      猜你喜欢
      • 1970-01-01
      • 2021-06-23
      • 2021-02-22
      • 2015-06-05
      • 1970-01-01
      • 2013-10-19
      • 2017-10-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多