Seite 1 von 1

Re: Variablen über Programmstart hinaus definieren

Verfasst: Mi 5. Jun 2019, 16:23
von RobertG
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