Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   TADO Table updaten mit Event (https://www.delphipraxis.net/179164-tado-table-updaten-mit-event.html)

Pilgi91 18. Feb 2014 08:58

Datenbank: Access • Version: 2007 • Zugriff über: Delphi

TADO Table updaten mit Event
 
Hallo liebe Community !

Hoffe ich mache jetzt keinen doppelten Eintrag aber finde für mein Problem keine Lösung.

Folgendes Problem:
Habe mit TADOConnection eine Verbindung zu meiner Access Datenbank gemacht und hol mir dann die Daten in ein TDBGrid über eine TADOTable und einen TDataSource. Das funktioniert soweit ganz gut. Jetzt will ich aber, dass wenn ich Daten im TBDGrid ändere diese erst ab einem bestimmten Event (Button.OnClick) in die Datenbank eingetragen werden. Ist das überhaupt mit den TADO Komponenten möglich?
Habe schon gelesen das TADO für direkten Zugriff genutzt wird trotzdem würde es mich interessieren ob es möglich ist.

Mit freundlichen Grüßen

Pilgi91

DeddyH 18. Feb 2014 09:13

AW: TADO Table updaten mit Event
 
Hallo und Willkommen in der DP :dp:,

eine IMO recht elegante Möglichkeit wäre die Verwendung eines ClientDatasets. Einen zwar etwas älteren, aber nicht schlechten (soweit ich das nach einem schnellen Überfliegen beurteilen kann) Artikel dazu findest Du hier: http://edn.embarcadero.com/article/22571, insbesondere der Abschnitt "Reconciling data".

jensw_2000 18. Feb 2014 09:22

AW: TADO Table updaten mit Event
 
ADO kann das auch selbst machen. Ich kann nur leider erst heute Nacht reinschauen.

Es gab da einen Updatemode, der keine Änderungen direkt in die DB gepostet hat.
Stattdessen wurden clientseitig alle Änderungen gecatcht. Batchupdate und Cancel(All) haben den Änderungscache dann gepostet oder zurückgesetzt.

Google mal nach ADO und Updatemode, und sag bescheid falls du deine Lösung gefunden hast.
Wenn nicht suche ich heute Nacht mal in meinen alten Projekten.

DeddyH 18. Feb 2014 09:43

AW: TADO Table updaten mit Event
 
Du meinst http://docs.embarcadero.com/products...dates_xml.html. Klar, geht auch, nur legt man sich damit auf ADO fest. Aber das muss ja auch nicht unbedingt ein Nachteil sein.

Pilgi91 27. Feb 2014 11:13

AW: TADO Table updaten mit Event
 
Hallihallo gleichmal ein großes Dankeschön an euch !
Tut mir Leid, dass ich erst jetzt zurück schreibe. Habe mich jetzt auf die ADO Komponenten festgelegt und das ganze mit der
BatchUpdate Methode gelöst. Statt DataSets dafür zu verwenden blieb ich bei meinen bereits erstellen TADOTables die ebenfalls diese
Funktion/Methode bereitstellen. Rufe jetzt nach einer Änderung des Datensatz in Folge eines Button.OnClick Events die Funktion TADOTable.Batchupdate() auf (ohne Parameter). Wichtig ist wie schon in den Anleitungen die ihr gepostet habt, dass CursorLocation auf clUseClient,CursorType auf ctStatic und LockType auf ltBatchOptimistic (bei ltOptimistic werden die Daten in der Datenbank sofort aktualisiert) gesetzt werden.
Funktioniert prima ! Nochmals Danke an euch ! :thumb:

Vielleicht könnt ihr mir noch eine kleine Frage beantworten.
Ist es möglich alle Daten einer TADOTable über einen DataSource in TDBEdit Felder zu schreiben ohne auf jede einzelne Zeile separat zuzugreifen?
Zum Verständnis: Tabelle mit 3 Spalten und 3 Zeilen = 9 Zellen diese in 9 Textfelder schreiben

Mit freundlichen Grüßen

Pilgi91

Furtbichler 27. Feb 2014 11:35

AW: TADO Table updaten mit Event
 
Nee, So ein TDataset (ein TADOTable ist ja ein Abkömmling) ist zeilenweise organisiert.
Du kannst dir natürlich ein Viewmodel bauen
Delphi-Quellcode:
Function GetValue (row,col : Integer) : Variant;
Begin
  myADOTable.RecNo := row;
  result := myADOTable.Fields[col].Value; // oder so ähnlich
End;
Und als 'Set' natürlich analog.

jensw_2000 27. Feb 2014 11:57

AW: TADO Table updaten mit Event
 
So etwas kann man auch sehr leicht mit nicht-datensensitiven Controls bauen. Also keine TDBIrgendwasEdit's nehmen, sondern Controls ohne DB Binding.
Als Alternative kann ein TDBGrid natürlich alle 3 Zeilen und Spalten darstellen.


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