The new table does not exist, but the database has been changed and needs to be saved. And View>Refresh Tables menu
does not work. What should be added more ?
Sub CreateTableFruit
Dim sFileName$, sPath$, dbf$, sSQL$
Dim db, oStatement, oRowSet As Object
sPath = Environ("HOME") & "/" & "Documents/LibreOfficeAskLO/0023_CreateATableInFirebirdViaSQL" & GetPathSeparator()
sFileName = "firebird1.odb"
On Local Error GoTo CloseConnection
dbf = "file://" & sPath & sFileName
db = ConnectDatabase(dbf)
oStatement = db.createStatement()
sSQL = "CREATE TABLE " & """TableFruit""" & " (" & """FruitCode""" & " VARCHAR(5) " & "PRIMARY KEY" & ", " & """FruitName""" & " VARCHAR(255)" & ")"
oStatement.executeQuery(sSQL)
' db.getTables().refresh()
RefreshTables(dbf, db)
DisconnectDatabase(db)
MsgBox "Finished"
Exit Sub
CloseConnection:
MsgBox "Error " & Err & ": " & Error$ & " (line : " & Erl & ")"
DisconnectDatabase(db)
End Sub
Function ConnectDatabase(dbFilename$) As Object
Dim dbContext As Object : dbContext = createUNOService("com.sun.star.sdb.DatabaseContext")
Dim oDataSource As Object : oDataSource = dbContext.GetByName(dbFilename)
ConnectDatabase = oDataSource.GetConnection("","")'>>("Username","Password")
End Function
Sub DisconnectDatabase(db)
db.Close
db.Dispose()
End Sub
Sub RefreshTables(sURL$, oCon)
Dim oDoc 'Document to refresh.
Dim oDisp 'Dispatch helper.
Dim oFrame 'Current frame.
oDoc = FindComponentWithURL(sURL, False)
If NOT IsNULL(oDOC) AND NOT IsEmpty(oDoc) Then
oDisp = createUnoService("com.sun.star.frame.DispatchHelper")
oFrame = oDoc.getCurrentController().getFrame()
oDisp.executeDispatch(oFrame,".uno:DBRefreshTables", "", 0, Array())
End If
End Sub
This image, as above, is from using db.getTables().refresh
And RefreshTables(dbf, db) gives an error message, Error35: Sub-procedure or function procedure not defined.(line 15)
.