Date: prev next · Thread: first prev next last
2019 Archives by date, by thread · List index


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.