2017-06-29 3 views
0

Ich bin relativ neu in MS Access und SQL.MS Access SQL-Anweisung für Append

Ich habe eine Abfrage in einer Access-Datenbank, um eine Tabelle an eine andere anzuhängen, sortiert aufsteigend nach einer bestimmten Spalte, die ich dann zum Hinzufügen von Spalte für die Zwecke der Zuweisung einer eindeutigen Kennung verwenden.

Die Abfrage selbst läuft gut in Zugriff, jedoch möchte ich dies in den VBA-Code eines Formulars zu Aktion schreiben, wenn eine Schaltfläche geklickt wird.

Die SQL-Ansicht im Zugriff gibt mir den folgenden Code, aber wenn ich es in meinen Code schreibe, heißt es, dass ein Operator fehlt, kann jemand einen Vorschlag machen?

Code:

DoCmd.RunSQL ("INSERT INTO tblImport (CustomerAccount, OrderReference, OrderDate, DueDate, CustomerRef," & _ 
    "StockNo, OrderQuantity, AddressName, Add1, Add2, Add3, Town, County, PostCode, Country, ServiceLine)" & _ 
    "SELECT tblImport2.CustomerAccount, tblImport2.OrderReference, tblImport2.OrderDate, tblImport2.DueDate," & _ 
    "tblImport2.CustomerRef, tblImport2.StockNo, tblImport2.OrderQuantity, tblImport2.AddressName, tblImport2.Add1," & _ 
    "tblImport2.Add2, tblImport2.Add3, tblImport2.Town, tblImport2.County, tblImport2.PostCode, tblImport2.Country," & _ 
    "tblImport2.ServiceLine" & _ 
    "FROM tblImport2" & _ 
    "ORDER BY tblImport2.OrderReference") 
+0

Können Sie uns den 'vba' Code zeigen, den Sie haben, der den Fehler gibt? Die 'SQL' sieht gut aus, aber vielleicht gibt es einen Fehler bei der Umsetzung in' VBA' – Dave

+0

Es ist ein bisschen zu lang :) – Tim

+0

Basierend auf Ihrem Syntaxfehler hatte ich eine Chance auf eine schnelle Schätzung, Aber selbst wenn du nur die 'vba'-Anweisung postest, die deine' SQL' setzt, sollte es ausreichen, um das Problem zu bestimmen (vorausgesetzt, meine Vermutung war sowieso nicht korrekt) – Dave

Antwort

1

Speichern Sie die Abfrage. Dann können Sie es aus dem Code aufrufen:

CurrentDb.QueryDefs("NameOfYourAppendQuery").Execute 

oder ohne Abfrage:

Dim Sql As String 

Sql = "<Your SQL string>" 
Debug.Print Sql  ' Check SQL. 
CurrentDb.Execute Sql 
+0

Danke Gustav. Ich weiß, wie man die Abfrage aus dem Formularcode ausführt, ich wollte nur die Abfrage in den Code schreiben. Ich habe ein paar Dinge mit diesem Formular zu tun, also wollte ich die Anzahl der Abfragen in der Datenbank auf ein Minimum reduzieren, damit ich nicht den Überblick darüber verliere, auf was ich verlinke. – Tim

+0

Oh. Ich habe das zur Antwort hinzugefügt. – Gustav

+0

Danke Gustav, das habe ich ausprobiert und es scheitert genau so wie mein ursprünglicher Code. Syntaxfehler (fehlender Operator) im Abfrageausdruck 'tblImport2.ServiceLine Aus tblImport2 Reihenfolge nach tblimport2.orderReference'. sieht aus wie ich ein Komma oder Semikolon oder etwas vermisse, aber ich bin nicht so aufgeklärt, um herauszufinden, wo – Tim

1

Sind Sie sich bewusst, dass in VBA eine mehrzeilige Zeichenfolge angeben (wie Ihre Abfrage hier ist), müssen Sie beitreten die Linien zusammen so? Ansonsten wird VBA10 nicht wissen, dass es eine einzelne Zeichenfolge sein soll.

mySql = "INSERT INTO tblImport (CustomerAccount, OrderReference, OrderDate, DueDate, CustomerRef, StockNo, OrderQuantity, AddressName, Add1, Add2, Add3, Town, County, PostCode, Country, ServiceLine) " & _ 
"SELECT tblImport2.CustomerAccount, tblImport2.OrderReference, tblImport2.OrderDate, tblImport2.DueDate, tblImport2.CustomerRef, tblImport2.StockNo, tblImport2.OrderQuantity, tblImport2.AddressName, tblImport2.Add1, tblImport2.Add2, tblImport2.Add3, tblImport2.Town, tblImport2.County, tblImport2.PostCode, tblImport2.Country, " & _ 
"tblImport2.ServiceLine " & _ 
"FROM tblImport2 " & _ 
"ORDER BY tblImport2.OrderReference; " 
+0

Das ist richtig Dave, der Code, den ich ursprünglich eingab, war DoCmd.RunSQL etc usw. Alle Zeilen enden "& _ und folgende Zeilen beginnen". Wenn ich die Abfrage im Zugriff ausführen, wird perfekt ausgeführt. Es gibt hier keine Möglichkeit, einen Anhang hinzuzufügen. – Tim

+0

Nein, aber Sie könnten die Anweisung selbst kopieren und in eine Bearbeitung der Frage einfügen. Syntaxfehler bedeuten, dass etwas mit der Anweisung nicht stimmt, daher ist es notwendig, die Anweisung zu lesen, um sie zu lösen – Dave

+0

perfekt. Versucht, es hier hereinzupoppen, aber war zu lang von 200 ungeraden Zeichen :) – Tim