Re: Variablen über Programmstart hinaus definieren
Verfasst: 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:
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
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
Gruß
Robert