AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Leitfaden für die Nutzung von FireDAC-Komponenten
Thema durchsuchen
Ansicht
Themen-Optionen

Leitfaden für die Nutzung von FireDAC-Komponenten

Ein Thema von ioster · begonnen am 19. Nov 2019 · letzter Beitrag vom 16. Jan 2020
Antwort Antwort
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

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

AW: Leitfaden für die Nutzung von FireDAC-Komponenten

  Alt 19. Nov 2019, 16:27
die simplen Methoden wie Append, Edit und Post für eine Table sucht man jedoch vergeblich.
Die sind doch für alle TDataSet-Abkömmlinge identisch. Wo liegt denn genau dein Problem?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
ioster

Registriert seit: 15. Aug 2008
84 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Leitfaden für die Nutzung von FireDAC-Komponenten

  Alt 19. Nov 2019, 16:55
Das genaue Problem liegt beim Speichern und Aktualisieren der Daten. Ich kenne es so, dass mit einem Post die Daten in der Datenbank stehen. Wenn ich in meiner Anwendung Daten erfasse, dann sieht alles gut aus. Schaue ich nach dem Post in die Datenbank, dann fehlen aber die Feldinhalte.

Editiere ich eine Parametertabelle in meiner Anwendung über ein Grid und kehre in einen Stammdatendialog zurück, dann sind diese optionalen Werte nicht aktuell. Neue Einträge fehlen, geänderte Einträge sind noch so wie vorher. Nach einem Neustart der Anwendung stehen mir die Parameter so wie gewünscht zur Verfügung.

Ein weiteres Problem ist der Abruf der Daten. Ich habe letzt nach einigem Hin und Her den FireDAC-Monitor aktiviert. Mit dem Öffnen eines Stammdatendialogs setze ich die Table auf Active := true. Die Datenbank holt daraufhin alle Datensätze aus der Tabelle, was bei einem umfangreichen Adress- oder Artikelstamm sehr viel sein kann. Mit Änderung der RecsMax in den FetchOptions kam aber nichts Brauchbares mehr dabei heraus.

Insofern sehe ich den Ansatz bei den generellen Einstellungen der FDConnection. In dem Buch von Cary Jensen ist so ein Fall aus der Praxis nicht beschrieben. Die Beispiele zielen alle auf eine Bearbeitung per Grid ab und lassen solche Anwendungsprobleme wie ich sie habe außen vor.

Gruß
Ingo
  Mit Zitat antworten Zitat
hhcm

Registriert seit: 12. Feb 2006
Ort: Wegberg
310 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Leitfaden für die Nutzung von FireDAC-Komponenten

  Alt 19. Nov 2019, 17:00
Editiere ich eine Parametertabelle in meiner Anwendung über ein Grid und kehre in einen Stammdatendialog zurück, dann sind diese optionalen Werte nicht aktuell. Neue Einträge fehlen, geänderte Einträge sind noch so wie vorher. Nach einem Neustart der Anwendung stehen mir die Parameter so wie gewünscht zur Verfügung.
Zurückkehren in ein geöffnetes Dataset? Wie wäre es mit einem Refresh? Oder Schließen und erneutes öffnen? Das ist kein Problem von FireDAC, das ist bei jedem DataSet gleich.
Chris
  Mit Zitat antworten Zitat
ioster

Registriert seit: 15. Aug 2008
84 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Leitfaden für die Nutzung von FireDAC-Komponenten

  Alt 19. Nov 2019, 17:05
Wenn ich im Formclose die Datenquelle wieder schließe und beim erneuten Öffnen des Dialogs wieder aktiviere, dann sollte das mit einem Refresh gleichzusetzen sein. Das Programm greift nur eben nicht auf die aktualisierte Datenbank zu, sondern auf das, was beim ersten Mal geladen wurde. Und das ist ein wesentlicher Punkt, den ich nicht verstehe und der in der Anwendungsentwicklung fatal ist.

Gruß
Ingo
  Mit Zitat antworten Zitat
hhcm

