Fehler beim Anzeigen von Formular in einer Datenbank

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

Moderator: Moderatoren

Pretender1970
**
Beiträge: 28
Registriert: Fr, 05.01.2018 08:38

Fehler beim Anzeigen von Formular in einer Datenbank

Beitrag von Pretender1970 »

Hallo Zusammen,

ich habe einen Datenbank die mit bestimmten Formularen ausgestattet ist. Jedes Formular wird durch
eine Makro angesteuert. Alles klappt wunderbar, oder besser gesagt hat geklappt. Und das seit 4 Jahren.
Die Datenbank ist mittlerweile auf über 10 000 Einträge gewachsen. Seit 2 Wochen macht die Datenbank
nicht mehr das was sie soll.
Beispiel: auf dem Startformular kann man mittels Button auf das nächste Formular springen, um dann Eintragungen
vornehmen zu können. Durch den Button verschwindet das Startformular und es öffnet sich das nächste Formular.
Das ist alles so gewollt.

Nur jetzt springt er entweder nicht auf das Formular oder beim zurück klicken auf den Startbutton öffnet sich nicht
das Startformular. Zum veranschaulichen hier die entsprechenden Makros.

1. Öffnen der Datenbank:

Sub start
oDatenquelle = ThisDatabaseDocument.CurrentController
If NOT (oDatenquelle.isConnected()) THEN
oDatenquelle.connect()
END IF
oVerbindung=oDatenquelle.ActiveConnection()
oHauptform=ThisDatabaseDocument.FormDocuments.getByName("Hauptformular")
oHauptform.open
end Sub

2. Wechseln zur Dateneingabe (nächstes Formular)

SUB Zu_Formular_von_Formular(oEvent AS OBJECT)
DIM stTag AS String
stTag = oEvent.Source.Model.Tag
aForm() = Split(stTag, ",")

IF Ubound(aForm()) > 0 THEN
ThisDatabaseDocument.FormDocuments.getByName( Trim(aForm(1)) ).open
END IF
ThisDatabaseDocument.FormDocuments.getByName( Trim(aForm(0)) ).close

END SUB

Seht ihr vielleicht einen Fehler oder liegt das an einem Update mit Libre Office zusammen?

Gruß Marc
Hiker
******
Beiträge: 590
Registriert: Mo, 08.09.2014 21:34
Wohnort: Berlin

Re: Fehler beim Anzeigen von Formular in einer Datenbank

Beitrag von Hiker »

Wenn es einfach nur nichts tut, würde ich erstmal prüfen, ob Macros überhaupt ausgeführt werden...

MfG, Jörn
Libre Office 6.3.1 (Win 10 Pro) / Libre Office 6.0.7 (Win8.1 Pro, Win 7 Pro) / AOO (Win 7)
Pretender1970
**
Beiträge: 28
Registriert: Fr, 05.01.2018 08:38

Re: Fehler beim Anzeigen von Formular in einer Datenbank

Beitrag von Pretender1970 »

Guten Morgen,

die Makros werden ausgeführt. Beim öffnen der Datenbank frägt er nach, ob Diese aktiviert werden sollen oder nicht.

gruß Marc
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Fehler beim Anzeigen von Formular in einer Datenbank

Beitrag von Stephan »

die Makros werden ausgeführt. Beim öffnen der Datenbank frägt er nach, ob Diese aktiviert werden sollen oder nicht.
Letzteres sagt doch nichts darüber ob die Makros ausgeführt werden, sondern nur das sie ausgeführt werden können (sofern Du beim Erscheinen des Dialogs zustimmst).

Um zu Prüfen ob ein makro ausgeführt wird schreibne z.B. eine MsgBox-Anweisung an den Anfang des Makros und kontrolliere ob die Msgbox angezeigt wird:

Code: Alles auswählen

Sub start
Msgbox "Makro wurde gestartet"

oDatenquelle = ThisDatabaseDocument.CurrentController
If NOT (oDatenquelle.isConnected()) THEN
oDatenquelle.connect()
END IF
oVerbindung=oDatenquelle.ActiveConnection()
oHauptform=ThisDatabaseDocument.FormDocuments.getByName("Hauptformular")
oHauptform.open
end Sub 

Gruß
Stephan
Pretender1970
**
Beiträge: 28
Registriert: Fr, 05.01.2018 08:38

Re: Fehler beim Anzeigen von Formular in einer Datenbank

Beitrag von Pretender1970 »

Hallo Stephan,

deine Hilfe habe ich eingebaut und die Makros werden jeweils gestartet. Liegt da ein Problem,
bei dem Code unten, dass er vielleicht im Hintergrund nicht mehr zum richtigen Dokument hin und
her switschen kann?

gruß marc

SUB Zu_Formular_von_Formular(oEvent AS OBJECT)
DIM stTag AS String
stTag = oEvent.Source.Model.Tag
aForm() = Split(stTag, ",")

IF Ubound(aForm()) > 0 THEN
ThisDatabaseDocument.FormDocuments.getByName( Trim(aForm(1)) ).open
END IF
ThisDatabaseDocument.FormDocuments.getByName( Trim(aForm(0)) ).close
End Sub
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Fehler beim Anzeigen von Formular in einer Datenbank

Beitrag von Stephan »

Liegt da ein Problem,
bei dem Code unten, dass er vielleicht im Hintergrund nicht mehr zum richtigen Dokument hin und
her switschen kann?
Das solltest Du uns sagen können indem Du den Code debugst.

Fange z.B. so an das Du Dir den WErte von AForm() anzeigen lässt und schaust ob Diese richtig sind:

Code: Alles auswählen

SUB Zu_Formular_von_Formular(oEvent AS OBJECT)
DIM stTag AS String
stTag = oEvent.Source.Model.Tag
aForm() = Split(stTag, ",")
Msgbox aForm(0) & CHR(13) & aForm(1)

IF Ubound(aForm()) > 0 THEN
ThisDatabaseDocument.FormDocuments.getByName( Trim(aForm(1)) ).open
END IF
ThisDatabaseDocument.FormDocuments.getByName( Trim(aForm(0)) ).close
End Sub
Gruß
Stephan
Antworten