Die Typangabe ist ungültig

tornero57

Grünschnabel
Hallo zusammen,

bin neu in diesem Forum und bitte um Hilfe bei folgendem Problem:

Habe folgende Programmzeilen in VBA geschrieben und erhalte bei
"cat.Tables.Append tbl" die Fehlermeldung "Die Typangabe ist ungültig".

Dim i As Integer, xxx As Integer
Dim cat As New ADOX.Catalog
Dim tbl As New ADOX.Table
Dim spal As New ADOX.Column
Dim cnn As ADODB.Connection, txt As String
Dim rs As ADODB.Recordset
Dim cmd As ADODB.Command
Dim nomme As String
nomme = CurDir & "\" & "MyDB.mdb"
Set cat = New ADOX.Catalog
cat.Create "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & nomme
cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & nomme
Set tbl = New ADOX.Table
With tbl
.ParentCatalog = cat
.Name = "Nummernbuch"
.Columns.Append "StNr", adBigInt
.Columns.Append "Klam"
.Columns.Append "Farbe"
Set spal = tbl.Columns("Farbe")
spal.Properties("Nullable").Value = True
spal.Properties("Jet OLEDB:Allow Zero Length") = True
.Columns.Append "LosNr"
Set spal = tbl.Columns("LosNr")
spal.Properties("Nullable").Value = True
spal.Properties("Jet OLEDB:Allow Zero Length") = True
.Columns.Append "LosName"
Set spal = tbl.Columns("LosName")
spal.Properties("Nullable").Value = True
spal.Properties("Jet OLEDB:Allow Zero Length") = True
.Columns.Append "HA"
.Columns.Append "So"
.Columns.Append "VSo"
.Columns.Append "Rinde"
Set spal = tbl.Columns("Rinde")
spal.Properties("Nullable").Value = True
spal.Properties("Jet OLEDB:Allow Zero Length") = True
.Columns.Append "Gruppe"
Set spal = tbl.Columns("Gruppe")
spal.Properties("Nullable").Value = True
spal.Properties("Jet OLEDB:Allow Zero Length") = True
.Columns.Append "KA"
Set spal = tbl.Columns("KA")
spal.Properties("Nullable").Value = True
spal.Properties("Jet OLEDB:Allow Zero Length") = True
.Columns.Append "BHD"
Set spal = tbl.Columns("BHD")
spal.Properties("Nullable").Value = True
spal.Properties("Jet OLEDB:Allow Zero Length") = True
.Columns.Append "Bef"
Set spal = tbl.Columns("Bef")
spal.Properties("Nullable").Value = True
spal.Properties("Jet OLEDB:Allow Zero Length") = True
.Columns.Append "Schä"
Set spal = tbl.Columns("Schä")
spal.Properties("Nullable").Value = True
spal.Properties("Jet OLEDB:Allow Zero Length") = True
.Columns.Append "Käufer"
Set spal = tbl.Columns("Käufer")
spal.Properties("Nullable").Value = True
spal.Properties("Jet OLEDB:Allow Zero Length") = True
.Columns.Append "Güte"
Set spal = tbl.Columns("Güte")
spal.Properties("Nullable").Value = True
spal.Properties("Jet OLEDB:Allow Zero Length") = True
.Columns.Append "Länge", adDecimal
Set spal = tbl.Columns("Länge")
spal.Properties("Nullable").Value = True
spal.Properties("Jet OLEDB:Allow Zero Length") = True
spal.NumericScale = 1
.Columns.Append "Durchm", adInteger
Set spal = tbl.Columns("Durchm")
With spal
.Properties("Nullable").Value = True
.Properties("Jet OLEDB:Allow Zero Length") = True
End With
.Columns.Append "Stärke"
Set spal = tbl.Columns("Stärke")
spal.Properties("Nullable").Value = True
spal.Properties("Jet OLEDB:Allow Zero Length") = True
.Columns.Append "Festm", adDecimal
Set spal = tbl.Columns("Festm")
With spal
.Properties("Nullable").Value = True
.Properties("Jet OLEDB:Allow Zero Length") = True
.NumericScale = 2
End With
.Columns.Append "Wald"
.Columns.Append "Komm"
Set spal = tbl.Columns("Komm")
spal.Properties("Nullable").Value = True
spal.Properties("Jet OLEDB:Allow Zero Length") = True
.Columns.Append "ZNr", adInteger
.Columns.Append "GüNr", adInteger
Set spal = tbl.Columns("GüNr")
With spal
.Properties("Nullable").Value = True
.Properties("Jet OLEDB:Allow Zero Length") = True
End With
.Columns.Append "WaNr", adInteger
Set spal = tbl.Columns("WaNr")
With spal
.Properties("Nullable") = True
.Properties("Jet OLEDB:Allow Zero Length") = True
End With
.Columns.Append "DatenNr", adInteger
End With
cat.Tables.Append tbl

