BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

[GELÖST]: Direktstart Formular funktioniert nicht mehr nach schließen LO

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Titus001
Beiträge: 10
Registriert: Di 1. Nov 2022, 10:12

[GELÖST]: Direktstart Formular funktioniert nicht mehr nach schließen LO

Beitrag von Titus001 » Di 1. Nov 2022, 10:39

Hallo Zusammen,

vielleicht hat jemand eine Lösung bei folgendem Problem:

Habe den Direktstart mit Dokument öffnen verbunden:

SUB Formular_Direktstart
REM Start des ausgewählten Formular beim Öffnen der DB
DIM oDatenquelle AS Object
oDatenquelle = ThisDatabaseDocument.CurrentController
If NOT (oDatenquelle.isConnected()) THEN
oDatenquelle.connect()
END IF
Wait 1000
oDatenquelle.loadComponent(com.sun.star.sdb.application.DatabaseObject.FORM, "frm_Startseite", FALSE)
End Sub


Das funktioniert auch wenn ich die DB öffne und schließe ohne Probleme (mehrfach probiert)
Wenn ich allerdings LO schließe und die DB dann aus dem Explorer erneut öffne bleibt das Makro bei
oDatenquelle.loadComponent(com.sun.star.sdb.application.DatabaseObject.FORM, "frm_Startseite", FALSE)
hängen (Habe deshalb temporär das Wait eingebaut)

Bin dankbar für jeden Hinweis.

Gruß
Zuletzt geändert von Titus001 am Sa 10. Dez 2022, 16:26, insgesamt 1-mal geändert.

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Direktstart Formular funktioniert nicht mehr nach schließen LO

Beitrag von RobertG » Mi 2. Nov 2022, 21:15

Hallo Titus001,

ich würde das einfach über

Code: Alles auswählen

SUB FormOpen
     ThisDatabaseDocument.FormDocuments.getByName("frm_Startseite").open
END SUB
lösen. Das Ganze an Extras → Anpassen → Ansicht wurde erzeugt des Datenbankdokuments binden und die Öffnung läuft problemlos. Die Verknüpfungen von Makro und auslösendem Ereignis musst Du auch gegebenenfalls testen. Manchmal funktioniert auch → Dokument öffnen.
Wenn ich allerdings LO schließe und die DB dann aus dem Explorer erneut öffne …
Hier meinst Du wohl ein Öffnen direkt aus der Windows-Benutzeroberfläche ohne den Start des Startmoduls von LibreOffice, oder? Da kann ich unter Linux nichts zu sagen.
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Titus001
Beiträge: 10
Registriert: Di 1. Nov 2022, 10:12

Re: Direktstart Formular funktioniert nicht mehr nach schließen LO

Beitrag von Titus001 » Do 3. Nov 2022, 08:35

Hallo Robert,

danke für die Rückmeldung.

Wenn ich den Code an "Ansicht erzeugen" binde passiert gar nichts.
Ohne die Datenquelle zu verbinden und an "Dokument öffnen" gibt es die folgende Fehlermeldung:

BASIC-Laufzeitfehler.
Es ist eine Ausnahme aufgetreten
Type: com.sun.star.lang.WrappedTargetException
Message:
TargetException:
Type: com.sun.star.sdbc.SQLException
Message: [OOoBase] Es besteht keine Verbindung zur Datenbank..

Ich habe sowohl versucht das Makro in der Dokumentenbibliothek als auch in der LibreOfficeBibliothek zu sichern und
beim Start der DB zu aktivieren. Irgendwie schaffe ich es nicht in der Startsequenz die Verbindung zu DB zu erreichen.
Registriert ist ist die DB - ist also nicht das Problem.

Ich fahre übrigen auf MAC OS 11.7.1 nicht Windows.

Für jeden Typ dankbar :?

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Direktstart Formular funktioniert nicht mehr nach schließen LO

Beitrag von RobertG » Do 3. Nov 2022, 09:48

Wenn ich den Code an "Ansicht erzeugen" binde passiert gar nichts.
… müsste "Ansicht erzeugt" heißen - die Ansicht ist dann da.
Das sind so die üblichen Merkwürdigkeiten. Ich habe das hier in einer Prozedur, die vorher die Datenbankdatei als Sicherungskopie hinterlegt und dann erst das Formular startet. Dabei ist aber kein weiterer Kontakt zur Datenbank erstellt.
Müsste

Dann doch wohl besser erst den Kontakt zur Datenbank erstellen, wie Du das gemacht hast:

Code: Alles auswählen

SUB FormOpen
oDatenquelle = ThisDatabaseDocument.CurrentController
If NOT (oDatenquelle.isConnected()) THEN oDatenquelle.connect()
ThisDatabaseDocument.FormDocuments.getByName("frm_Startseite").open
END SUB
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Titus001
Beiträge: 10
Registriert: Di 1. Nov 2022, 10:12

Re: Direktstart Formular funktioniert nicht mehr nach schließen LO

Beitrag von Titus001 » Do 3. Nov 2022, 11:18

… müsste "Ansicht erzeugt" heißen - die Ansicht ist dann da.
ja richtig "Ansicht wurde erzeugt" - meinte ich auch.

Aber auch mit Kontakt zur Datenbank erzeugt
f NOT (oDatenquelle.isConnected()) THEN oDatenquelle.connect()
passiert bei der Anbindung an "Ansicht wurde erzeugt" gar nichts :?

Wo ist den deiner Erfahrung nach das Ereignis zu sichern?
In der Bibliothek der DB oder in der von LibreOffice (MeineMakros)

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Direktstart Formular funktioniert nicht mehr nach schließen LO

