进度4gl如何计算表中的行数

时间:2016-06-24 18:11:35

标签: progress-4gl openedge

http://knowledgebase.progress.com/articles/Article/P5496

我试过For Each tableA无锁定,带有i整数增量。 我也试过累积。 但我没有运气。我认为是因为桌子非常大。

为累积。如果我有多个字段作为键,我如何从索引中受益?。

以下是数据样本。

表名是tableA 键索引是trxNum,CtrlNum,SeqNum

我试图以这种方式输入密钥索引。但我认为这不是一个有效的语法:

FOR EACH trxCtld NO-LOCK:
  ACCUMULATE trxNum, CtrlNum, SeqNum  (COUNT).
END.

以及如何显示进度的技巧,如循环完成的次数。我认为显示每个10000循环以弹出一条消息说"嘿我已完成10000循环"等等...

谢谢

我估计tableA有大约200万条记录。

1 个答案:

答案 0 :(得分:4)

简单明了的方法:

define variable i as integer no-undo.
for each trxCtld no-lock:
  i = i + 1.
  if i modulo 1000 then display i.
end.
display i.

需要沿着这些方向显示进度。如果您只想要数字:

SQL-89方式(SQL-89嵌入在4GL中,你不应该把它用于任何复杂的东西,但它偶尔会像这样快速和脏的方便:

select count(*) from trxCtld.

动态查询方式:

define variable q as handle no-undo.

create query q.
q:forward-only = yes.
q:add-buffer( buffer trxCtld:handle ).
q:query-prepare( "preselect each site no-lock" ).
q:query-open.

display q:num-results.