Het is mogelijk om iets soortgelijks te doen in LibreOffice Calc, maar in plaats van de databaseverbinding in te stellen met verschillende menu's, wordt alles gedaan met macrocode.
Het volgende werkte voor mij met behulp van dit MySQL opgeslagen procedure :
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
De code is aangepast van https://forum.openoffice. org/en/forum/viewtopic.php?f=21&t=41149 .
Om de code af te maken, wijzigt u deze om de resultaten in de spreadsheet te plaatsen in plaats van ze in een berichtvenster weer te geven. Lees ook de geselecteerde waarde uit de vervolgkeuzelijst in plaats van de waarde van sFormat
hard te coderen .
Opmerking:sommige online informatie suggereert het gebruik van een tussenliggend .odb-bestand. Dat zou meer menu's inhouden in plaats van alles in de macro te doen. Dit werkt voor tabellen en query's, maar blijkbaar niet voor opgeslagen procedures, tenzij misschien met HSQLDB zoals vermeld hier .