使用数组在delphi 7上检索多个记录值

时间:2014-05-27 18:28:12

标签: mysql arrays delphi delphi-7

我目前正在开展小项目并且陷入困境。 所以,我创建了一个临时表,其中包含项目详细信息,当我按下按钮[保存]时,我想要的是它将检索这些记录特定值并将值放入不同的临时变量。

这是我为选择特定记录值所做的。

DM.Zread.close;
DM.Zread.SQL.Commatext:= 'Select id_dvd from temp_table where rent_id="rent-0001"';
DM.Zread.open;

例如: 选定的记录值:

id_dvd
| 2 |
| 6 |
| 5 |

正如我之前所说,我想将这些记录值放入3个不同的临时变量中。 所以它会像:

//assumed i did the array function

a:=x[0]; // this line contain value from record one which is 2
b:=x[1]; // this line contain value from record two which is 6
c:=x[2]; // this line contain value from record three which is 5

我完全不知道这样做,我已经在stackoverflow上进行了搜索,并且没有讨论任何线程。但我没有提到这个方法应该使用数组函数,这就是为什么我使用数组制作这个例子的原因。说实话,使用数组时,我并不是真正理解。

非常感谢谁帮助了我。

谢谢

-Dan

1 个答案:

答案 0 :(得分:1)

由于您不知道查询将返回多少行,您应该创建一个动态数组来保存值,然后打开表后循环记录并填充数组:

var
  i: integer;
  IDs: array of integer;
begin
  DM.Zread.close;
  DM.Zread.SQL.Text:= 
      Format('Select id_dvd from temp_table where rent_id=%s',[QuotedStr('rent-0001')]);
  DM.Zread.open;

  SetLength(IDs, DM.Zread.RecordCount);
  i:=0;
  while not DM.Zread.Eof do begin
    IDs[i] := DM.Zread.FieldByName('id_dvd').AsInteger;
    inc(i);
    DM.Zread.Next;
  end;
end;