PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

LibreOffice Calc esegue una funzione PostgreSQL

È possibile fare qualcosa di simile in LibreOffice Calc, ma invece di impostare la connessione al database con vari menu, tutto viene fatto con codice macro.

Quanto segue ha funzionato per me utilizzando questo Procedura memorizzata MySQL :

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

Il codice è adattato da https://forum.openoffice. org/en/forum/viewtopic.php?f=21&t=41149 .

Per completare il codice, modificalo per inserire i risultati nel foglio di calcolo invece di visualizzarli in una finestra di messaggio. Leggi anche il valore selezionato dalla casella a discesa invece di codificare il valore di sFormat .

Nota:alcune informazioni online suggeriscono di utilizzare un file .odb intermedio. Ciò comporterebbe più menu piuttosto che fare tutto nella macro. Funziona per tabelle e query ma apparentemente non per stored procedure, a meno che forse con HSQLDB come menzionato qui .