# Where does the OpenOffice Database name come from.

I am working on a Windows 10 LibreOffice 7.1.2 database. the ODB file along with a folder and four subfolder with 4 graphic in them can be found here,

I am working on the form "Form Setup" . I am writing a macro to populate the BirthCity textbox based on the item selected in the birthCitylst listbox. Here is the code I am using the "Mouse button pressed" event of that listbox. Here is the code.

    Sub pick_city_list
Dim oForm as Object
Dim countryText as string
Dim cityList as Object
Dim cityBox as Object
Dim oCountryList as Object
Dim oCountryBox as Object
Dim idebugCode as integer
Dim DatabaseContext As Object
Dim DataSource As Object
Dim Connection As Object
Dim InteractionHandler as Object
Dim Statement As Object
Dim ResultSet As Object
Dim Names As Object
Dim I As Integer

REM Determine if the countrylist text box has a value

oForm = ThisComponent.DrawPage.Forms.GetByName("dsPhotoInfo")
oCountryBox = oForm.getByName("birthCountry")

IF oCountryBox.text <> "" THEN

' Connect to database

DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
Names = DatabaseContext.getElementNames()
For I = 0 To UBound ( Names())
MsgBox Names(I)
Next I
DataSource = DatabaseContext.getByName("Bibliography")
Connection = DataSource.GetConnection("","")
Else
InteractionHandler = createUnoService("com.sun.star.sdb.InteractionHandler")
Connection = DataSource.ConnectWithCompletion(InteractionHandler)
End If
ELSE
Print "No Country"
EXIT SUB
ENDIF
End Sub


I got the database access portion of the code from the Apache OpenOffice help pages here:

When I first added the "DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext") lines I kept getting and errore saying that no such object at the "DatabaseContext.getbyName() line. So I did more Googling and found this page.

I added the code for display all the database names

DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")


Names = DatabaseContext.getElementNames()

For I = 0 To UBound(Names()) MsgBox Names(I) Next I

and got a dialog that one called "Bibliography" As you can see I inserted that in the DatabaseContext.getbyName() call and now things are working up this point.

My question is where did "Bibliograpy" come from. I do not recall naming anything with that when I created the database, the ODB file the tables or the forms. It is as though LibreOffice just pulled it out of thin air!!!.

edit retag close merge delete

1

Edited for clarity. Use the Formatted text icon on the toolbar for code (toolbar in upper left of question/comment/answer). Select all the code & click on the icon.

BTW this is LibreOffice and not OpenOffice.

( 2021-04-28 05:22:21 +0200 )edit

Sort by » oldest newest most voted

Hello,

"Bibliography" is a database which comes with LO. See -> Referencing Systems in LibreOffice. More oriented to Writer.

The retrieval of DB names as you have coded are for Registered base names. See menu Tools->Options. Then under LibreOffice Base->Databases the list is on the right.

more