Hallo,
Delphi-Quellcode:
DataModuleMain.dsqueryzeiterfassungsansicht.DataSet.First;
while not DataModuleMain.ibqueryzeiterfassungansicht.Eof do
begin
DataModuleMain.ibqueryzeiterfassungansicht.Locate('zeiterfassung_id', DataModuleMain.ibtablezeiterfassungZEITERFASSUNG_ID.value,[]);
counterrecord := DataModuleMain.ibtablezeiterfassung.RecordCount;
DataModuleMain.ibqueryzeiterfassungansicht.LocateNext('zeiterfassung_id', DataModuleMain.ibtablezeiterfassungZEITERFASSUNG_ID.value,[]);
DataModuleMain.ibtablezeiterfassung.Next;
end;
ShowMessage(inttostr(counterrecord));
Finster
Also du fängst mit einem DataSource(ds).DataSet.First an,
dann ein while no
Query.EOF
und zum Schluss ein IBTable.Next.
Du produzierst hier ne Menge
DB-Code, denke ich mal.
Zum zählen nimmt man immer noch Select Count(*)
Ich würde mir mal das ganze im
SQL-Monitor ansehen.
Wenn die Daten nach zeiterfassung_id sortiert sind,
und du die noch nachfolgenden Daten haben willst,
wäre das also ein select count(*) from table where zeiterfassung_id>
eineID
Das "DataModuleMain.dsqueryzeiterfassungsansicht.DataS et.First;"
ist auch nicht so gut, falls das ds wirklich ein DataSource ist,
was an einer Komponente hängt.
DisableControls fehlt dann, sonst wird die Komponente gezwungen,
durch deinen Code jedesmal ihre Anzeige zu aktualisieren.
Wenn es geht, ersetze die TIBTable komplett,
die ist nur aus "Kompatibilität" da und etwas lahm.
So, Feierabend !
Heiko