Hallo Forum,
Ich habe da ein kleines SQL Problem:
Ich habe eine Haupt- und eine Nebentabelle, sowie eine temporäre Tabelle, aus der die Daten stammen.
In der Haupttabelle steht das Schlüsselfeld (Auto-Wert) und das Feld ObjektNR, in der Nebentabelle steht ObjektNR (Auto-Wert) und Objektname.
Die Tabellen sind 1:n verknüpft, also Schlüsselfeld (1) zu ObjektNR (n).
In der temporären Tabelle stehen die Felder Schluesselfeld und ObjektName.
Die Daten von ObjektName konnte ich mit einer Select Anweisung in die Nebentabelle eintragen.
Jetzt muss ich noch mittels UPDATE die entstandenen Zahlwerte (ObjektNR) aus der Nebentabelle in die Haupttabelle schreiben und das bekomme ich nicht hin.
Mein (fehlerhafter) sql-String sieht wie folgt aus:
sSQL = "UPDATE Haupttabelle INNER JOIN Temptabelle ON Haupttabelle.Schluesselfeld = Temptabelle.Schluesselfeld " & _
" SET Haupttabelle.ObjektNR = Nebentabelle.ObjektNR WHERE Nebentabelle.ObjektName = Temptabelle.ObjektName "
db.Execute sSQL, dbFailOnError
Hat jemand eine Idee was daran falsch sein könnte?
Hallo,
man kann keine 2 Autowerte in Beziehung setzen.
Das n-Schlüsselfeld muss eine Zahl (Long) sein.
Zeige mal ein Bild des Beziehungsfensters.
https://www.bilder-upload.eu/bild-c6dc32-1603090738.png.html
Das Feld "ObjektNR" in der Haupttabelle (n-Seite) ist long integer, kein(!) Autowert.
Zitat... SET Haupttabelle.ObjektNR = Nebentabelle.ObjektNR ...
Man kann nicht einfach eine Tabelle verwenden, ohne sie vorher im FROM-Teil der Abfrage(ebene) aufgeführt zu haben.
In der Jet-Aktualisierung wäre der FROM-Teil der UPDATE-Teil.
Ah so, also noch eine "join" Anweisung?
Ich habe es jetzt mal so versucht:
sSQL = "UPDATE (Haupttabelle INNER JOIN Temptabelle ON Haupttabelle.Schluesselfeld = Temptabelle.Schluesselfeld) " & _
" INNER JOIN Nebentabelle ON Nebentabelle.ObjektName = Temptabelle.ObjektName" & _
" SET Haupttabelle.ObjektNR = Nebentabelle.ObjektNR " & _
" WHERE Nebentabelle.ObjektName = Temptabelle.ObjektName "
Das bewirkt nur leider gar nichts. :'(
Es gibt keine Fehlermeldung und es werden keine Daten geschrieben.
ZitatEs gibt keine Fehlermeldung
Das ist schon erst einmal positiv erstaunlich. Viele JOIN's (Unterabfragen) und Aktualisierungsabfragen unter Jet, das ist ein heikles Thema, weil sich da Jet etwas doof anstellt (auch bei sichtbar korrekter Syntax).
Zitates werden keine Daten geschrieben
Gibt es denn welche nach der vorgenommenen Filterung?
Nebenbei: JOIN und Filterung sind praktisch das Gleiche, da braucht man keine doppelte Maßnahme.
Ich habe jetzt die Zeile aus der Haupttabelle rausgelöscht und neu angelegt.
Jetzt funktioniert es, warum auch immer. :-)
Den Button "Thema gelößt" würde ich gerne drücken, kann ihn aber leider nicht finden.