Witam.
Mam małą aplikację korzystającą z bazy MsAccess.
Pobieram dane z tabeli paragony i chce coś tam z nimi zrobić.
Potrzebuje znać ilość pobranych rekordów do ProgressBar.
Próbowałem napisać coś:
procedure TMojaKlasa.ACCESS_OPEN(zapytanie: string);
begin
FPOMOC.AccessQuery.Close;
FPOMOC.AccessQuery.SQL.Text:=zapytanie;
TRY
IF FPOMOC.AccessQuery.SQL.Text<>'' THEN FPOMOC.AccessQuery.Open;
EXCEPT
ON e: Exception DO LOG(' BŁĄD PRODEDURY MSSQL_OPEN: ' +zapytanie+' '+E.Message);
END;
end;
/.../
begin
TPom.ACCESS_OPEN('SELECT * FROM DokFin WHERE DataSprzedazy = #'+Calendar1.Date+'#');
FMain.Label2.Caption:='RecordCount: '+IntToStr(FPomoc.AccessQuery.RecordCount);
FMain.ListBox1.Clear;
WHILE NOT FPomoc.AccessQuery.EOF DO
begin
FMain.ListBox1.Items.Add(TPom.Access_String('nr'));
FPomoc.AccessQuery.Next;
end;
FMain.Label3.Caption:='ListBox1.Items.Count: '+IntToStr(FMain.ListBox1.Items.Count);
end;
Taki efekt uzyskałem :
No i teraz pytanie dlaczego RecordCount = 10 ?
Znalazłem na forum informację że w takich przypadkach należy użyć metody FetchAll
, jednak użyty w tym przypadku TSQLQuery
(podłączony do TODBCConnection
) nie ma takiej metody...
I tak na marginesie :
Lepiej używać tej metody czy sprawdzić sobie ilość rekordów SELECT count(*) FROM nazwa_tabeli
?