Datenbanktabellen mit ADOX erzeugen

02/08/2008 - 21:10 von wGress | Report spam
Hallo NG!

Ich versuche gerade ein betagtes VB6-Programm mit Zugriff auf eine SQL-Server-Datenbank dazu zu
bewegen, Teile der Daten in eine MS-Access-Daenbank zu exportieren.
Hierzu erzeuge ich eine neue Access-Datenbank und möchte zunàchst die Struktur einiger Tabellen der
SQL-Server-DB in der Access-Datenbank erzeugen.

Zum Kopieren der Struktur kommt folgender Code zu Einsatz:
- Dim cat as New ADOX.Catalog ' steht global innerhalb der Klasse zur Verfügung, mdb wurde erzeugt
- die Connection zur neuen mdb steht mit dbConn global zur Verfügung
- die Connection zur SQL-Server-DB steht mit PZEConn zur Verfügung

Private Sub CopyStructure(ByVal tblName As String)
Dim tbl As New ADOX.Table
Dim rs As adodb.Recordset

Set rs = PZEConn.OpenSchema(adSchemaColumns, Array("PZE", "dbo", tblName))

cat.ActiveConnection = dbConn

With tbl
.Name = tblName
.ParentCatalog = cat
with .Columns
While Not rs.EOF
If IsNull(rs!CHARACTER_MAXIMUM_LENGTH) Then
.Append rs!COLUMN_NAME, adNumeric 'rs!DATA_TYPE
Else
.Append rs!COLUMN_NAME, adWChar, 50 'rs!DATA_TYPE, rs!CHARACTER_MAXIMUM_LENGTH
End If
rs.MoveNext
Wend
End With
End With
cat.Tables.Append tbl
End Sub


Ergebnis:
Die Tabellen werden angelegt, enthalten aber keine Spalten! Statt dessen erhalte ich beim Anhàngen
der Spalten (Zeilen: .Append rs!COLUMN_NAME...) folgende Fehlermeldung:

Laufzeitfehler '-2147467262 (80004002)': Schnittstelle nicht unterstützt

Hat jemand eine Idee?


Besten Dank schon mal...
 

Lesen sie die antworten

#1 Peter Götz
03/08/2008 - 10:03 | Warnen spam
Hallo w?,

Ich versuche gerade ein betagtes VB6-Programm mit
Zugriff auf eine SQL-Server-Datenbank dazu zu bewegen,
Teile der Daten in eine MS-Access-Daenbank zu exportieren.
Hierzu erzeuge ich eine neue Access-Datenbank
und möchte zunàchst die Struktur einiger Tabellen der
SQL-Server-DB in der Access-Datenbank erzeugen.



Die DB-/Tabellen-Struktur vom SQL-Server bekommst
Du mit Connection.OpenSchema().

Unter

www.gssg.de -> VisualBasic -> VBclassic
-> Datenbank -> ADODemoMU2002

findest Du ein Beispielprogramm in welchem u.a.
auch eine kompl. Jet-DB (*.mdb) erzeugt wird.
Die Funktionen zum Erzeugen der *.mdb, von Tabellen,
Feldern, Primàrschlüssel usw. befinden sich im
Klassenmodul clsGSADOData.cls. Die Namen
der Funktionen beginnen jeweils mit JetCreate

Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

Ähnliche fragen