AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken TFDTable Master/Detail MasterTable post postet DetailTables nicht mehr
Thema durchsuchen
Ansicht
Themen-Optionen

TFDTable Master/Detail MasterTable post postet DetailTables nicht mehr

Ein Thema von Nils Schneider · begonnen am 9. Apr 2018
Antwort Antwort
Nils Schneider

Registriert seit: 9. Apr 2018
1 Beiträge
 
#1

TFDTable Master/Detail MasterTable post postet DetailTables nicht mehr

  Alt 9. Apr 2018, 12:05
Datenbank: SQLite • Version: - • Zugriff über: FireDAC
Hallo zusammen,

vor einiger Zeit habe ich in einem Projekt mit Master- und Detail Tables gearbeitet.
Zu dem Zeitpunkt war es so, dass Änderungen im Master- und den Detail Tables an die Datenbank übertragen wurden, wenn nur der Master Table gepostet wurde.

Nach einigen Monaten wollte ich jetzt an dem Projekt weiter arbeiten, zwischendurch haben sowohl Delphi, als auch FireDAC Updates stattgefunden und ich stelle fest, dass dieser Workflow so nicht mehr funktioniert.
Nun ist es für jeden Detail Table erfordelrich, dass dieser einzeln gepostet wird.

Hier mal ein paar genauere Versions Informationen:

Alte Versionen:

Delphi: RAD Studio XE7
FireDAC: 6.0.0 (Build 88974)

Neue Versionen:

Delphi: RAD Studio 10.2
FireDAC = 11.0.1 (Build 73709)

IndexFieldNames, MasterFields und MasterSource Properties sind in den Detail Tables korrekt eingestellt.
Ich habe, weil ich mittlerweile schon an mir selbst gezweifelt habe, das ganze nochmal in klein nachgebaut.

Eine einfach eAnwendung mit einer FDConnection und WaitCursor, zwei FDTables und zwei DataSourcen.
Es gibt einen Button, der neue Records hinzufügt und die Änderungen an die Datenbank überträgt.

Der Code des ButtonClicks sieht so aus:
Delphi-Quellcode:
procedure TForm4.Button2Click(Sender: TObject);
begin
  tbMaster.CachedUpdates := true;
  tbDetail.CachedUpdates := true;

  tbMaster.Append;
  tbDetail.Append;

  tbMaster.FieldByName('ID').AsString := Edit1.Text;
  tbMaster.FieldByName('MASTER_INFO').AsString := 'master' + Edit1.Text;

  tbDetail.FieldByName('MASTER_ID').AsString := Edit1.Text;
  tbDetail.FieldByName('DETAIL_INFO').AsString := 'detail' + Edit1.Text;

  tbMaster.ApplyUpdates;

  tbMaster.CommitUpdates;
  tbDetail.CommitUpdates;

  tbMaster.CachedUpdates := false;
  tbDetail.CachedUpdates := false;
end;
Mit den alten Versionen wird dabei alles gepostet, mit der gleichen Anwendung und den neuen Versionen wird nur der MasterTable gepostet.
Mir ist aufgefallen, dass mit den neuen Versionen tbDetail.Modified nach dem tbMaster.ApplyUpdates auch wieder false ist.

Hat da jemand eine Idee zu?

Gruß, Nils.

Geändert von Nils Schneider (10. Apr 2018 um 11:57 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

 

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 23:38 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