Liebes Forum,
ich habe eine Tabelle mit den Feldern "day" und "service". Diese wird per VBA mit einem Befehl
DoCmd.RunSQL "SELECT day, service INTO Tabelle FROM (...)befüllt, was auch wie erwartet funktioniert.
Nun habe ich den Wunsch, dass die Daten durchnummeriert werden und ich habe in der Entwurfsansicht der Tabelle ein Feld id als Autowert hinzugefügt und auch als Primärschlüssel definiert. Meine Erwartung war eigentlich, dass der oben genannte Befehl wie erwartet funktioniert und die id hochzählt.
Ergebnis war aber, dass die Daten eingefügt werden und die id-Spalte rückstandsfrei entfernt wurde ?!
Vielen Dank für jede Hilfe
Hans-Jürgen
Hallo Hans-Jürgen,
kleiner Tip:
was ist der Unterschied zwischen einer Tabellenerstellungsabfrage und einer Anfügeabfrage? Einfach mal in der QBE /SQL Ansicht spitzeln. ;)
Knobbi38
Hallo Hans-Jürgen,
Zwar nichts, was zur Lösung beiträgt, aber die Verwendung des DoCmd-Objekts
sollte man weitestgehend vermeiden.
CurrentDb bietet für Aktionsabfragen die Methode .Execute an, die dann auch
Fehlermeldungen ausgeben kann.
gruss ekkehard
[kreisch, ich kenne den Unterschied, hab aber nicht dran gedacht, ärgerlich]
Hallo zusammen,
vielen Dank, und wenn man den Knoten aus dem Kopf hat und nach den richtigen Schlüsselworten sucht, bekommt man gleich für Beides eine Vorlage:
Sub AnfuegeAbfrageAusfuehren()
Dim strSQL As String
' SQL-Anweisung erstellen
strSQL = "INSERT INTO ZielTabelle ( Feld1, Feld2 ) " & _
"SELECT QuelleFeld1, QuelleFeld2 FROM QuellTabelle " & _
"WHERE Bedingung = True;"
' Warnmeldungen ausschalten (optional)
DoCmd.SetWarnings False
' Abfrage ausführen
CurrentDb.Execute strSQL, dbFailOnError
' Warnmeldungen wieder einschalten
DoCmd.SetWarnings True
MsgBox "Daten wurden angefügt."
End Sub
Herzlichen Dank!
Hans-Jürgen
Hallo Hans-Jürgen,
mit DoCmd führst du Makro-Aktionen aus, besser du bleibst durchgängig in der "VBA Welt". Hier ist SetWarnings eigentlich nicht angesagt.
Knobbi38