Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

SELECT INTO macht keinen Autowert

Begonnen von hajott, Heute um 11:58:49

⏪ vorheriges - nächstes ⏩

hajott

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

Knobbi38

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

Beaker s.a.

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
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

hajott

[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

Knobbi38

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