Beitrag von RobertG » Do 3. Nov 2022, 12:22

Wo ist den deiner Erfahrung nach das Ereignis zu sichern?
In der Bibliothek der DB oder in der von LibreOffice (MeineMakros)
Ich sichere grundsätzlich alle Makros in der Datenbankdatei. Das mache ich schon allein deswegen, weil ich Datenbanken auch an andere Personen weiter gebe und die dort genauso funktionieren sollen wie bei mir.

Wenn Du sonst mit so etwas wie "ThisComponent", "ThisDatabaseDocument" und ähnlichem arbeitest kann das zu Problemen führen. Da ist dann eine sichere Verbindung nur so möglich:

Code: Alles auswählen

DIM oDatabaseContext AS OBJECT
DIM oDatasource AS OBJECT
DIM oConnection AS OBJECT
oDatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
oDatasource = oDatabaseContext.getByName("angemeldeter Name der Datenbank in LO")
oConnection = oDatasource.GetConnection("","")
Habe ich alles im Handbuch gesammelt.
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Titus001
Beiträge: 10
Registriert: Di 1. Nov 2022, 10:12

Re: Direktstart Formular funktioniert nicht mehr nach schließen LO

Beitrag von Titus001 » Do 3. Nov 2022, 14:58

Habe ich alles im Handbuch gesammelt.
Da habe ich doch alle Versuche und Infos her
Und bisher hat auch alles super geklappt :D
Ausblenden der Steuerelemente etc.

Nur jetzt hänge ich fest :oops:

eine sichere Verbindung nur so möglich:
Habe ich auch so im Mako eingebaut:

Code: Alles auswählen

SUB Formular_Direktstart

REM Start des ausgewählten Formular beim Öffnen der DB
DIM oDBContext AS OBJECT
DIM oDataSource AS OBJECT
DIM oConnectToDB AS OBJECT
DIM oDatenquelle AS OBJECT


oDBContext=createUnoService("com.sun.star.sdb.DatabaseContext")
oDataSource=oDBContext.getByName("NeueTurnierDB")
oConnectToDB=oDataSource.GetConnection ("","")

oDatenquelle = ThisDatabaseDocument.CurrentController

If NOT (oDatenquelle.isConnected()) THEN
oDatenquelle.connect()
END IF

ThisDatabaseDocument.FormDocuments.getByName("frm_Startseite").open

REM alternativ geht auch:
REM oDatenquelle.loadComponent(com.sun.star.sdb.application.DatabaseObject.FORM,"frm_Startseite", FALSE)

End Sub
Das Makro ist mit "Dokument öffnen" in der Datenbank gesichert.
Alles wir gehabt: es funktioniert super solange LO nicht geschlossen wird. Ich kann die DB (bei aktivierten LO) starten und es geht direkt in das Startformular. Kann die DB schließen und beim erneuten öffnen alles super.
Beende ich LO und starte es erneut hängt sich das Makro beim Laden des Formulars auf.

Hatte gehofft jemand hatte mal das gleiche Problem und eine Lösung gefunden.

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Direktstart Formular funktioniert nicht mehr nach schließen LO

Beitrag von RobertG » Do 3. Nov 2022, 15:32

Zum Schluss hin hast Du alles mögliche doppelt und dreifach in Deinem Makro.

Wo liegen denn nun die Makros? Alle Makros im Handbuch liegen in der Datenbankdatei, sofern da nicht ausdrücklich etwas anderes steht (wie z.B. das Starten eines Berichtes von einem externen Formular).

Lade Doch einmal eine kleine Beispieldatei hoch, bei der das bei Dir nicht klappt. Die braucht ja gerade einmal eine Tabelle ohne Inhalt, ein Formular dazu und das entsprechende Makro.
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Titus001
Beiträge: 10
Registriert: Di 1. Nov 2022, 10:12

Re: Direktstart Formular funktioniert nicht mehr nach schließen LO

Beitrag von Titus001 » Do 3. Nov 2022, 18:42

Hallo Robert,

ich habe mal die DB auf das Problem reduziert. Konnte die .odb nicht hochladen, deswegen .zip

Wenn du die DB mit Makro Startes bleibt sie hängen. Vielleicht findest du ja einen Grund.
Danke für deinen Bemühungen.
NeueTurnierDB.odb.zip
(200.75 KiB) 75-mal heruntergeladen

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Direktstart Formular funktioniert nicht mehr nach schließen LO

Beitrag von RobertG » Do 3. Nov 2022, 20:50

Hallo Titus,

ich habe das jetzt auf

Code: Alles auswählen

SUB Formular_Direktstart
oDatenquelle = ThisDatabaseDocument.CurrentController
If NOT (oDatenquelle.isConnected()) THEN
oDatenquelle.connect()
END IF
ThisDatabaseDocument.FormDocuments.getByName("frm_Startseite").open
END SUB
beschränkt, da das Makro ja in der Datenbankdatei liegt. Unter LO 7.3.6.2 startet alles einwandfrei und auch das Formular startet. Unter LO 7.4.2.3 startet das Ganze beim ersten Durchlauf einwandfrei. Beim 2. Durchlauf wird aber das Formulare nicht geöffnet. Ich habe ähnliches schon einmal gesehen. Da muss ich ein einfaches Beispiel nachbauen und einen Bug für ausgeben.
Auch der Start mit "Ansicht wurde erzeugt" läuft einwandfrei - bis auf die Wiederholung bei LO 7.4.2.3. Da startet nicht einmal das Makro sondern nur die Fehlermeldung. Habe das als https://bugs.documentfoundation.org/sho ... ?id=151879 gemeldet.
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten