Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Bearbeitung von Datensätzen in Thread auslagern (https://www.delphipraxis.net/32896-bearbeitung-von-datensaetzen-thread-auslagern.html)

barnti 29. Okt 2004 11:40


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?

Garby 29. Okt 2004 11:53

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.

Sharky 29. Okt 2004 12:14

Re: Bearbeitung von Datensätzen in Thread auslagern
 
Zitat:

Zitat von barnti
...Wie kann ich erreichen das die Bearbeitung der markierten Datensätze in einem eigenen Thread läuft, so dass der Anwender weiter arbeiten kann?

Hai barnti,

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.

barnti 29. Okt 2004 12:17

Re: Bearbeitung von Datensätzen in Thread auslagern
 
Hallo
Das Problem ist der folgende Aufruf:
Delphi-Quellcode:
...
 for i:=1 to FGrid.SelectedRows.Count-1 do begin
        FGrid.Datasource.Dataset.GotoBookmark(pointer(FGrid.SelectedRows.Items[i]));
...
Ich iterieren über die markierten Zeilen. Dieser Vorgang kostet am meisten Zeit. Deshalb
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?

barnti 29. Okt 2004 12:20

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:47 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