auslösendes Ereignis ermitteln

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

oliver1804
**
Beiträge: 39
Registriert: Fr, 27.11.2009 15:07

auslösendes Ereignis ermitteln

Beitrag 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
marcel_at_work
****
Beiträge: 195
Registriert: Sa, 24.04.2010 15:51
Wohnort: Basel [CH]

Re: auslösendes Ereignis ermitteln

Beitrag von marcel_at_work »

Hallo Oliver,

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

Lg, Marci
[Win 10 Pro x64/Downgrade 7, AOO 4.1.6 und LO 6.3.0.4]
oliver1804
**
Beiträge: 39
Registriert: Fr, 27.11.2009 15:07

Re: auslösendes Ereignis ermitteln

Beitrag 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
marcel_at_work
****
Beiträge: 195
Registriert: Sa, 24.04.2010 15:51
Wohnort: Basel [CH]

Re: auslösendes Ereignis ermitteln

Beitrag 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
[Win 10 Pro x64/Downgrade 7, AOO 4.1.6 und LO 6.3.0.4]
Antworten