【发布时间】:2021-01-21 14:11:55
【问题描述】:
那么,如何将数据库的记录(来自 TADOTable 组件)写入字符串网格? (记录的字段都是字符串)
我尝试了类似的方法但无济于事:
procedure TfrmPuntehou.WriteToList(tbl: TADOTable;grid:TStringGrid);
var
iNewRowCount:integer;
i,j,m: Integer;
const
separator = ',';
begin
tempList:= TStringList.Create;
try
tbl.First;
while not (tbl.Eof) do
begin
tempList.Add(tbl['Car Number']+separator+tbl['Racer Name']+separator+tbl['Licence']);
tbl.Next;
end;
for j:= 1 to (tempList.Count - 1) do
begin
grid.Rows[j].Text := tempList.Strings[(J-1)] ;
end;
finally
tempList.Free;
end;
//fill the row numbers
for m := 1 to grid.rowcount do
begin
grid.Cells[0,m]:= IntToStr(m);
end;
end;
提前感谢您的帮助!
亲切的问候
PrimeBeat
【问题讨论】:
-
您不想使用
TDBGrid的任何具体原因? -
您应该使用 TADOQuery 而不是 TADOTable。您根本不需要使用中间 TStringList。您可以直接写入网格单元格。使用两个嵌入式 for 循环:一个在记录上,一个在列上。您可以将 stringgrid ColCount 设置为预先设置的字段数,但应在循环中通过记录进度扩展 RowCount(以避免首先查询记录数)。
-
@TomBrunberg 因为我已经在网格中编写了很多其他函数,我只需要做这件事,然后我的程序就完成了。所以我不工作让我重新开始......
-
@fpiette 如何使用 for 循环等实现这样的 ADOQuery?我可以要求一个如何做到这一点的代码示例吗?
-
"使用 for 循环等?"简单 - 不要使用 for 循环从数据集(TAdoTable、TAdoQuery 等)中检索数据,因为您不应该假设您知道有多少数据集行(尤其是在多用户数据集中)。使用
while循环,就像您自己的代码一样...
标签: database delphi ado tstringgrid