Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi TAdoQuery.Edit mit mehreren Datensätzen (https://www.delphipraxis.net/145742-tadoquery-edit-mit-mehreren-datensaetzen.html)

Freiwilderer 7. Jan 2010 14:47

Datenbank: MSSQL • Zugriff über: ADO

TAdoQuery.Edit mit mehreren Datensätzen
 
Hallo,
ich hab mal wieder n problem und kann dazu im Netz nix finden.

und zwar gibt es bei der TAdoQuery Komponente die schöne Funktion Edit, mit der man einfach den aktuellen Datensatz verändern kann.
Dabei wird der Eigenschaft State auf dsEdit gesetzt.
Den bereits ausgewählten Datensatz kann ich dann ohne Probleme verändern, wenn ich dann allerdings die nächste Zeile anwähle, wird der State wieder auf dsBrowse gesetzt, und die Änderungen werden gespeichert.

Das Speichern (mit TAdoQuery.Post) oder Abbrechen (mit TAdoQuery.Cancel) will ich aber über Buttons steuern...

hat das vielleicht schonmal jemand hinbekommen ?

mfg
Freiwilderer

nahpets 7. Jan 2010 15:19

Re: TAdoQuery.Edit mit mehreren Datensätzen
 
Hallo,

schau mal nach dem Ereignis BeforeScroll, hier kannst Du abfragen, ob geändert wurde und den Anwender bitten, zu speichern oder eben auch nicht oder das Speichern verhindern, wenn es nur beim direkten Aufruf von Post über Button erfolgen soll.

Freiwilderer 7. Jan 2010 15:26

Re: TAdoQuery.Edit mit mehreren Datensätzen
 
hi
und danke für die schnelle antwort
das problem is ja, dass ich eigentlich ganz gern mehrere datensätze in einer sagen wir sitzung verändern möchte, ohne jedes mal auf speichern drücken zu müssen und mit der möglichkeit alle änderungen wieder rückgängig zu machen.

im grunde soll das dann aussehen, wie in excel ... ich ändere alles, was ich will und wenn ich fertig bin drück ich auf speichern oder auf schließen und speichere nicht.


in einer anderen Maske habe ich statt einer AdoQuery ein dxMemData verwendet und dabei geht das ohne probleme, allerdings will ich diese komponente nicht überall verwenden, wenn es sich vermeiden lässt.

nahpets 7. Jan 2010 15:37

Re: TAdoQuery.Edit mit mehreren Datensätzen
 
Hallo,

dxmemData kenn' ich nicht, aber der Name klingt so, als wäre es eine Tabelle, die nur im Arbeitsspeicher liegt. Damit dürfte das von Dir gewünschte realisierbar sein. Nur mit TAdoQuery geht das (meines Wissens) nicht. Hier könntest Du als Alternative einen ClientDataSet nehmen, den DU aus der TAdoQuery befüllst, im DBGrid oder so zum Editieren anbietest und dann auf Buttondruck alle Änderungen an die Datenbank zurückgibst.
Hier gilt dann aber auch: Beim Browsen werden die Änderungen im ClientDataSet gespeichert (aber noch nicht in der Datenbank) und auf Buttondruck kannst Du entweder alles oder nichts speichern.

Freiwilderer 7. Jan 2010 15:41

Re: TAdoQuery.Edit mit mehreren Datensätzen
 
Hi
Ja, das speichert die Daten lokal zwischen.

Ich bin im moment dabei die vorhandenen ClientDataSets zu löschen, da die anderweitig probleme machen und versuche jetzt die funktionalität anders abzubilden...

sx2008 7. Jan 2010 16:17

Re: TAdoQuery.Edit mit mehreren Datensätzen
 
Du müsstest zu Beginn eine Transaction starten:
Delphi-Quellcode:
ADOConnection1.BeginTrans
Danach kannst du mehrere Datensätze verändern.
Zuletzt muss sich der Benutzer entscheiden, ob er ALLE Änderungen übernehmen oder verwerfen möchte.
Dazu entweder CommitTrans oder RollbackTrans aufrufen.

Freiwilderer 7. Jan 2010 16:28

Re: TAdoQuery.Edit mit mehreren Datensätzen
 
hi sx2008
danke erstmal für deine Antwort

das würde zwar vermutlich gehen, aber das würde schon sehr unschön aussehen und von der benutzung wärs wohl auch nich sonderlich toll ...

Ich bin mitlerweile so weit, dass ich doch versuche einfach das scrollen zu verhindern, auch, wenn das nicht sonderlich schön ist.
Das Problem ist allerdings, dass die ADOQuery den State Modify schon im BeforScroll wieder auf Browse setzt ...
weiß da momentan nich weiter ^^


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:42 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