È 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 .