Seite 1 von 1

auslösendes Ereignis ermitteln

Verfasst: Do, 17.06.2010 15:03
von oliver1804
Hallo,

in Formularen binde ich häufig ein Makro an das Ereignis "Vor der Datensatzaktion". Wie ist es innerhalb des aufgerufenen Makros möglich, das auslösende Ereignis zu bestimmen?

Danke für Tipps
Oliver

Re: auslösendes Ereignis ermitteln

Verfasst: Fr, 18.06.2010 11:03
von marcel_at_work
Hallo Oliver,

ich steh´grad irgendwie auf dem Schlauch... ;-) was hast du denn genau vor?

Lg, Marci

Re: auslösendes Ereignis ermitteln

Verfasst: Fr, 18.06.2010 11:37
von oliver1804
Moin Marcel,

Danke, daß Du mir klarmachst, daß ich mich da nicht verständlich ausgedrückt hab - ist manchmal nicht so einfach für mich, die eigenen Probleme verständlich rüberzubringen, wenn ich "mitten im Thema bin". Also:

Basic-Info:
-----------
Ich habe eine sqlite-Datenbank und verwende OOo Base 3.2.1 als Frontend. Die Datenbank ist für meine Verhältnisse sehr umfangreich (30Tabellen davon 14 zum Loggen) und ich möchte grade im Basic-Code, um den ich nicht herumkomme, wenn ich sinnvolle Benutzerschnittstellen per Formular schaffen will, möglichst nur das tun, was notwendig ist; der Gedanke heißt: Vermeidung statt Verwirrung. Da ich nicht der tolle Programmier-Hecht bin ;-) geht's leider nur sehr langsam.

(momentanes) Problem:
---------------------------
In die Tabellen, die keine Logging-Tabellen sind (Logging-Tabellen haben immer den Namensanfang xlog_), schreibe ich bei jedem UPDATE und INSERT aus einer Variablen (die bereits gefüllt ist) in ein immer gleich lautendes Feld (id_staff_editor) die ID desjenigen, der ein INSERT/UPDATE durchgeführt hat. Wenn ein Datensatz gelöscht wird, erfolgt zunächst ein UPDATE des aktuellen Datensatzes (id_staff_editor), damit klar ist, wer die Löschung vorgenommen hat und erst im 2. Schritt das Löschen des Datensatzes. Die notwendigen Makros habe ich an die Formular-Eigenschaften-Ereignisse "Vor der Datensatzaktion" und "Löschen bestätigen" gebunden. Da ich das bei etlichen Formularen machen müßte, möchte ich das gerne vermeiden und das per Listener/Handler realisieren. Ich hab mir schon einen Teil zurecht-/abgetippt, aber dieses Konzept will mir nicht so recht in den Sinn!

Code: Alles auswählen

Global myInsUpdListener


Sub AddInsUpdListener()
   oForm = ThisComponent.drawpage.forms.getByName("MainForm")
   myInsUpdListener = CreateUnoListener("InsUpdListener_","com.sun.star.sdb.XRowSetApproveListener")
   oForm.addRowSetApproveListener(myInsUpdListener)
End Sub


Sub RemoveInsUpdListener
  oForm.removeRowSetApproveListener(myInsUpdListener)
End Sub


Sub InsUpdListener_disposing(oEvent)
End Sub
Hilfe nehme ich dankbar an

Gruß
Oliver

Re: auslösendes Ereignis ermitteln

Verfasst: Fr, 18.06.2010 12:23
von marcel_at_work
Hi Oliver,

mit dem Listener kenn ich mich leider GAR ned aus. Ich würde deine Formular-Funktion auch nur über eine Sub realisieren und diese dann mit jedem Button "Speichern" verbinden.

Lg, Marci