Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: hajott am März 25, 2026, 11:58:49

Titel: SELECT INTO macht keinen Autowert
Beitrag von: hajott am März 25, 2026, 11:58:49
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
Titel: Re: SELECT INTO macht keinen Autowert
Beitrag von: Knobbi38 am März 25, 2026, 12:38:54
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
Titel: Re: SELECT INTO macht keinen Autowert
Beitrag von: Beaker s.a. am März 25, 2026, 13:03:39
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
Titel: Re: SELECT INTO macht keinen Autowert
Beitrag von: hajott am März 25, 2026, 13:37:07
[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
Titel: Re: SELECT INTO macht keinen Autowert
Beitrag von: Knobbi38 am März 25, 2026, 14:09:31
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