Du steigst ja wirklich schnell in die Tiefen von Access-VBA hinab!
Ich habe selbst mit CreateQueryDef noch nicht gearbeitet, aber mal schnell in die Hilfe geschaut.
Die Felder, die diese Abfrage verwendet, ergeben sich aus der SQL-Anweisung im 2. Parameter der CreateQueryDef-Methode, also z.B.
"SELECT Product_Id, Exp_Month, Exp_Year FROM Datenimport"
Dies sind die gleichen Felder, die du auch im Abfrageassistenten eingibst. Soweit ich weiß, kannst du in einer Abfrage (Query) z.B. die Feldtypen oder -längen nicht ändern, denn diese sind ja durch die zugrundeliegende Tabelle definiert.
Mit der Methode Append kannst du z.B. der Field-Auflistung einer Tabelle ein neues Feld hinzufügen, das läuft dann im Prinzip so:
|
Source code
|
1
2
3
4
5
6
7
|
Dim db As Database, td As TableDef, fld1 As Field
Set db = CurrentDb
Set td = db.CreateTableDef("Test")
Set fld1 = td.CreateField("Nachname", dbText, 50)
td.Fields.Append fld1
db.TableDefs.Append td
|
also zur aktuellen Datenbank (db) eine neue Tabellendefinition erstellen (td) und dieser ein neues Feld (fld1) hinzufügen. Dann die neue Tabellendefinition der Liste aller Tabellendefinitionen hinzufügen (letzte Zeile).
Das ganze läuft absolut objektorientiert, deswegen musst du ständig wissen, auf welches Objekt sich welche Methode anwenden läßt oder welche Eigenschaften es hat. Ich fand das zu Anfang einen grausigen Berg, der sich vor mir auftürmte und wollte schon manchmal verzweifeln. Geholfen haben mir ein Buch - damals über A97-Programmierung - die wirklich gute Hilfe in Access-VBA (gib da z.B. mal createquerydef oder createfield oder append ... ein! Die Beispiele liefern gute Anregungen) und auch oft eine Google-Suche.
Also weiterhin viel Spass und wenn noch Fragen auftauchen, poste einfach.
Schönen Abend,
Jens