Hallo die Damen und die Herren,
ich würde mich über Anregungen zu folgender Problemstellung freuen: Ich programmiere eine Base-Anwendung, die auf eine mySQL-Datenbank zugreift. In einem umfangreichen Formular kann der Benutzer nun einen einzelnen Datensatz aufrufen und Änderungen eintippen. Am Ende kann er den Datensatz speichern (oder die Änderungen noch vor dem Speichern verwerfen).
Nun will ich eine Funktionalität hinzufügen, die - je nachdem, was geändert wurde - weitere Aktionen auslöst. Über oForm.isModified erfahre ich, ob es ÜBERHAUPT Änderungen gegeben hat. Aber wenn ja: Was wurde geändert?
Ansatz 1: Beim Aufruf des Datensatzes alle Datenfelder (Urzustand) in Variablen speichern, vor dem Update abgleichen. Möglich, aber unelegant.
Ansatz 2: Das aktuelle ResultSet oder RowSet (Urzustand) in eine Objektvariable speichern und vor dem Update abgleichen. Klingt schon eleganter, aber ich weiß leider nicht, wie ich das ResultSet "abspalten" kann. Es gibt ja keine Eigenschaft oForm.ResultSet oder so ...
Ansatz 3: Vor dem Update noch einmal mySQL abfragen, um den Urzustand zu erhalten und dann abgleichen.
Danke für Eingebungen und weitere Ansätze!
Wolli
[erledigt] Base-Formular: Was wurde geändert?
Moderator: Moderatoren
[erledigt] Base-Formular: Was wurde geändert?
Zuletzt geändert von wolli-j am Di, 23.04.2013 09:48, insgesamt 1-mal geändert.
Re: Base-Formular: Was wurde geändert?
Moin
Gruß R
Nö, aber es gibt z.B.wolli-j hat geschrieben:Es gibt ja keine Eigenschaft oForm.ResultSet oder so ...
Code: Alles auswählen
oresult = oform.createresultset
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
Re: Base-Formular: Was wurde geändert?
Hallo F3K, supertoll, vielen Dank. Leider habe ich aber Probleme mit der Anwendung: "oresult" ist kein "com.sun.star.sdb.OResultSet", sondern ein "com.sun.star.sdb.ORowSetClone" (Dokumentation??). Das würde mich ja nicht stören und wenn ich sofort nach der Zuweisung mit xray reinschaue, kann ich auch mit dem Klon alles machen und nachsehen. Wenn ich aber oresult später nochmal aufrufe, erhalte ich immer noch den Klon (bin ja ein Fuchs und habe eine globale Variable benutzt), aber es sind keine Daten mehr herauszuziehen und es gibt Fehlermeldungen.F3K Total hat geschrieben:Code: Alles auswählen
oresult = oform.createresultset
http://wiki.openoffice.org/wiki/Documen ... et_Service hat mir auch keine Erleuchtung gebracht. Ist es vielleicht so, dass der Klon eng vom Original abhängt? Kann ich irgendwie eine unabhängige Zuweisung machen?
Ideen?
Dank + Gruß, Wolli
Re: Base-Formular: Was wurde geändert?
Tja,
da hast Du wohl Recht. Wenn ich das Resultset mit dem ersten Makro in eine globale Variable einlese, dann xray, im Formular einen Datensatz zufüge, dann wieder xray, erhöht sich rowcount um eins, also ist das Set wohl abhängig von Formularinhalt.
Was genau willst du denn "merken"?
Gruß R
da hast Du wohl Recht. Wenn ich das Resultset mit dem ersten Makro in eine globale Variable einlese, dann xray, im Formular einen Datensatz zufüge, dann wieder xray, erhöht sich rowcount um eins, also ist das Set wohl abhängig von Formularinhalt.
Was genau willst du denn "merken"?
Gruß R
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
Re: Base-Formular: Was wurde geändert?
Habe nochmal drüber geschlafen und Deine Antwort bestärkt mich ... - ich werde wohl an jedes (relevante) Formularfeld ein Ereignismakro hängen, so dass ich die Änderungen "mitlogge". Es geht darum, dass Adressänderungen automatisch auf andere Datensätze übertragen werden, wenn der Benutzer es wünscht. Änderungen im Feld "Bemerkung" sind irrelevant, denn sie werden nie auf andere Sätze übertragen.
Meine Hoffnung zum ursprünglichen Ansatz war, statt so etwas wie zu machen, um beide unabhängig zu machen. Gääät nicht, laider.
Vielen Dank also nochmal, machen wir das Thema zu.
Wolli
Meine Hoffnung zum ursprünglichen Ansatz war, statt
Code: Alles auswählen
oresult = oform.createresultset
Code: Alles auswählen
oresult = byval(oform.createresultset)
Vielen Dank also nochmal, machen wir das Thema zu.
Wolli