Hallo Robert,
die mysql-Datenbank wird per Makro geladen ohne Passworteingabe. Sie ist für mehrere Benutzer eingerichten ("für unser Kulturhaus"). Die Trennung der Nutzer erfolgt dabei gemäß Handbuch "Filter - CONNECTION_ID()"
Grüße
Gerhard
Option Explicit
GLOBAl user_GL as STRING
PUBLIC iBetriebssystem AS INTEGER
GLOBAL stBrief_GL AS STRING
GLOBAL Bildschirmgroesse_GL AS INTEGER
GLOBAL Druckgroesse_GL AS INTEGER
PUBLIC iMouseClick_GL AS INTEGER 'für Dialoge
rem ========== Startformular öffnen ==========
' Makro Start über Hauptdokument (erstes Dokument9 --> Dokument öffnen
SUB Startformular_oeffnen
CALL Tabelle_Filter_Connection_ID ' SUBroutine!
DIM oController
DIM oFILTER AS OBJECT
DIM oFrame AS OBJECT
oFrame = StarDesktop.getCurrentFrame()
oController = ThisDatabaseDocument.CurrentController
IF not ( oController.isConnected() ) THEN oController.connect() ' Connect to the database, if necessary
wait 3000
ThisDatabaseDocument.formdocuments.getbyname("pPerson").open
END SUB
SUB Tabelle_Filter_Connection_ID
'On Error GoTo ExErrorHandler
DIM oDatenquelle AS OBJECT
DIM oVerbindung AS OBJECT
DIM oSQL_Anweisung AS OBJECT
DIM oAbfrageergebnis AS OBJECT
DIM sSql AS STRING
DIM maxfilterid AS INTEGER
DIM connection_id AS INTEGER
DIM idaa AS INTEGER
DIM l_OS_Index AS INTEGER 'Betriebssystemabfrage
DIM s_OS AS STRING 'Betriebssystemabfrage
oDatenquelle = thisDatabaseDocument.CurrentController
IF NOT (oDatenquelle.isConnected()) THEN oDatenquelle.connect()
oVerbindung = oDatenquelle.ActiveConnection()
oSQL_Anweisung = oVerbindung.createStatement()
' -------- SQL-Befehle --------------------
' --- Löschen von Filter-Zeilen, die älter als 20 Tage sind
sSql = "DELETE FROM az.filter WHERE DATEDIFF( `datum`, CURDATE( ) ) < -20"
oSql_Anweisung.executeUpdate(sSql)
sSql = "SELECT min(idaa) FROM az.aaktenzeichen AS aaktenzeichen WHERE SIGN( DATEDIFF( a_datum, CURDATE( ) ) + 1 ) > 0 ORDER BY idaa ASC"
oAbfrageergebnis = oSQL_Anweisung.executeQuery(sSql)
WHILE oAbfrageergebnis.next
idaa = oAbfrageergebnis.getLong(1)
Wend
sSql = "DELETE FROM `filter` WHERE `connection_id` = CONNECTION_ID();"
oSql_Anweisung.executeUpdate(sSql)
' DEFINITIONEN . Hinweis: Auch gibt es Einträge in die Tabelle Filter -> Defaultwerte
sSql = "REPLACE INTO filter (fil_lb_info, of_udate_sign, fil_lb_anmeldung, connection_id, name, datum) VALUES( 0, 1,"+idaa+", CONNECTION_ID(), USER(), CURRENT_TIMESTAMP())"
oSQL_Anweisung.executeUpdate(sSql)
sSql = "SELECT SUBSTRING_INDEX( USER(), '@', 1)"
oAbfrageergebnis = oSQL_Anweisung.executeQuery(sSql)
WHILE oAbfrageergebnis.next
user_GL = oAbfrageergebnis.getString(1)
Wend
REM ---------------------------------- DEFINITIONEN
' Bildschimgröße und Druckgröße
IF user_GL = "GDi" THEN
Bildschirmgroesse_GL = 125
Druckgroesse_GL = 125
ELSEIF user_GL = "Syl" THEN
Bildschirmgroesse_GL = 120
Druckgroesse_GL = 95
ELSEIF user_GL = "JKu" THEN
Bildschirmgroesse_GL = 110
Druckgroesse_GL = 95
ELSE
print "User für Bildschirmgröße nicht festgelegt --> Makro start"
END IF
stDateiaufruf_3_GL = "/KULTUR" ' gilt für alle! Ausnahmen dann bei den einzelnen Nutzern, z.B. GMi (siehe unten)
stBrief_GL = user_GL
IF user_GL = "GTe" THEN
stBrief_GL = "GDi"
ELSEIF user_GL = "LapVM" THEN
stBrief_GL = "LapVM"
ELSEIF user_GL = "SGr" THEN
stDateiaufruf_3_GL = "/Daten/KULTUR"
END IF
' Betriebssystem anhand des verwendeten Fenster-Managers ermitteln
l_OS_Index = GetGUIType()
Select Case l_OS_Index
rem ------------------------------------------------- DEFINITIONEN
Case 1
' Kennung für dieTask: 0
iBetriebssystem = 0
Case 3
s_OS = "MacOS (in dieTask nicht definiert)" ' nicht definiert
msgbox "Diese LibreOffice.org läuft unter: " & s_OS , "OOo Makro: Betriebssystem ermitteln"
Case 4
' Kennung für dieTask: 1
iBetriebssystem = 1
Case ELSE
s_OS = "unbekannter Rückgabewert für Betriebssystem"
msgbox "Diese LibreOffice.org läuft unter: " & s_OS , "Makro-Einträge"
END Select
Exit SUB
'ExErrorHandler:
' MsgBox("Die Datenbank konnte nicht verbunden werden! Sie wird geschlossen."+CHR$(13)+"Bitte 'dieTask' neu starten!", 48 + 0, "Info!")
' ThisDatabaseDocument.Close(True)
END SUB
SUB PCName
DIM stPC1 AS STRING
DIM stPC2 AS STRING
stPC1 = Environ("HOME") 'HOME (Windows leer)
MsgBox "'" & stPC1 & "'" ,64,"Computername 1:"
stPC2 = Environ("USER") '(Windows leer)
MsgBox "'" & stPC2 & "'" ,64,"Computername 2:"
END Sub