Zuletzt bearbeitet von %Benutzer% am %Datum% im Forumular

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

sschultewolter
*
Beiträge: 18
Registriert: Mi, 24.10.2012 19:03

Zuletzt bearbeitet von %Benutzer% am %Datum% im Forumular

Beitrag von sschultewolter »

Hallo,

ich habe ein Frontend für MySQL mit OO Base seit längerem realisiert. Nun arbeitet damit mehr als 1 Person. In der Regel ist es so, dass keine Daten verändert werden. Nun gibt es aber immer mal wieder Gründe, das ganze etwas zu verändern.

Nun suche ich nach einer Funktion, die beim Speichern eines Datensatzes das aktuelle Datum und den Benutzer setzt. Ich habe derzeit schon 2..3 Makros im Einsatz, die einen Pfad benutzdefinierten Pfad öffnen, sobald eine Aktion auf dem Button erfolgt.

Wie mache ich das nun am besten mit dem Datum? Der Benutzername kann im Makro festhinterlegt sein.


---

Ein Versuch:

Code: Alles auswählen

SUB save
fd_EDIT_USER.Text = "Stefan"
END SUB
aufzurufen, wenn das Ereignis "Vor dem Submit" erfolgt. Scheint aber nicht das richtige zu sein.
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Zuletzt bearbeitet von %Benutzer% am %Datum% im Forumular

Beitrag von F3K Total »

Hi,
ich kenne mich mit MySQL nicht aus, habe deswegen eben kurz gegoogelt.
Die Aufgabe läßt sich am einfachsten innerhalb der MySQL-Datenbank mit einem Trigger, siehe z.B. hier, lösen.
Gruß R
sschultewolter
*
Beiträge: 18
Registriert: Mi, 24.10.2012 19:03

Re: Zuletzt bearbeitet von %Benutzer% am %Datum% im Forumular

Beitrag von sschultewolter »

Also dass der Name bei einem Ereignis eingetragen wird, habe ich mit einem Makro geschafft, nur finde ich kein passendes Ereignis für diese Aktion. Hatte gedacht, es würde mit dem Ereignis "Vor Datensatzaktion" klappen, jedoch ist hier das Problem, dass wenn ich die Datensätze durchklicke, dieses jedes Mal ausgeführt wird :(
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Zuletzt bearbeitet von %Benutzer% am %Datum% im Forumular

Beitrag von RobertG »

Hallo sschultewolter,

mit dem Datum dürftest Du keine Probleme haben, wenn Du das direkt in der Tabellenerstellung von MySQL löst:

Code: Alles auswählen

... `Updatedatum` DATE NULL DEFAULT NULL ON UPDATE CURRENT_DATE() ....
Das geht natürlich auch mit einem Timestamp.

Und wenn die Datenbankanmeldung nicht über die Zugangsdaten nur eines Nutzer erfolgt:

Code: Alles auswählen

... `Updateuser` VARCHAR(50) NULL DEFAULT NULL ON UPDATE CURRENT_USER() ....
Wenn ich Deinen Makrocode sehe, dann habe ich die Vermutung, dass dort nur der Text auf der Benutzeroberfläche geändert wird, aber keine Abspeicherung erfolgt.

Mit

Code: Alles auswählen

SUB save(oEvent AS OBJECT)
	oForm = oEvent.Source.Model
	oForm.updateString(oForm.findColumn("fd_EDIT_USER"),"Stefan")
END SUB
gebunden an die Datensatzaktion dürftest Du mehr Erfolg haben. Dann wird auch etwas geschrieben. Es geht auch

Code: Alles auswählen

SUB save(oEvent AS OBJECT)
	oForm = oEvent.Source.Model
	oFeld = oForm.getByName("fd_EDIT_USER")
	oFeld.BoundField.updateString("Stefan")
END SUB
Je nachdem, wie Dein Feld im Formular bzw. in der Tabelle heißt.
Bei der Datensatzaktion solltest Du den folgenden Hinweis aus dem Handbuch vielleicht beachten:
Datensatzaktion: Dies ist z. B. das Abspeichern mittels Button. Im Test ergibt sich, dass die Aktion Vor der Datensatzaktion regelmäßig doppelt erscheint, d. h. Makros werden direkt nacheinander zweimal abgearbeitet. Dies liegt daran, dass hier unterschiedliche Funktionen (Implementationen) ausgeführt werden. Beide sind mit Namen versehen: org.openoffice.comp.svx.FormController und com.sun.star.comp.forms.ODatabaseForm. Wenn innerhalb des Makros mit oForm.ImplementationName der entsprechende Name abgefragt wird, so kann das Makro auf eine Ausführung begrenzt werden.
Gruß

Robert
sschultewolter
*
Beiträge: 18
Registriert: Mi, 24.10.2012 19:03

Re: Zuletzt bearbeitet von %Benutzer% am %Datum% im Forumular

Beitrag von sschultewolter »

Habe es heut Nacht noch hinbekommen.
tr.PNG
tr.PNG (21.93 KiB) 3416 mal betrachtet
tr.PNG
tr.PNG (21.93 KiB) 3416 mal betrachtet
Nun suche ich noch nach einer Möglichkeit, dass der Datensatz beim Wechsel in den nächsten Datensatz nicht automatisch gespeichert wird.
Müsste dazu für das Ereignis "Vor dem Datensatzwechsel" eine Abfrage reinbekommen,

1) Wenn nichts geändert wurde, schalte zum nächsten Datensatz
2) Wenn etwas geändert wurde, Abfrage über MsgBox, ob Datensatz gespeichert werden soll. (Entscheidung Ja oder Nein). Danach zum nächsten Datensatz
Dateianhänge
t.PNG
t.PNG (3.09 KiB) 3416 mal betrachtet
Antworten