AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Firedac SchemaAdapter Problem!
Thema durchsuchen
Ansicht
Themen-Optionen

Firedac SchemaAdapter Problem!

Ein Thema von Mavarik · begonnen am 13. Nov 2014 · letzter Beitrag vom 21. Dez 2015
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#11

AW: Firedac SchemaAdapter Problem!

  Alt 13. Nov 2014, 16:13
Aus Sicht der DB-Komponenten ist das Verhalten genau richtig. Die können ja nicht wissen, dass Du die Daten schon anderweitig losgeworden bist.

Es geht also um die Frage, wie Du einem TDataSet mitteilen kannst, dass er die Information, dass da Datensätze aktualisiert wurden, vergessen und seinen Zustand als "aktuell" betrachten kann.
Im Prinzip ja streiche TDataSet setzt SchemaAdapter und ich bin zufrieden...
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#12

AW: Firedac SchemaAdapter Problem!

  Alt 13. Nov 2014, 16:25
Der SchemaAdapter selbst merkt sich das nicht, er verwaltet nur eine Liste an TDataSets - so geht es aus dessen Quellcode hervor.
Im Prinzip greifst Du doch - zumindest aus Daten-Sicht - in das Transaktions-Handling ein, indem Du die Daten anderweitig weiterleitest und den dann neuen Zustand als "Commited" betrachtest.

Eventuell solltest Du Deine Daten tatsächlich in eine MemTable kopieren - das geht bei FireDAC ja einfach. Auf der MemTable wird dann gearbeitet und wenn eine echte DB-Verbindung besteht, dann werden die Daten in die originale Query zurück kopiert und wenn keine Verbindung besteht, gehst Du den Weg über den SchemaAdapter - nur eben mit der MemTable als Quelle.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#13

AW: Firedac SchemaAdapter Problem!

  Alt 13. Nov 2014, 17:03
Der SchemaAdapter selbst merkt sich das nicht, er verwaltet nur eine Liste an TDataSets - so geht es aus dessen Quellcode hervor.
Im Prinzip greifst Du doch - zumindest aus Daten-Sicht - in das Transaktions-Handling ein, indem Du die Daten anderweitig weiterleitest und den dann neuen Zustand als "Commited" betrachtest.

Eventuell solltest Du Deine Daten tatsächlich in eine MemTable kopieren - das geht bei FireDAC ja einfach. Auf der MemTable wird dann gearbeitet und wenn eine echte DB-Verbindung besteht, dann werden die Daten in die originale Query zurück kopiert und wenn keine Verbindung besteht, gehst Du den Weg über den SchemaAdapter - nur eben mit der MemTable als Quelle.
Ja hab ich auch gesehen... Wenn Query.Active := False ist dann kann der SchemaAdapter auch nix mehr weg schreiben.

Problem ist, dass die MemTable+Command+TableAdapter=Query Memtable hat keinen Eintrag für SchemaAdapter... nur wieder über den Adapter und der brauch ein Command und der braucht eine Connection...

wie gesagt...

Zitat von Offtopic:
Firedac ist jenseits von intuitiv bedienbar!
Vielleicht dann doch besser aus dem Query.Delta die Sache per Hand machen...

Mavarik
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#14

AW: Firedac SchemaAdapter Problem!

  Alt 13. Nov 2014, 18:00
Also!

Delphi-Quellcode:
  FDMemTable1.Active := False;
  FDMemTable1.Data := FDQuery1.Delta;
  FDMemTable1.SaveToFile('Div.xml',sfXML); // nur mal so XML sieht besser aus...
Das bringt fast schon den gewünschten Erfolg!

Leider ist im "log" jedes mal der komplette Datensatz vor und nach der Änderung und nicht nur der Div...
Das ist natürlich viel zu viel...

Mal sehen was man da machen kann... Schön wäre eine Sequenz von UPDATE befehlen...
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#15

AW: Firedac SchemaAdapter Problem!

  Alt 13. Nov 2014, 18:12
Hast du schon mal CommitUpdates ausprobiert?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#16

AW: Firedac SchemaAdapter Problem!

  Alt 13. Nov 2014, 18:24
Hast du schon mal CommitUpdates ausprobiert?
Ich will es ja gar nicht Committen...

Ich brauche eigentlich nur eine AUDIT-Liste...
Code:
Tabelle;ID;Feldname;NeuerWert;
Testdb;22012;Name;"Cooler Jo"
Zur "not" noch
Code:
Tabelle;ID;Feldname;AlterWert;NeuerWert;TimeStamp;User;
TestDB;22012;Name;"Coolr Jo";"Cooler Jo";2014-11-11 20:10.12;"Mavarik"
TestDB;22012;ID=DELETE;;;2014-11-11 20:12.12;"Mavarik"
Das Ganze in eine Que geschrieben und ein Thread, der wenn eine Internet_Verbindung besteht diese abarbeiten und zum Server überträgt.

Mavarik
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#17

AW: Firedac SchemaAdapter Problem!

  Alt 13. Nov 2014, 18:33
Hast du schon mal CommitUpdates ausprobiert?
Ich will es ja gar nicht Committen...
Tut es ja auch nicht. Das sorgt nur dafür, daß die Änderungen aus dem Änderungsprotokoll als in Stein gemeißelt gelten und das Delta hinterher wieder leer ist. Entspricht ungefähr dem MergeChangeLog des TClientDataSet .
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#18

AW: Firedac SchemaAdapter Problem!

  Alt 21. Dez 2015, 12:26
Ich hole den Beitrag nochmal hoch...

Gibt es eine Möglichkeit die Updates auf eine Datenbank in ein Journal zu schreiben?

Damit eine 2. Datenbank (Lokal) die Änderungen nachträglich in gleicher Reihenfolge nachholen kann?

Hat jemand ein Working Demo?

Mavarik
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:56 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