带有UniDAC数据集组件的RecordCount

时间:2013-12-27 21:24:33

标签: sql delphi unidac tdataset

我正在使用UniDAC的TUniQuery组件。我想显示我有多少记录,所以

我已将以下代码显示在状态栏中:

procedure TForm1.unyQuery1AfterFetch(DataSet: TCustomDADataSet);
begin
    StatusBar1.Panels[1].Text := 'Número de registros: ' + inttostr(unyQuery1.RecordCount);
end;

UnyQuery1.RecordCount始终返回零。但是如果我从按钮点击事件中运行此代码就可以了。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

使用Query的AfterOpen事件而不是AfterFetch。

procedure TForm1.UniQuery1AfterOpen(DataSet: TDataSet);
begin
StatusBar1.Panels[1].Text:= 'Records: ' + inttostr(uniQuery1.RecordCount);
end;

也来自devart:

对于ClientDataSet中数据获取过程的映射,您应该将ClientDataSet.PacketRecord属性设置为等于UniQuery.FetchRows,并使用ClientDataSet.GetData事件来映射数据获取过程

procedure TForm1.Button1Click(Sender: TObject);
begin
ClientDataSet1.PacketRecords := 25;
ClientDataSet1.Open;
  while not ClientDataSet1.eof do
    ClientDataSet1.next;
end;

procedure TForm1.DataSetProvider1GetData(Sender: TObject;
  DataSet: TCustomClientDataSet);
begin
if ClientDataSet1.Active then ShowMessage(IntToStr(ClientDataSet1.RecordCount));
end;