如何使用SQL将表中的插入值转换为数组?

时间:2016-09-30 07:33:39

标签: sql delphi

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是数组大小。

1 个答案:

答案 0 :(得分:1)

您必须使用TDatasetWhile循环播放。

一些示例代码:

...
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]或在循环外创建变量并引用字段。