![]() |
Bearbeitung von Datensätzen in Thread auslagern
Hallo,
der Benutzer meiner Anwendung hat die Möglichkeit eine oder mehrere Zeilen im DBGrid zu markieren. Durch eine Auswahl im Kontextmenü können die Datensätze bearbeitet werden. Ich möchte diese Bearbeitung in einem Thread ausführen lassen, so dass der Benutzer sofort weiter mit dem DBGrid arbeiten kann. Ist der Thread abgeschlossen, sollen die Veränderung wieder angezeigt werden. Mein Problem: Übergebe ich dem Thread das DBGrid, das zugehörige Dataset oder eine der für die Darstellung benötigte Komponenten, so sind diese während der Laufzeit des Threads in der Anwendung nicht zugänglich. Womit ich ja wieder das selbe Probelem habe, dass die Bearbeitung nicht wirklich im Hintergrund ausgeführt wird. Wie kann ich erreichen das die Bearbeitung der markierten Datensätze in einem eigenen Thread läuft, so dass der Anwender weiter arbeiten kann? |
Re: Bearbeitung von Datensätzen in Thread auslagern
Hallo,
du könntest dem Thread nur die Werte der PrimaryKey Spalte übergeben. Dann im Thread eine eigene Query erstellen und nach dem Ende des Threads die Originalquery refreshen. |
Re: Bearbeitung von Datensätzen in Thread auslagern
Zitat:
ist das denn sinvoll? Dadurch bekommst Du ja die Situation das die Werte die im Grid angezeigt werden nicht mehr mit denen in der Tabelle übereinstimmen. |
Re: Bearbeitung von Datensätzen in Thread auslagern
Hallo
Das Problem ist der folgende Aufruf:
Delphi-Quellcode:
Ich iterieren über die markierten Zeilen. Dieser Vorgang kostet am meisten Zeit. Deshalb
...
for i:=1 to FGrid.SelectedRows.Count-1 do begin FGrid.Datasource.Dataset.GotoBookmark(pointer(FGrid.SelectedRows.Items[i])); ... wollte ich das ganze separat erledigen. Im Moment veranschlagt der Thread aber die gleichen Ressourcen wie die zur Anzeige benötigten Komponenten... Daher müssteich irgendwie auf einer Kopie arbeiten!? Kann jemand helfen? |
Re: Bearbeitung von Datensätzen in Thread auslagern
Hallo Sharky,
das ist nicht wichtig, denn es handelt sich um zusätzliche Informationen, die den internen Status einzelner Daten wieder spiegeln. Deshalb ist eine Bearbeitung im Hintergrung durchaus sinnvoll. By the way: Es nervt einfach auf die Abarbeitung zu warten ohne weiterarbeiten zu können. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz