procedure Txinzengfm.FormShow(Sender: TObject);
var
i, j: Integer; //定义两个整型变量用来循环行和列
begin
ADODataSet2.Open;
StringGrid1.RowCount := ADODataSet2.RecordCount + 1; //定义StringGrid1的行数
j := 0; //赋初值
while not ADODataSet2.Eof do
begin
for i := 0 to ADODataSet2.FieldCount - 2 do //字段数为什么要减2呢,因为StringGrid1的列数是从0开始的,要减掉1外,ADODataSet2里的备注一个字段也不要的,
StringGrid1.Cells[i + 1, j + 1] := ADODataSet2.Fields[i].AsString; //?
ADODataSet2.Next; {这样就在第二列里的第二行开始,不停的把ADODataSet2的字段循环给StringGrid1的格子赋值}
Inc(j); {i在0到1之间循环一次的时候,j才加1,如[1,1]、[2,1],然后是[1,2]、[2,2],然后是[1,3]、[2,3]这样一直下去的}
end;
说明:(1)ADODataSet2连接的表有三个字段,只取前面的两个,
(2)后面的注释是我理解的,不一定是对的,
(3)这个程序是可以正常运行的。
问题1:
在“?”前面那句我不清楚Fields[i]里“i”的意思,应该循环次数等于StringGrid1的行数呀?
问题2:
我对“Inc(j); {i在0到1之间循环一次的时候,j才加1,如[1,1]、[2,1],然后是[1,2]、[2,2],然后是[1,3]、[2,3]这样一直下去的}”的解释不知道是不是这样的,但“j”到底到多少才停止呢?
var
i, j: Integer; //定义两个整型变量用来循环行和列
begin
ADODataSet2.Open;
StringGrid1.RowCount := ADODataSet2.RecordCount + 1; //定义StringGrid1的行数
j := 0; //赋初值
while not ADODataSet2.Eof do
begin
for i := 0 to ADODataSet2.FieldCount - 2 do //字段数为什么要减2呢,因为StringGrid1的列数是从0开始的,要减掉1外,ADODataSet2里的备注一个字段也不要的,
StringGrid1.Cells[i + 1, j + 1] := ADODataSet2.Fields[i].AsString; //?
ADODataSet2.Next; {这样就在第二列里的第二行开始,不停的把ADODataSet2的字段循环给StringGrid1的格子赋值}
Inc(j); {i在0到1之间循环一次的时候,j才加1,如[1,1]、[2,1],然后是[1,2]、[2,2],然后是[1,3]、[2,3]这样一直下去的}
end;
说明:(1)ADODataSet2连接的表有三个字段,只取前面的两个,
(2)后面的注释是我理解的,不一定是对的,
(3)这个程序是可以正常运行的。
问题1:
在“?”前面那句我不清楚Fields[i]里“i”的意思,应该循环次数等于StringGrid1的行数呀?
问题2:
我对“Inc(j); {i在0到1之间循环一次的时候,j才加1,如[1,1]、[2,1],然后是[1,2]、[2,2],然后是[1,3]、[2,3]这样一直下去的}”的解释不知道是不是这样的,但“j”到底到多少才停止呢?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货