Registriert seit: 12. Feb 2006
Ort: Wegberg
310 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Leitfaden für die Nutzung von FireDAC-Komponenten

  Alt 19. Nov 2019, 17:11
Vielleicht query.CachedUpdates ?? Da hilft ein einfaches .Post nicht.
Chris
  Mit Zitat antworten Zitat
Frickler

Registriert seit: 6. Mär 2007
Ort: Osnabrück
614 Beiträge
 
Delphi XE6 Enterprise
 
#6

AW: Leitfaden für die Nutzung von FireDAC-Komponenten

  Alt 20. Nov 2019, 10:13
Vielleicht query.CachedUpdates ?? Da hilft ein einfaches .Post nicht.
Da muss dann nach dem .Post noch .ApplyUpdates kommen.

Es kommt drauf an, was FireDAC im Hintergrund mit Transaktionen anstellt. Wenn erstmal alle Insert/Update/Delete nur gesammelt und erst beim Schließen der Table committet werden, dann sieht man Änderungen nie sofort.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Leitfaden für die Nutzung von FireDAC-Komponenten

  Alt 20. Nov 2019, 11:53
Hallo,
Zitat:
Das Programm greift nur eben nicht auf die aktualisierte Datenbank zu, sondern auf das, was beim ersten Mal geladen wurde.
Du redest jetzt von Mehrbenutzer-Modus (mehrere Rechner) oder ist es das gleiche Programm?
d.h. Fall1
- Programm.Exe wird gestartet
- macht eine Connection auf
- öffnet ein Formular, speichert dort die Daten ab, schließt das Formular
- öffnet ein anderes Formular und dort sind die Daten nicht zu sehen?

oder ist das Fall2
Rechner 1
- Programm.Exe wird gestartet
- macht eine Connection auf
Rechner 2
- Programm.Exe wird gestartet
- macht eine Connection auf

Rechner 1
- öffnet ein Formular, speichert dort die Daten ab, schließt das Formular
Rechner 2
- öffnet ein anderes Formular und dort sind die Daten nicht zu sehen?
- Programm.Exe wird gestartet
- macht eine Connection auf
Heiko

Geändert von hoika (20. Nov 2019 um 11:57 Uhr)
  Mit Zitat antworten Zitat
ioster

Registriert seit: 15. Aug 2008
84 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: Leitfaden für die Nutzung von FireDAC-Komponenten

  Alt 20. Nov 2019, 15:39
Es muss doch aber irgendwo eine Einstellung geben, die die FireDAC-Connection/-Table dazu veranlasst, die Daten sofort zurückzuschreiben. Ich habe es gerade nochmal ausprobiert: ich erfasse referenzierende Daten in einem Quantumgrid und bin der Meinung alles ausgefüllt zu haben. Selbst wenn ich mit dem Navigator den Datensatz wechsel und wieder zurückblätter wird mir das vorgegaukelt.

In der Datenbank sind aber nicht alle Feldinhalte angekommen und nach dem nächsten Neustart sehe ich auch in der Anwendung das Problem. So kann man doch aber keine vernünftige Anwendung programmieren.

Von Refresh oder Commit ist nirgends in der Dokumentation von Embarcadero die Rede, wenn es um die Bearbeitung von Daten geht. Vielmehr habe ich letzt in einem anderen Zusammenhang den Hinweis auf Live-Daten gefunden, der mir vom Support aber auch nicht näher erläutert wurde. Ich möchte die Daten live haben, live in der Datenbank gespeichert und die aktuellen Daten aus der Datenbank live auf dem Schirm. So kenne ich das aus meiner langjährigen Programmierpraxis, wobei eben FireDAC vollkommen neu für mich ist. Um BDE konnte ich auch immer einen Bogen machen, weil ich mit Komponenten von Extended Systems/Sybase/SAP immer direkten Zugriff auf die Tabellen des Advantage Database Server hatte.

Die Logik der Tabellen sollte eigentlich bei allen Komponenten gleich sein. Deswegen sehe ich das Problem immer noch bei den Einstellungen der FireDAC-Schicht.

Viele Grüße
Ingo
  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 00:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz