Es posible hacer algo similar en LibreOffice Calc, pero en lugar de configurar la conexión de la base de datos con varios menús, todo se hace con código macro.
Lo siguiente funcionó para mí usando esto Procedimiento almacenado de 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
El código está adaptado de https://forum.openoffice. org/en/forum/viewtopic.php?f=21&t=41149 .
Para finalizar el código, modifíquelo para colocar los resultados en la hoja de cálculo en lugar de mostrarlos en un cuadro de mensaje. Lea también el valor seleccionado del cuadro desplegable en lugar de codificar el valor de sFormat
.
Nota:Cierta información en línea sugiere usar un archivo .odb intermedio. Eso implicaría más menús en lugar de hacer todo en la macro. Esto funciona para tablas y consultas, pero aparentemente no para procedimientos almacenados, a menos que quizás con HSQLDB como se menciona aquí .