Im Ereignis OnReconcileError
für ein ClientDataSet, können Sie es an raMerge
, die die Änderungen an das Delta speichert, bereit für eine andere Updates ohne Fehler zu aktualisieren. Gibt es eine Möglichkeit, dem Dataset mitzuteilen, das Delta sofort im OnReconcileError
-Ereignis anzuwenden? Ich kann nur an einen verschachtelten Weg denken, um zu überprüfen, ob Fehler im AfterApplyUpdates
Ereignis behoben wurden.ClientDataSet: Automatisches Anwenden des abgeglichenen Deltas?
1
A
Antwort
1
Also hatte ich zentralen Code für die Anwendung der Updates, und ich erkannte schließlich, dass wahrscheinlich der beste Ort wäre, um zu überprüfen, ob der Benutzer eine Zusammenführung angefordert hat. Ich muss vielleicht noch etwas aufräumen, könnte aber eine Lösung für andere sein, die auf dieses Problem stoßen.
if(cds.ChangeCount > 0)then
begin
fIsMerged := false;
errors := cds.ApplyUpdates(0);
if(errors = 0)then
begin
cds.Refresh;
end
//If there is a conflict, the user might try to merge.
//If they do, we need to reapply the update.
else if(fIsMerged)then
begin
errors := cds.ApplyUpdates(0);
if(errors = 0)then
begin
cds.Refresh;
end;
end;
end;
fIsMerged
ist eine Klassenvariable, die ich in der auf versöhnt Handler gesetzt.
Verwandte Themen
- 1. D2007 ClientDataset
- 2. ClientDataSet CalcFields 'Ungerade Problem
- 3. Automatisches Schließen des Scratch-Puffers
- 4. Automatisches vertikales Scrollen des Textes
- 5. Berechnung des Deltas zwischen mehreren Variablen, gruppiert nach Benutzer-IDs
- 6. Anwenden des CIScreenBlendMode-Filters
- 7. Automatisches Anwenden von Änderungsbefehlen in mehreren Fenstern in Vim
- 8. Automatisches Drehen des Bilds im Bildfeld
- 9. Automatisches Aktualisieren des Compact Framework-Anwendungscodes
- 10. Automatisches Starten des Python-Debuggers bei Fehler
- 11. Automatisches erneutes Verbinden des asynchronen Socket-Clients
- 12. Automatisches Speichern des Formulars im Ordner
- 13. Automatisches Eingeben des Passworts in enter-pssession
- 14. automatisches Schließen des Vaadin-Fensters nach Verzögerung
- 15. R: Berechnung Deltas in einer Zeitreihe
- 16. Maven/Nexus - Automatisches Abhängigkeitsupdate
- 17. Fehler beim Anwenden des Plugins Android Studio
- 18. Anwenden Fall 3 des Master-Theorems
- 19. Verhindern Selektiere automatisches Sortieren
- 20. Software Design: Tier-2-Anwendung mit ClientDataSet und Sockets
- 21. Warum findet die Locate-Methode von ClientDataSet keinen vorhandenen Datensatz?
- 22. Delphi: Clientdataset: EDatabaseError on .Open; mit ProviderName set
- 23. Wie automatisch löschen clientdataset Datensätze, die nicht aktualisiert wurden
- 24. Automatisches Öffnen des Terminalfensters unter Mac OS X
- 25. Automatisches Öffnen des Wähltastenfelds bei ankommendem/ausgehendem Anruf
- 26. JavaScript Accoridon - Automatisches Scrollen zum Anfang des offenen Akkordeons
- 27. Flask + mod_wsgi automatisches Nachladen bei Änderung des Quellcodes
- 28. Automatisches erneutes Laden des Berichts zur Parameterauswahl in Reporting Services
- 29. Automatisches Neustarten einer Chat-Server-Anwendung beim Neustart des Systems
- 30. WPF-Druck - Automatisches Festlegen des Druckers auf WPF PrintDialog
Ich versuchte den einfachen Ansatz der Änderung eines Datensatzes im OnReconcileError-Ereignis, aber Aufruf von .Post auf der CDS führt nur zu einer Ausnahme "Operation nicht anwendbar". Verwenden Sie das RecError-Formular (aus dem Object Repository) bereits in OnReconcileError? Wie auch immer, es wäre wahrscheinlich viel einfacher zu vermeiden, dass Fehler von vornherein so weit wie möglich auftreten, indem einige benutzerdefinierte Einschränkungen auf dem CDS gesetzt werden. – MartynA
Ja, ich bin. Ich habe es optimiert, um nur Zusammenführen oder Aktualisieren zu ermöglichen. Die Aktualisierung ist großartig, aber merge nur die Hälfte von dem, was ich brauche. –
Nun, ich denke, man sollte den Lesern genau erklären, was die "andere Hälfte" ist. Wenn ich Sie richtig verstehe, wäre das schwierigste Bit, in OnReconcileError (ohne menschliche Unterstützung) genau zu identifizieren, welche Änderungen an dem geänderten Datensatz vorgenommen werden müssen, um die Abgleichsfehler zu beheben. Wenn du das kannst. Ich hätte gedacht, dass das Ausführen der Änderungen bei einem späteren Aufruf von ApplyUpdates relativ trivial wäre. – MartynA