Có thể làm điều gì đó tương tự trong LibreOffice Calc, nhưng thay vì thiết lập kết nối cơ sở dữ liệu với các menu khác nhau, mọi thứ được thực hiện bằng mã macro.
Cách sau phù hợp với tôi khi sử dụng cái này Quy trình lưu trữ 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
Mã này được điều chỉnh từ https://forum.openoffice. org / en / forum / viewtopic.php? f =21 &t =41149 .
Để hoàn thành mã, hãy sửa đổi mã để đưa kết quả vào bảng tính thay vì hiển thị chúng trong hộp thông báo. Đồng thời đọc giá trị đã chọn từ hộp thả xuống thay vì mã hóa cứng giá trị của sFormat
.
Lưu ý:Một số thông tin trực tuyến đề xuất sử dụng tệp .odb trung gian. Điều đó sẽ liên quan đến nhiều menu hơn là thực hiện mọi thứ trong macro. Điều này hoạt động cho các bảng và truy vấn nhưng dường như không cho các thủ tục được lưu trữ, trừ khi có lẽ với HSQLDB như đã đề cập tại đây .