LibreOffice Calcでも同様のことが可能ですが、さまざまなメニューでデータベース接続を設定する代わりに、すべてがマクロコードで実行されます。
以下は、thisを使用して機能しました。 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
このコードは、https://forum.openofficeから引用したものです。 org / en / forum / viewtopic.php?f =21&t =41149 。
コードを完成させるには、メッセージボックスに表示するのではなく、結果をスプレッドシートに配置するようにコードを変更します。また、sFormat
の値をハードコーディングする代わりに、ドロップダウンボックスから選択した値を読み取ります。 。
注:オンラインの一部の情報では、中間の.odbファイルの使用が提案されています。これには、マクロですべてを実行するのではなく、より多くのメニューが含まれます。これはテーブルとクエリでは機能しますが、おそらくHSQLDBでここ 。