PDA

Vollständige Version anzeigen : Feldbezeichnungen einer Tabelle ermitteln


Raller
14.03.2002, 10:30
Tag,

ich habe folgendes Problem:
Ich zapfe mit Word-VBA eine Accessdatenbank an (Access ist auf dem Zielrechner nicht vorhanden!).
Ich kann auch Datensätze per SQL lesen, schreiben etc.
Jetzt benötige ich aber die Feldbezeichner (Spaltenüberschriften) einer bestimmten Tabelle.

Dafür gibt es in Access die Tabelle MSysRelationships.

Leider ist es mir nicht erlaubt, die Tabelle zu lesen (Fehler: keine Berechtigung).

Hat jemand eine Idee?
Wie ichs mache, ist mir egal, nur die Bezeichner (und/oder die Anzahl der Spalten) will ich haben, um damit eine Serienbrieftabelle zu erstellen.

Gruß
Raller

Kurt aus Kienitz
14.03.2002, 11:00
<font face="Comic Sans MS">Hallo Raller,

Wenn Du an die TableDef der Tabelle herankommst, könntest Du dich durch die Fields-Auflistung hangeln und dort die Feldnamen abgreifen.

Raller
14.03.2002, 11:04
Die TableDef ist doch unter'm Database, oder?
Da komme ich nicht ran.
Kannste mal 'n Beispiel sagen, bitte.
Gruß
Raller

Kurt aus Kienitz
14.03.2002, 12:02
<font face="Comic Sans MS">Hallo Raller,

Du hast recht, TableDef ist unter Database :(

Dim td As TableDef
Dim db As Database

Set db = CurrentDb
Set td = db.TableDefs("DeineTabelle")

MsgBox "Anzahl Felder " & Str$(tb.Fields.Count)

Funktionieren bei deiner Systemumgebung Funktionen in Abfragen ?
Wenn ja, dann könnte man darüber was drehen.

Aber dann könnte man genausogut in der DB eine Tabelle anlegen und dort die Feldnamen reinschreiben :holy:

Raller
14.03.2002, 12:17
Hier habe ich eine Lösung aus VBA und SQL:

'Variablen erstellen
Dim rs As ADODB.Connection, strPfadDB, SQL
Dim ds As ADODB.Recordset

'DB-Treiber und Pfad erstellen
strPfadDB = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
strPfadDB = strPfadDB & ActiveDocument.Path & "/bisdb.mdb"
strPfadDB = strPfadDB & ";Mode=ReadWrite;Persist Security Info=False"

'Recordsert erstellen
Set ds = CreateObject("ADODB.Recordset")

'SQL-Anweisung erstellen
SQL = "Select * from t_teilnehmer"
'Verbindung zur DB herstellen, SQL-Anweisung ausführen.
ds.Open SQL, strPfadDB, 3, 3
For z = 0 To ds.Fields.Count - 1
Feld = Feld + ds.Fields(z).Name & vbTab
Next z
MsgBox Feld


Jetzt sind in "Feld" alle Spaltenbezeichnungen mit TAB getrennt.

Speziell:
Access ist auf dem Zielrechner NICHT installiert. Verweis auf "Microsoft ActiveX Data Objects 2.5 Library" muß gesetzt sein.

Gruß
Raller