Datenbank: Firebird • Version: 2 • Zugriff über: Interbase
DBGrid SelectedRows
Moin, ich hab ein kleines Problem mit meiner Datenbank. Ich habe ca 50.000 Einträge und möchte jetzt von allen selektierten Einträge ein Feld in einer Stringlist speichern.
Das ganze mache ich so, is aber sehr langsam:
Delphi-Quellcode:
Kann das jemand performanter gestalten?
for i:=0 to DBGrid1.SelectedRows.Count-1 do
begin DBGrid1.DataSource.DataSet.GotoBookmark(Pointer(DBGrid1.SelectedRows.Items[i])); ClearList.Add(DBGrid1.DataSource.DataSet.FieldByName('NUMBER').AsString); end; |
AW: DBGrid SelectedRows
Delphi-Quellcode:
var
fld : TField; fld := DBGrid1.DataSource.DataSet.FieldByName('NUMBER'); for i:=0 to DBGrid1.SelectedRows.Count-1 do begin DBGrid1.DataSource.DataSet.GotoBookmark(Pointer(DBGrid1.SelectedRows.Items[i])); ClearList.Add(fld.AsString); end; |
AW: DBGrid SelectedRows
Hmm wirklich schneller gehts das damit nicht :) Warum auch ?
Edit: Jedes GotoBookmark wird ja im GUI angezeigt. Kann man das irgendwie für diese Dinge "abkoppeln"? |
AW: DBGrid SelectedRows
Zitat:
|
AW: DBGrid SelectedRows
Und es funktioniert sogar :)
Vielen Dank! |
AW: DBGrid SelectedRows
Hm das war aber nicht alleine die Ursache für meine lame Anwendung. Nachdem ich alle Werte der Clearlist hinzugefügt habe möchte ich für diese Datensätze ein Query ausführen. Momentan mach ich das so:
Delphi-Quellcode:
Ich muss für jeden Datensatz den SQL Command ausführen. Alle Commands adden und am Ende einmal ausführen funktioniert nicht. Das macht die Sache auch ziemlich lahm :/
for i:=0 to ClearList.Count-1 do
begin IBQuery2.Close; IBQuery2.SQL.Clear; IBQuery2.SQL.Add(Format('UPDATE %s SET '+ ... IBQuery2.Open; IBQuery2.Close; end; |
AW: DBGrid SelectedRows
ID's sammeln und ein Update mit
Code:
geht nicht in Deinem Fall ?
where ID in (1,2,3,4)
|
AW: DBGrid SelectedRows
Hmm kannte ich ehrlich gesagt nicht :)
Hab's grad mal ausprobiert. Wenn ich 10 Datensätze markiere klappt es, wenn ich jedoch alle Datensätze markiere (3000 Testweise) krieg ich: Attempt to execute an unprepared dynamic SQL statement. Kann es sein das es für das Statement eine max Length gibt ? |
AW: DBGrid SelectedRows
muss ich passen, it ID und Firebird habe ich so gut wie keine Erfahrungen, mit MSSQL-Server bin ich bisher nicht auf derartige Grenzen gestoßen...
|
AW: DBGrid SelectedRows
Habs grad rausgefunden. Maximal 1500 Items..
Naja immernoch besser als nichts :) Edit: Ok, habe jetzt mein Query je auf 1500 Items begrenzt jedoch kommt es mir immernoch langsam vor. Noch jemand eine Idee? Vielleicht ein ganz anderen Ansatz? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz