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;