Ich habe die Änderungen von dir getestet, es funktioniert wunderbar.
Aber das Hauptproblem bleibt bestehen, nämlich dass die SQLDB unnötige Updates macht.
Vielleicht kann ich es dort korregieren, weil ich eben etwas dazu gelernt habe. Ich habe gerade die FreeIBComponents angeschaut, es sah einfach aus. Dort Änderungen gemacht, jetzt arbeitet TFIBDataSet genauso wie ich mir das vorgestellt habe oder wie die Datenbank komponenten von dir. Nur bis Heute wußte ich FreeIBComponents nicht, ich weiß nicht ob die zuverlässig arbeiten, deshalb muss ich mal schauen.
https://sourceforge.net/projects/fibl/Mein Fehler gestern war, dass ich versucht habe TDateSet zu verändern, es ging schief. Ich glaube ich muss die Lösung bei BufDataset suchen, villeicht ist die Lösung dass "TRecUpdateBuffer".UpdateKind nicht ukModify wird. So ähnlich habe ich es bei TFIBDATASET gemacht.
mse hat geschrieben:... AFAIK sendet Zeos nur die veränderten Daten...
Meinst du die TZTable oder TZQuery ohne TZUpdateSQL-Komponente? Ich verwende bei TZQuery die TZUpdateSQL-Komponente und ich kann mir nicht vorstellen, dass ZEOS mein Update-SQL-Kommando auseinander nimmt und neu zusammensetzt.
mse hat geschrieben:... Was meinst du mit "Spaltenangaben"?
Damit meine ich Datenfelder. Eine SQL-Abfrage besteht doch meistens über mehrere TAbellen und da ist es schwierig herauszufinden welches Feld zu welche Tabelle gehört und welches Feld dann aktualisiert werden soll. Man konnte dafür für ein neuen Dataset zwei dimensionale string array machen oder bestehende persistente Felder erweitern:
Code: Alles auswählen
Feld Tabelle
======= ===============
Feld1 Tabelle1
Feld2 Tabelle1
Feld1 Tabelle2
...
Und noch eine "Where"-Liste um bei Update Datenfelder lokalisieren zu können:
Code: Alles auswählen
Tabelle Where-Kondition
========== =================
Tabelle1 Feld1= :feld1
Tabelle2 (Feld1= :feld1) AND (Feldxyz=2)
Damit kann die Dataset-Komponente nur für veränderte Felder dynamisch Update-SQL-Kommandos erstellen und ausführen, sogar für mehrere verschiedene Tabellen.