PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

LibreOffice Calc führt eine PostgreSQL-Funktion aus

Ähnliches ist in LibreOffice Calc möglich, aber anstatt die Datenbankverbindung mit diversen Menüs einzurichten, wird alles mit Makrocode erledigt.

Folgendes hat bei mir mit dies funktioniert Gespeicherte MySQL-Prozedur :

Sub RunStoredProc
    Dim oParms(1) as new com.sun.star.beans.PropertyValue 
    oParms(0).Name = "user" 
    oParms(0).Value = "root" 
    oParms(1).Name = "password" 
    oParms(1).Value = "password" 
    oManager = CreateUnoService("com.sun.star.sdbc.DriverManager")
    sURL = "sdbc:mysql:jdbc:localhost:3306/world"
    oConnection = oManager.getConnectionWithInfo(sURL, oParms())
    sFormat = "Europe"
    oStmt = oConnection.prepareCall("CALL country_hos(?)")
    oStmt.setString(1, sFormat)
    oResult = oStmt.executeQuery()
    sResult = ""
    If Not IsNull(oResult) Then
      While oResult.Next()
        sResult = sResult & oResult.getString(1) & CHR(10)
      Wend
    End If
    MsgBox "Result: " & sFormat & " = " & CHR(10) & sResult
    oStmt.close()
End Sub

Der Code ist angepasst von https://forum.openoffice. org/en/forum/viewtopic.php?f=21&t=41149 .

Um den Code fertigzustellen, ändern Sie ihn so, dass die Ergebnisse in die Tabelle eingefügt werden, anstatt sie in einem Meldungsfeld anzuzeigen. Lesen Sie auch den ausgewählten Wert aus dem Dropdown-Feld, anstatt den Wert von sFormat fest zu codieren .

Hinweis:Einige Online-Informationen schlagen vor, eine zwischengeschaltete .odb-Datei zu verwenden. Das würde mehr Menüs beinhalten, anstatt alles im Makro zu tun. Dies funktioniert für Tabellen und Abfragen, aber anscheinend nicht für gespeicherte Prozeduren, außer vielleicht mit HSQLDB, wie hier .