Liste mit Tabellen in Datenquelle

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Scalaia990
***
Beiträge: 76
Registriert: Mi, 29.04.2009 23:50

Liste mit Tabellen in Datenquelle

Beitrag von Scalaia990 »

Habe,

ich möchte von einer Registrierten Datenquelle eine Liste erzeugen mit allen Tabellen (später auch Abfragen) die verfügbar sind. Bin im ersten Schrit hingeganben und habe die Routine welche ich verwende zum Abrufen der Felder genommen und modifiziert.

dim sDQ_Tabellennamen() as string
oDocSettings = oDoc.createInstance("com.sun.star.text.DocumentSettings")
oDocSettings.CurrentDatabaseDataSource = sDQName
sDQ_Tabellennamen() = oDocSettings.CurrentDatabaseDataSource.Command.getElementNames()

msgbox sDQ_Tabellennamen(0) & "x1"
msgbox sDQ_Tabellennamen(1) & "x2"
msgbox sDQ_Tabellennamen(2) & "x2"

Die Msgboxen werden einfach nicht ausgeführt. Wenn ich die Stringzuweisung für sDQ_Tabellennamen entferne kommen zwar die Msgboxen, das Feld ist jedoch leer. Gehe deshalb davon aus, dass die GetElementNames funktion irgendwie ein Objekt zurückgibt.

Wer kann mir helfen und hat mir einen Tipp wie ich realisiert bekomme, dass ich von einer Registrierten Datenquelle eine Liste der Tabellen erzeugen kann?

Gruss und Dank

Scaleia990
Scalaia990
***
Beiträge: 76
Registriert: Mi, 29.04.2009 23:50

Re: Liste mit Tabellen in Datenquelle

Beitrag von Scalaia990 »

Hallo habe weiter gesucht und folgenden Ansatz gefunden:

Dabei funktioniert der Code bei den ODB-Dateien Wunderbar, jedoch bei Registrierten Datenquellen welche von CSV, Dateien, XLS oder ods stammen gibt er mir den Wert nicht aus, hat jemand eine Idee an was das liegen kann?

Gruss und Dank

Scaleia990

Sub Tabellenname
Dim Context
Dim DB
Dim Conn
Dim Tables
Dim oEnum
Dim oItem
Context=CreateUnoService("com.sun.star.sdb.DatabaseContext")

'DB=Context.getByName("bucher_odb") '
DB=Context.getByName("adressen2_csv") '
'DB=Context.getByName("zahler_odb") '
Tables=DB.getTables()

oEnum=Tables.createEnumeration()
While oEnum.hasMoreElements()
oItem=oEnum.nextElement()
msgbox "Tabellenname " & oItem.Name
Wend

For I=0 To DB.QueryDefinitions.Count-1
oItem=DB.QueryDefinitions(I)
msgbox "query " & oItem.name
Next I

End Sub
Scalaia990
***
Beiträge: 76
Registriert: Mi, 29.04.2009 23:50

Re: Liste mit Tabellen in Datenquelle

Beitrag von Scalaia990 »

Hier die Lösung,

Sub GetTabellenname

oDBContext = CreateUnoService("com.sun.star.sdb.DatabaseContext")

oDBSource = oDBContext.GetByName("Unbenannt_2_ods")
oDBSource = oDBContext.GetByName("adressen2_xls")
' oDBSource = oDBContext.GetByName("bucher_odb")

oConnection = oDBSource.GetConnection("","")
oTables = oConnection.Tables()
oEnum=oTables.createEnumeration()

While oEnum.hasMoreElements()
oItem=oEnum.nextElement()

msgbox "Tabellenname " & oItem.Name
Wend


end sub
Antworten