RecordCount с компонентом набора данных UniDAC

Я использую компонент TUniQuery из UniDAC. Я хотел бы показать, сколько записей у меня есть, так

Я поместил следующий код для отображения в строке состояния:

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

UnyQuery1.RecordCount всегда возвращает ноль. Но если я запускаю этот код из события нажатия кнопки, он работает.

Что я делаю не так?

2 ответа

Используйте событие 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;

Попробуйте установить для параметра QueryRecCount значение True.

      UniQuery1.Options.QueryRecCount := True;
Другие вопросы по тегам