简单问题,变量付值。(20分)

  • 主题发起人 主题发起人 majie_zhb
  • 开始时间 开始时间
M

majie_zhb

Unregistered / Unconfirmed
GUEST, unregistred user!
var A,C,B:integer


for A:=0 to cb2.Items.Count-1 do
begin
with query_add do
begin
close;
sql.Text:='select prct_model,sum(st_num) as st_num,st_remark from '+
'stock where prct_model='
+quotedstr(cb2.Items[A])+' group by prct_model,st_remark';
open;
end;
for C:=A to query_add.RecordCount-1 do //C:=A这块A的值传不到C里面去??
begin
for B:=0 to query_add.FieldCount-1 do
begin
stringGrid1.Cells[B,C+1]:=query_add.Fields.AsString;
query_add.Next;
end;
end;
end;
 
肯定能传到。
 
当A 大于 query_add.RecordCount-1 的时候
for C:=A to query_add.RecordCount-1 do 这个循环不会执行,所以 C 就得不到新的赋值。
上面那句是不是应该改为:for C := 0 to query_add.RecordCount-1 do
 
to liyinwei
A 不可能大于query_add.RecordCount-1 。至多是等于。

不能改为:for C := 0 to query_add.RecordCount-1 do
如果改为C:=0,那么StringGrid只能显示最后 一 条记录。
 
majie_zhb:
for C:=A to query_add.RecordCount-1 do //C:=A这块A的值传不到C里面去??
begin
ShowMessage('A='+InttoStr(A)+' '+'C='+InttoStr(C));
加这个消息测试,在第一次循环的时候A一定是等于C,
除非query_add.RecordCount-1根本就小于A,那么根本不进入循环。
 
好了。搞定了。

谢谢各位。送分!
 
for C:=A to query_add.RecordCount-1 do //C:=A这块A的值传不到C里面去??
在此行搞个断点,看看到底传了值没有,不就行了嘛
 
楼主是说StringGrid显示有问题吧?
应该是 query_add.Next
放错地方了
应该放在 for B:=0 to query_add.FieldCount-1 do 这个循环的外面吧!
 
后退
顶部