for k:=0 to 9 do begin
checknum_str:=strBuf[k];
if(checknum_str='') then exit;
if(RadioButton1.Checked=true)then ADDSTR:='select * from modedbthr where '+'计划单号'+ ' LIKE '+'"%'+checknum_str+'%"'+'and 状态 ='+'"YES"'+'and 执行人='+'"'+ComboBox1.Text+'"'; if(RadioButton2.Checked=true)then ADDSTR:='select * from modedbthr where '+'项目编号'+ ' LIKE '+'"%'+checknum_str+'%"'+'and 状态 ='+'"YES"'+'and 执行人='+'"'+ComboBox1.Text+'"'; dm.Query1.Close;
dm.Query1.sql.Clear;
dm.Query1.SQL.Add(ADDSTR);//查询
dm.Query1.Open;
IF dm.Query1.RecordCount>0 THEN
begin
for i:= 0 to dm.Query1.RecordCount-1 do
begin
ListView1.Items.Add.Caption:=inttostr(i+1);
for j:= 0 to 19 do
begin
ListView1.Items[i].SubItems.Add(dm.Query1.fieldbyname(dbname[j]).asstring);
end;
ListView1.Items[i].SubItems.Add( dm.Query1.fieldbyname('序号').asstring);
dm.Query1.Next;
end;
end;
end;
i只能执行到小于18,大于18 j就不执计 j循环出错
checknum_str:=strBuf[k];
if(checknum_str='') then exit;
if(RadioButton1.Checked=true)then ADDSTR:='select * from modedbthr where '+'计划单号'+ ' LIKE '+'"%'+checknum_str+'%"'+'and 状态 ='+'"YES"'+'and 执行人='+'"'+ComboBox1.Text+'"'; if(RadioButton2.Checked=true)then ADDSTR:='select * from modedbthr where '+'项目编号'+ ' LIKE '+'"%'+checknum_str+'%"'+'and 状态 ='+'"YES"'+'and 执行人='+'"'+ComboBox1.Text+'"'; dm.Query1.Close;
dm.Query1.sql.Clear;
dm.Query1.SQL.Add(ADDSTR);//查询
dm.Query1.Open;
IF dm.Query1.RecordCount>0 THEN
begin
for i:= 0 to dm.Query1.RecordCount-1 do
begin
ListView1.Items.Add.Caption:=inttostr(i+1);
for j:= 0 to 19 do
begin
ListView1.Items[i].SubItems.Add(dm.Query1.fieldbyname(dbname[j]).asstring);
end;
ListView1.Items[i].SubItems.Add( dm.Query1.fieldbyname('序号').asstring);
dm.Query1.Next;
end;
end;
end;
i只能执行到小于18,大于18 j就不执计 j循环出错
解决方案 »
- 求助
- 查询dbgrid中某字段的值 如果该字段的值不存在
- 无法引用data module类的问题
- 紧急求助:delphi7 编写dll用ado连接到oracle8i,内存报错
- ACCESS数据库一加上密码程序就出错
- 谁将edit 框有对齐 检查输入有效性急
- 用fastreport 的[Page#]/[TotalPages],但得到的[TotalPages]的值总是0
- 如何在程序中向F1BOOK的单元格插入JPG图片(formula one 6),非成感谢!
- 哪位老兄能告诉我怎么能控制dbedit输入的数据先不马上写入表中。
- 问各位大哥:哪里有关于EXE文件格式的资料?
- 关于复选排队运行程序的实现(再发100分)
- Ole组件如何放到后台服务程序中
for j:= 0 to 19 do
begin
ListView1.Items[i].SubItems.Add(dm.Query1.fieldbyname(dbname[j]).asstring);
end; 当k=1时,查询到18条记录,执行以下循环时
for j:= 0 to 19 do
begin
ListView1.Items[i].SubItems.Add(dm.Query1.fieldbyname(dbname[j]).asstring);
end;
只能到第16条记录,原后跟踪发现 j:=20。 鼠标放在上循环上显示:
dm.Query1.fieldbyname(dbname[j]).asstring=variable 'j' inaccessible here due to optimization
I 循环执行都是对的: ListView1.Items.Add.Caption:=inttostr(i+1);
dm.Query1.fieldbyname(dbname[j]).asstring=variable 'j' inaccessible here due to optimization 程序运行没错,只是18条以后的记录无法在 ListView1上显示 ,只示 i 循环的那条语句: ListView1.Items.Add.Caption:=inttostr(i+1);