to : menliwxj(有缘) 改成下面的也同样的错误 for i :=0 to sqldataset1.RecordCount do begin for j:=0 to sqldataset1.FieldCount do begin stringgrid1.Cells[j,i]:=sqldataset1.Fields[j-1].AsString; sqldataset1.Next; end ; end;
sqldataset1.CommandType:= ctquery; sqldataset1.CommandText:='SELECT * FROM DM_CZRY'; sqldataset1.open; for i :=0 to sqldataset1.RecordCount -1 do begin for j:=0 to sqldataset1.FieldCount-1 do begin stringgrid1.Cells[j,i]:=sqldataset1.Fields[j-1].AsString; sqldataset1.Next;//该条语句应该在此for语句外面 end ; sqldataset1.Next;//在这里才对. end;
for j:=1 to sqldataset1.FieldCount do begin stringgrid1.Cells[j,i]:=sqldataset1.Fields[j-1].AsString; sqldataset1.Next; end ; sqldataset1.Next;这一句没必要要的 for i :=1 to sqldataset1.RecordCount do begin for j:=1 to sqldataset1.FieldCount do begin stringgrid1.Cells[j,i]:=sqldataset1.Fields[j-1].AsString; sqldataset1.Next; end ; end;当I=sqldataset1.FieldCount肯定出错, for i :=1 to sqldataset1.RecordCount do 应改为 for i :=0 to sqldataset1.RecordCount-1 do
改成]for i :=0 to sqldataset1.RecordCount-1 do begin for j:=0 to sqldataset1.FieldCount-1 do begin stringgrid1.Cells[j,i]:=sqldataset1.Fields[j-1].AsString; sqldataset1.Next; end ; end;
for i :=1 to sqldataset1.RecordCount do begin StringGrid1.ColCount:=sqldataset1.FieldCount; for j:=1 to sqldataset1.FieldCount do begin stringgrid1.Cells[j,i]:=sqldataset1.Fields[j-1].AsString; sqldataset1.Next; end ; end;
根本就走不到这个程序这里,以碰到sqldataset1.RecordCount 就出错
要不这样吧: sqldataset1.CommandType:= ctquery; sqldataset1.CommandText:='SELECT * FROM DM_CZRY'; sqldataset1.open; StringGrid1.ColCount:=sqldataset1.FieldCount; StringGrid1.RowCount:=sqldataset1.RecordCount; for i :=1 to sqldataset1.RecordCount do begin for j:=1 to sqldataset1.FieldCount do begin stringgrid1.Cells[j,i]:=sqldataset1.Fields[j-1].AsString; sqldataset1.Next; end ; end;
这个语句,没有copy上来,在帮忙看看
改成下面的也同样的错误
for i :=0 to sqldataset1.RecordCount do
begin
for j:=0 to sqldataset1.FieldCount do
begin
stringgrid1.Cells[j,i]:=sqldataset1.Fields[j-1].AsString;
sqldataset1.Next;
end ;
end;
sqldataset1.CommandText:='SELECT * FROM DM_CZRY';
sqldataset1.open;
for i :=0 to sqldataset1.RecordCount -1 do
begin
for j:=0 to sqldataset1.FieldCount-1 do
begin
stringgrid1.Cells[j,i]:=sqldataset1.Fields[j-1].AsString;
sqldataset1.Next;//该条语句应该在此for语句外面
end ;
sqldataset1.Next;//在这里才对.
end;
begin
stringgrid1.Cells[j,i]:=sqldataset1.Fields[j-1].AsString;
sqldataset1.Next;
end ; sqldataset1.Next;这一句没必要要的
for i :=1 to sqldataset1.RecordCount do
begin
for j:=1 to sqldataset1.FieldCount do
begin
stringgrid1.Cells[j,i]:=sqldataset1.Fields[j-1].AsString;
sqldataset1.Next;
end ;
end;当I=sqldataset1.FieldCount肯定出错,
for i :=1 to sqldataset1.RecordCount do
应改为 for i :=0 to sqldataset1.RecordCount-1 do
begin
for j:=0 to sqldataset1.FieldCount-1 do
begin
stringgrid1.Cells[j,i]:=sqldataset1.Fields[j-1].AsString;
sqldataset1.Next;
end ;
end;
改成你那个样子,也同样的错误
你跟踪一下确保它们从0开始,
我以前遇到了个麻烦,后来发现borland delphi的for循环竟然倒着来。
没办法就用while.
后来borland的人告诉我那是delphi的一个bug.
就是for i:=0 to 10 do的时候i首先是11或10然后是9、8、7……。
begin
for j:=1 to sqldataset1.FieldCount do
begin
stringgrid1.Cells[j,i]:=sqldataset1.Fields[j-1].AsString;
end ;
sqldataset1.Next;
end;依上面改过的再试试看.
构造类型才出现,就是
for i:=0 to 10没有关系。
但for i:=0 to stringlist.count - 1do
就有问题了,
后来发现for i:=0 to 构造类型对象.count都有问题。
showmessage(string(sqldataset1.RecordCount));
结果显示不出结果,出错提示仍然是field name missing
没有法子追踪阿
irecordcount := adoquery1.recordcount;
然后在循环中用irecordcount代替adoquery1.recordcount试试便知,如果问题仍然存在,我想就是你机子的问题了.
如:sqldataset1.IndexDefs.Clear;
sqldataset1.Fields.Clear;
begin
StringGrid1.ColCount:=sqldataset1.FieldCount;
for j:=1 to sqldataset1.FieldCount do
begin
stringgrid1.Cells[j,i]:=sqldataset1.Fields[j-1].AsString;
sqldataset1.Next;
end ;
end;
sqldataset1.CommandType:= ctquery;
sqldataset1.CommandText:='SELECT * FROM DM_CZRY';
sqldataset1.open;
StringGrid1.ColCount:=sqldataset1.FieldCount;
StringGrid1.RowCount:=sqldataset1.RecordCount;
for i :=1 to sqldataset1.RecordCount do
begin
for j:=1 to sqldataset1.FieldCount do
begin
stringgrid1.Cells[j,i]:=sqldataset1.Fields[j-1].AsString;
sqldataset1.Next;
end ;
end;
sqldataset1.Next; <----
end ;
修改成这样:
end ;
sqldataset1.Next;