Woliegt hier das Problem. Danke im voraus
 
Bitte benutze die Code-Tags um Quellcode zu posten! Und etwas mehr Übersicht beim Code wäre für eine Antwort hilfreich. Wie wäre es mit eine paar Absätzen und Einrückungen, so dass man in dem "Haufen" Wörter was erkennen kann :)
 
Hallo ojamaney,

Du hast ja recht, wenn Du meinen "Haufen" Wörter kritisiert. Man muss schon ein bißchen Übersicht haben wenn man Code schreibt, aber es ist nie zu spät auch dazu zu lernen. Ich habe Dein Rat mir zu Eigen gemacht und den Code übersichtlicher geschrieben. Ich weiß aber leider nicht was Code-Tags ist, entschuldige mich. Ich habe mittlerweile die Fehler gefunden (es waren meherere).

"adBigInt" funktionniert nicht in Access 2003. Die "ad..."-Types kann man erst nach einer "Set spal = New Adox Column" eintragen und danach muss der "Column.Append"-Befehl kommen. Dann kann man die Properties schreiben, aber mit einer neuen (in meinem Beispiel) "Set spal = .Column(....)"-Anweisung. Dies ist auch klar. Wenn ich in Access eine Tabelle anlege, können die Properties auch erst angelegt werden, wenn die Type-Eigenschaft klar ist (Text, Zahl, ...). So sieht der Code nun aus und funktionniert.

