我想使用for循环将查询中的项目添加到TListView中。但是我在ListViewShifts.Items.Add()行中说“实际参数太多”时出错。从查询添加到列表的正确方法是什么?
Qry := TFDQuery.Create(DBConnection);
Qry.Connection := DBConnection;
Qry.SQL.Text := 'SELECT Count(10) FROM Bookings WHERE NurseNo=:nurseID;';
Qry.Params.ParamByName('nurseID').AsInteger := NurseID;
Qry.Active := True;
//Fill the list view with the shifts that have the nurses ID
for Count := 0 to 10 do
begin
ListViewShifts.Items.Add(Qry.Fields[Count].AsString);
end;
最佳答案
您需要考虑以下几点:
如果您的ListViewShifts
变量是TListView
,则方法ListViewShifts.Items.Add
不需要参数。这是Too many actual parameters
错误的原因。
SQL语句SELECT Count(10) FROM Bookings WHERE NurseNo=:nurseID;
将返回仅包含一列的结果集。
如果要获取前10行,则您的语句可能应该是:SELECT TOP(10) FROM Bookings WHERE NurseNo=:nurseID;
使用First
,Eof
和Next
数据集方法从结果集中获取记录。
下一个基本示例显示了如何在TListView
中添加10个项目:
procedure TMainForm.btnGet(Sender: TObject);
var
li: TListItem;
begin
Qry := TFDQuery.Create(DBConnection);
Qry.Connection := DBConnection;
Qry.SQL.Text := 'SELECT TOP(10) FROM Bookings WHERE NurseNo=:nurseID;';
Qry.Params.ParamByName('nurseID').AsInteger := NurseID;
Qry.Active := True;
Qry.First;
for Count := 1 to 10 do
begin
Qry.Next;
li := ListViewShifts.Items.Add;
li.Caption := Qry.Fields[0].AsString;
end;
(*
Qry.First;
while not Qry.Eof do begin
li := ListViewShifts.Items.Add;
li.Caption := Qry.Fields[0].AsString;
Qry.Next;
end;
*)
end;
关于delphi - 如何将项目从SQL查询添加到TListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54830183/