Neuigkeiten:

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

Mobiles Hauptmenü

INSERT INTO beschwert sich über den Datenpfad

Begonnen von Georg Pfeffer, Februar 14, 2013, 15:50:09

⏪ vorheriges - nächstes ⏩

Georg Pfeffer

Hallo Leute,

ich habe bzgl einer INSERT INTO-Abfrage eine Frage an Euch. Meinen SQL-Code findet ihr unten. Irgendwie moniert SQL immer meinen Dateipfad, gibt den Fehler "Syntaxfehler in der INSERT-INTO-Anweisung " an und markiert den Dateipfad:

INSERT INTO Output [Testdatenbank_4.accdb, "\\U:\Daten"] [(Output.XXX[, Output.YYY[, Output.ZZZ[, Output.Summe[, Output.Summe_Updated]]]])]
SELECT [Abfrage5. ] A.XXX [, A.YYY [, A.ZZZ [, A.Summe [, B.Einschränkung [, B.Hauptniederlassung [, B.Niederlassung]]]]]]
FROM Output AS A INNER JOIN Zuordnung AS B ON (A.XXX=B.XXX) AND (A.YYY=B.YYY)
WHERE A.ZZZ<>463310 And A.ZZZ=B.ZZZ Or B.ZZZ=0

Und so habe ich die Formel verstanden:

INSERT INTO Output [Testdatenbank_4.accdb, U:\Daten] gibt mit Output die Tabelle innerhalb einer Access Datenbank an, in die eingefügt werden soll. Dahinter steht dann der Name der Datei und der Dateipfad der Datenbankdatei, in die eingefügt werden soll.

[(Output.XXX[, Output.YYY[, Output.ZZZ[, Output.Summe[, Output.Summe_Updated]]]])]: beschreibt die Felder der Tabelle, in die nun eingefügt wird.

Und der nachfolgende SELECT-Befehl generiert die Abfrage/die Tabelle, die ich verschieben möchte.

Ich verstehe aber nicht, wieso dieser Befehl nicht funktioniert und SQL insbesondere den Dateipfad markiert. Was den Dateipfad angeht, habe ich auch bereits mehrere im Internet angegebene Versionen durchprobiert, also z.B. [Dateiname, Pfad)] oder [Pfad\Dateiname]... hat jemand eine Idee? Ich bin da recht verzweifelt und freue mich über jeden Hinweis und jede kleine Idee!

Vielen Dank! :)

database

Hallo,

nicht nur über den Dateipfad ...


INSERT INTO Output IN "U:\Daten\Testdatenbank_4.accdb" Output.xxx, Output.yyy, ....
SELECT A.xxx, A.yyyy, ....
FROM Output AS A INNER JOIN Zuordnung AS B ON A.xxx = B.xxx AND A.yyy = B.yyyy
WHERE A.zzz <> 463310 AND A.zzz = B.zzz OR B.zzz=0

Beachte, dass die Anzahl sowie der Datentyp der übergebenen Felder gleich dem Zielort sein muss!

ebs17

ZitatUnd so habe ich die Formel verstanden:
Woher beziehst Du bei SQL Formeln?

Ich verstehe vor allem Deine Klammerinflation nicht, Du im Ergebnis offensichtlich auch nicht.

Die Abfrage könnte etwa so aussehen wie folgt, wobei ich die Diskrepanz zwischen Ziel- und Quellfeldern in Anzahl und Inhalt (vermutet aus Bezeichnung) nicht angefasst habe. Eine übersichtliche Darstellung hilft somit schon mal beim Zählen:
INSERT INTO
    [\\U:\Daten\Testdatenbank_4.accdb].Output(
        XXX,
        YYY,
        ZZZ,
        Summe,
        Summe_Updated
    )
SELECT
    A.XXX,
    A.YYY,
    A.ZZZ,
    A.Summe,
    B.Einschränkung,
    B.Hauptniederlassung,
    B.Niederlassung
FROM
    Output AS A
        INNER JOIN Zuordnung AS B
        ON A.XXX = B.XXX
            AND
        A.YYY = B.YYY
WHERE
    (
        A.ZZZ < 463310
            OR
        A.ZZZ > 463310
    )
        AND
    A.ZZZ = B.ZZZ
        OR
    B.ZZZ = 0


MfGA
ebs
Mit freundlichem Glück Auf!

Eberhard