Spalten von Datentabelle per Makro auslesen

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Spalten von Datentabelle per Makro auslesen

Beitrag von Stephan »

Hallo,

ich habe eine DAtenbankdatei (*.odb) geöffnet und verwende testweise folgenden Code:

Code: Alles auswählen

Msgbox Thiscomponent.DataSource.Tables.getByIndex(0).Columns.Count
Dieser Code liefert jedoch teils falsche ERgebnisse, d.h. es wird teils 0 teils eine zu niedrige Zahl für die Spalten angezeigt.

Das geschieht sowohl für Datemnbanken mit internener HSQLDB wie auch per ODBC verknüpfte MySQL-Datenbanken.

Für z.B. die mitgelieferte Datenbank Biblio ergibt sich ebenfalls ein anders komisches Ergebnis, denn:

Code: Alles auswählen

Msgbox Thiscomponent.DataSource.Tables.Count
liefert 2, obwohl Biblio ja nur eine Tabelle hat.



Was mache ich falsch oder was ist an der API defekt?

Mein eigentliches Ziel ist es im Übrigen, für eine Datenbank die Spaltennamen aller Tabellen auszulesen.



Gruß
Stephan
Hiker
******
Beiträge: 590
Registriert: Mo, 08.09.2014 21:34
Wohnort: Berlin

Re: Spalten von Datentabelle per Makro auslesen

Beitrag von Hiker »

Für MySQL z.B.

Code: Alles auswählen

select column_name from INFORMATION_SCHEMA.COLUMNS where table_name = 'Tabellenbeispiel'
Ichwäre mir nicht sicher, was als Tabelle-0 angesehen wird, das kann auch was internes sein.
Habe ich nie ausprobiert... Namen sind da sicherer.

Mfg, Jörn
Libre Office 6.3.1 (Win 10 Pro) / Libre Office 6.0.7 (Win8.1 Pro, Win 7 Pro) / AOO (Win 7)
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Spalten von Datentabelle per Makro auslesen

Beitrag von F3K Total »

Hallo Stephan,
versuch es so:

Code: Alles auswählen

Sub Main
    oController = ThisDatabasedocument.CurrentController
    if not oController.isConnected Then Controller.Connect
    oConnection = oController.ActiveConnection
    oTables = oConnection.Tables
    xray oTables
    nTables = oTables.Count
    print nTables
    for i = 0 to nTables - 1
        oTable = oTables(i)
        oColumns = oTable.Columns
        xray oColumns.ElementNames
    next i
End Sub
Gruß R
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Spalten von Datentabelle per Makro auslesen

Beitrag von Stephan »

Für MySQL z.B.
Danke, ich fand durch Deine Anregung jetzt auch das hier:
http://www.oooforum.de/viewtopic.php?t=62148

was ich vorher übersehen hatte.


Gruß
Stephan
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Spalten von Datentabelle per Makro auslesen

Beitrag von Stephan »

Hallo Stephan,
versuch es so:
Danke, das funktioniert offensichtlich fehlerfrei, auch die Tabellenanzahl für die Biblio-DB wird richtig wiedergegeben.


Gruß
Stephan
Antworten