Il est possible de faire quelque chose de similaire dans LibreOffice Calc, mais au lieu de configurer la connexion à la base de données avec différents menus, tout est fait avec du code macro.
Ce qui suit a fonctionné pour moi en utilisant ce Procédure stockée 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
Le code est adapté de https://forum.openoffice. org/fr/forum/viewtopic.php?f=21&t=41149 .
Pour terminer le code, modifiez-le pour mettre les résultats dans la feuille de calcul au lieu de les afficher dans une boîte de message. Lisez également la valeur sélectionnée dans la liste déroulante au lieu de coder en dur la valeur de sFormat
.
Remarque :certaines informations en ligne suggèrent d'utiliser un fichier .odb intermédiaire. Cela impliquerait plus de menus plutôt que de tout faire dans la macro. Cela fonctionne pour les tables et les requêtes mais apparemment pas pour les procédures stockées, sauf peut-être avec HSQLDB comme mentionné ici .