Hal serupa dapat dilakukan di LibreOffice Calc, tetapi alih-alih menyiapkan koneksi database dengan berbagai menu, semuanya dilakukan dengan kode makro.
Berikut ini berfungsi untuk saya menggunakan ini Prosedur tersimpan 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
Kode ini diadaptasi dari https://forum.openoffice. org/en/forum/viewtopic.php?f=21&t=41149 .
Untuk menyelesaikan kode, modifikasi untuk memasukkan hasilnya ke dalam spreadsheet alih-alih menampilkannya di kotak pesan. Baca juga nilai yang dipilih dari kotak tarik-turun alih-alih melakukan hardcoding nilai sFormat
.
Catatan:Beberapa informasi online menyarankan untuk menggunakan file .odb perantara. Itu akan melibatkan lebih banyak menu daripada melakukan semuanya di makro. Ini berfungsi untuk tabel dan kueri tetapi tampaknya tidak untuk prosedur tersimpan, kecuali mungkin dengan HSQLDB seperti yang disebutkan di sini .