Dim cat As New ADOX.Catalog
Dim tbl As New ADOX.Table
Dim spal As New ADOX.Column
Dim cnn As ADODB.Connection, txt As String
Dim rs As ADODB.Recordset
Dim cmd As ADODB.Command
Dim nomme As String
nomme = CurDir & "\" & "MyDB.mdb"
Set cat = New ADOX.Catalog
cat.Create "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & nomme
cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & nomme
Set tbl = New ADOX.Table
With tbl
.Name = "Nummernbuch"
.ParentCatalog = cat
Set spal = New ADOX.Column
With spal
.Name = "StNr"
.Type = adInteger
End With
.Columns.Append spal
.Columns.Append "Klam"
.Columns.Append "Farbe"
Set spal = .Columns("Farbe")
With spal
.Properties("Nullable").Value = True
.Properties("Jet OLEDB:Allow Zero Length") = True
End With
.Columns.Append "LosNr"
Set spal = .Columns("LosNr")
With spal
.Properties("Nullable").Value = True
.Properties("Jet OLEDB:Allow Zero Length") = True
End With
.Columns.Append "LosName"
Set spal = .Columns("LosName")
With spal
.Properties("Nullable").Value = True
.Properties("Jet OLEDB:Allow Zero Length") = True
End With
.Columns.Append "HA"
.Columns.Append "So"
.Columns.Append "VSo"
.Columns.Append "Rinde"
Set spal = .Columns("Rinde")
spal.Properties("Nullable").Value = True
spal.Properties("Jet OLEDB:Allow Zero Length") = True
.Columns.Append "Gruppe"
Set spal = .Columns("Gruppe")
spal.Properties("Nullable").Value = True
spal.Properties("Jet OLEDB:Allow Zero Length") = True
.Columns.Append "KA"
Set spal = .Columns("KA")
spal.Properties("Nullable").Value = True
spal.Properties("Jet OLEDB:Allow Zero Length") = True
.Columns.Append "BHD"
Set spal = .Columns("BHD")
spal.Properties("Nullable").Value = True
spal.Properties("Jet OLEDB:Allow Zero Length") = True
.Columns.Append "Bef"
Set spal = .Columns("Bef")
spal.Properties("Nullable").Value = True
spal.Properties("Jet OLEDB:Allow Zero Length") = True
.Columns.Append "Schä"
Set spal = .Columns("Schä")
spal.Properties("Nullable").Value = True
spal.Properties("Jet OLEDB:Allow Zero Length") = True
.Columns.Append "Käufer"
Set spal = .Columns("Käufer")
spal.Properties("Nullable").Value = True
spal.Properties("Jet OLEDB:Allow Zero Length") = True
.Columns.Append "Güte"
Set spal = .Columns("Güte")
spal.Properties("Nullable").Value = True
spal.Properties("Jet OLEDB:Allow Zero Length") = True
Set spal = New ADOX.Column
With spal
.Name = "Länge"
.Type = adSingle
.NumericScale = 1
End With
.Columns.Append spal
With spal
.Properties("Nullable").Value = True
End With
Set spal = New ADOX.Column
With spal
.Name = "Durchm"
.Type = adInteger
End With
.Columns.Append spal
With spal
.Properties("Nullable").Value = True
End With
.Columns.Append "Stärke"
Set spal = .Columns("Stärke")
spal.Properties("Nullable").Value = True
spal.Properties("Jet OLEDB:Allow Zero Length") = True
Set spal = New ADOX.Column
With spal
.Name = "Festm"
.Type = adSingle
.NumericScale = 2
End With
.Columns.Append spal
.Columns.Append "Wald"
.Columns.Append "Komm"
Set spal = .Columns("Komm")
spal.Properties("Nullable").Value = True
spal.Properties("Jet OLEDB:Allow Zero Length") = True
Set spal = New ADOX.Column
With spal
.Name = "ZNr"
.Type = adInteger
End With
.Columns.Append spal
Set spal = New ADOX.Column
With spal
.Name = "GüNr"
.Type = adInteger
End With
.Columns.Append spal
With spal
.Properties("Nullable").Value = True
End With
Set spal = New ADOX.Column
With spal
.Name = "WaNr"
.Type = adInteger
End With
.Columns.Append spal
Set spal = New ADOX.Column
With spal
.Name = "DatenNr"
.Type = adInteger
End With
.Columns.Append spal
End With
cat.Tables.Append tbl


Gruß an alle, die diesen Beitrag gelesen haben und Dank an alle die versucht haben mir zu helfen (und vielleicht nicht konnten).

Habe versucht einzurücken, aber beim Post geht die Einrückung verloren.
 
Zuletzt bearbeitet:
Mit Code-Tags meine ich den "#-Button" wenn Du hier etwas reinschreibst. Klick mal auf dein Post "Ändern" und dann auf erweitert. Oberhalb des Eingabefeldes sind mehrere Buttons, unter anderen auch der mit dem "'#".

Alternativ kannst Du auch deinen Code manuell mit Tags einklammern. Schreibe am Anfang des Codes eine öffnende Eckklammer (AltGr+8 drücken) + CODE + eine schliessende Eckklammer (AltGr+9 drücken). Am Ende des Codes dasselbe nur mit einem Slash (/) vor dem Wort CODE.

Dann steht Dein Code in so einem Teil hier:
 
Zurück