af0815 hat geschrieben: So 5. Mär 2023, 16:43
Es macht auch Sinn in einer Mehrbenutzerumgebung die Tabellen rasch wieder freizugeben (bzw. die Datensätze, je nach DB). Deswegen ist das mit den manuellen Transaktionen nicht so abwegig.
Ist mir klar; das mit den automatischen Transaktionen finde ich von daher eher gruselig.
af0815 hat geschrieben: So 5. Mär 2023, 16:43
Zu deiner Frage, wenn sich der Datensatz der Haupttabelle ändert, musst du mit der verbunden Tabelle was machen. Wenn dort ein Datensatz geändert, eingefügt oder gelöscht wurde, musst du spätestens jetzt eine Entscheidung treffen - Commit und aktzeptieren oder Rolback und die Änderungen verwerfen. Du hast nur eine Query die für eine Abfrage (Tabelle, View) steht.
Mit automatischen Transaktionen bedeutet jetzt erstmal: Bei jedem Datensatzwechsel der Hauptdatei:
- Datensatzzeigerposition Hauptdatei sichern
- Transaktion beenden
- Query 1 bis x wieder öffnen
- (Transaktion wird ja automatisch gestartet)
- Datensatzzeigerposition Hauptdatei wiederherstellen
- Daten anzeigen // das musste sowieso passieren
Im Einzelplatzbetrieb eventuell möglich, aber vom Ansatz her schon mal grundfalsch.
af0815 hat geschrieben: So 5. Mär 2023, 16:43
Da hat kein Fenster was damit zu tun, sondern nur die zuständige Query. Ob die jetzt in einem anderen Fenster liegt oder Datenmodul ist komplett egal, du musst die Logik ja wo unterbringen und dir den entsprechen Zugriffsweg schaffen. Das hast du ja, sonst könnte kein Benutzer mit den Daten was machen.
Fenster in dem Sinne, das ich in jedem Fenster eine eigene Connection/Transaction habe, um die Daten voneinander abzuschotten.
af0815 hat geschrieben: So 5. Mär 2023, 16:43
Wie gesagt, die Logik aus früheren Zeiten hat weiterhin Bestand .
Nur wie? Ist mein Problem jetzt Lazarus, Freepascal oder Firebird-spezifisch?
Zu den Versuchen, mit den Optionen zu testen erstelle ich einen neuen Post.