with dmHospital do
begin
qryHospital.SQL.Clear;
qryHospital.SQL.Add('SELECT * FROM Patients ') ;
qryHospital.SQL.Add('WHERE DoctorID = :DoctorID');
qryHospital.Parameters.ParamByName('DoctorID').Value := StrToInt(sID);
qryHospital.Open;
iCount := qryHospital.RecordCount
end;
此代码显示我想要放入数组的值。但是我不确定如何遍历每条记录并将记录中的每个值都放入正确的数组中。例如:我想要'PatientName'中的名字和来自'PatientSurname'的姓氏。 iCount是数组大小。
答案 0 :(得分:1)
您必须使用TDataset
从While
循环播放。
一些示例代码:
...
var
fieldCod:TField;
Str1:String;
i, Cod:Integer;
begin
...
qryHospital.Open;
iCount := qryHospital.RecordCount;
// Create pointer to field
fieldCod := qryHospital.FieldByName('PatientCode');
// loop the recordset (while not arrive at end)
While (not qryHospital.eof) do begin
// Different modes to access table fields content
Str1 := qryHospital.FieldByName('PatientName').AsString;
i := qryHospital.Fields[1].AsInteger;
Cod := fieldCod.AsInteger;
// Add the values to your array
//...
// Next Record
qryHospital.Next;
end;
注意:为了获得更好的性能,请勿在循环内使用FieldByName
(对于大量记录)。您可以使用Fields[index]
或在循环外创建变量并引用字段。