Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Zoffifee am Oktober 19, 2020, 03:10:48

Titel: Problem mit SQL Update Befehl
Beitrag von: Zoffifee am Oktober 19, 2020, 03:10:48
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?
Titel: Re: Problem mit SQL Update Befehl
Beitrag von: MzKlMu am Oktober 19, 2020, 06:13:17
Hallo,
man kann keine 2 Autowerte in Beziehung setzen.
Das n-Schlüsselfeld muss eine Zahl (Long) sein.

Zeige mal ein Bild des Beziehungsfensters.
Titel: Re: Problem mit SQL Update Befehl
Beitrag von: Zoffifee am Oktober 19, 2020, 09:00:18
https://www.bilder-upload.eu/bild-c6dc32-1603090738.png.html

Das Feld "ObjektNR" in der Haupttabelle (n-Seite) ist long integer, kein(!) Autowert.
Titel: Re: Problem mit SQL Update Befehl
Beitrag von: ebs17 am Oktober 19, 2020, 09:10:56
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.
Titel: Re: Problem mit SQL Update Befehl
Beitrag von: Zoffifee am Oktober 19, 2020, 17:29:16
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.
Titel: Re: Problem mit SQL Update Befehl
Beitrag von: ebs17 am Oktober 19, 2020, 19:05:59
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.
Titel: Re: Problem mit SQL Update Befehl
Beitrag von: Zoffifee am Oktober 19, 2020, 23:19:39
Ich habe jetzt die Zeile aus der Haupttabelle rausgelöscht und neu angelegt.

Jetzt funktioniert es, warum auch immer. :-)
Titel: Re: Problem mit SQL Update Befehl
Beitrag von: Zoffifee am Oktober 19, 2020, 23:24:20
Den Button "Thema gelößt" würde ich gerne drücken, kann ihn aber leider nicht finden.