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
Am 30.06.19 um 10:12 schrieb Robert Großkopf:
Hallo gerhard,
Das Beispiel funktioniert (leider) bei Windows und Linux, wie ich
inzwischen feststellen musste.
Bei der "fehlerbehafteten" Base-Anwendung vollzieht sich das Ausblenden
nur auf der Startseite, aber nicht im Dokument (obwohl das Dokument per
Makro angesprochen wird und nicht die Startseite). Vielleicht hat es
damit zu tun, dass diese Base-Anwendung eine mysql-Datenbank auf einen
Server aufruft. Da dauert das Laden naturgemäß länger. Vielleicht liegt
es daran.
Wie lädst Du denn die MySQL-Datenbank? Auch vorher per Makro ohne
Nutzereingabe des Passwortes?
Gruß
Robert
--
Liste abmelden mit E-Mail an: users+unsubscribe@de.libreoffice.org
Probleme? https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.