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. 🤗

Variablen über Programmstart hinaus definieren

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Variablen über Programmstart hinaus definieren

Beitrag von RobertG » Mi 5. Jun 2019, 16:23

Hallo Theophilus,

würde ich auch mit der Tabelle machen. Weißt Du jetzt nicht, wie Du aus einer Tabelle einen Wert mit Makro ausliest? Dann klappt das Folgende:

Code: Alles auswählen

SUB Startvariable
DIM oDatasource AS OBJECT
DIM oConnection AS OBJECT
DIM oSQL_Statement AS OBJECT
DIM stSql AS STRING
DIM oResult AS OBJECT
oDatasource = thisDatabaseDocument.CurrentController
IF NOT (oDatasource.isConnected()) THEN oDatasource.connect()
oConnection = oDatasource.ActiveConnection()
oSQL_Statement = oConnection.createStatement()
stSql = "SELECT ""Var"" FROM ""Varspeicher"" WHERE ""ID"" = TRUE"
oResult = oSQL_Statement.executeQuery(stSql)
WHILE oResult.next
stGlobalVar = oResult.getString(1)
WEND
END SUB
Ich bin davon ausgegangen, dass die Tabelle "Varspeicher" einen Primärschlüssel "ID" als Ja/Nein-Feld hat, also maximal 2 Zeilen speichern kann. In der Zeile, in der das Feld "ID" angeklickt ist, wird der Wert der Variablen im Feld "Var" als Text gespeichert. Mit der WHILE - WEND-Schleife wird durch das Ergebnis der Abfrage gegangen. Diese Schleife benötigst Du eigentlich nicht, da nur ein Wert abgefragt wird. Es reicht, oResult.next und anschließend oResult.getString(1). Das Ergebnis der Abfrage wird in stGobalVar geschrieben. Das Makro sollte dann mit dem Start der Datenbankdatei gestartet werden, also mit "Ansicht wurde erzeugt" oder "Dokument öffnen" (einzige Möglichkeit bei aktuellen LO-Versionen und Base) unter Extras > Anpassen > Ereignisse verbinden.

Gruß

Robert
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