Mai 25, 2022, 11:15:05

Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!


PrimaryKey in zwei Abfragen vergleichen, wenn gleich, dann Feld aktualisieren

Begonnen von P.Hennig, Dezember 10, 2021, 18:11:19

⏪ vorheriges - nächstes ⏩

P.Hennig

Hallo alle zusammen,

ich bin mit meinen Fähigkeiten leider am Ende und hoffe, dass mir hier jemand helfen kann.

Ich möchte zwei Abfragen abgleichen. Beide haben einen eindeutigen Schlüssel (GUID).
Es soll nun in Abfrage eins ein Wert aus Abfrage zwei übernommen werden, wenn beide Schlüssel identisch sind.

hier mal mein Versuch: (und es geht hier um den Masernimpfstatus, nicht Corona, bevor es hier komisch wird ;-))

Dim rcsImport_in_LEDA As Recordset 'Abfrage qLEDA_IMPFSTATUS_IMPORT
Dim rcsImport_von_Schule As Recordset 'Abfrage qImportImpfdaten

Set rcsImport_in_LEDA = CurrentDb.OpenRecordset("qLEDA_IMPFSTATUS_IMPORT", dbOpenDynaset)
    Do Until rcsImport_in_LEDA.EOF
        Set rcsImport_von_Schule = CurrentDb.OpenRecordset("SELECT * FROM qImportImpfdaten  WHERE [LP_ID_Import] = '  rcsImport_in_LEDA.Fields(LP_ID).value  '", dbOpenDynaset)
        Do Until rcsImport_von_Schule.EOF   ********************hier wird leider immer "wahr" ausgegeben, somit geht er nicht in rcsImport_in_LEDA.Edit...
            rcsImport_in_LEDA.Edit
            rcsImport_in_LEDA.Fields("LP_NACHVERS").value = rcsImport_von_Schule("Impfstatus_Import").value
            rcsImport_in_LEDA.Update
            rcsImport_in_LEDA.MoveNext
        Loop
        rcsImport_in_LEDA.MoveNext
    Loop
    rcsImport_von_Schule.Close
    rcsImport_in_LEDA.Close
End Sub


vielleicht habt ihr ja einen Lösungsansatz.
ich muss über 5000 Datensätze aktualisieren...

Viele Grüße und ein schönes Wochenende

Patrick

MzKlMu

Hallo,
warum verwendest Du nicht einfach eine Aktualisierungsabfrage.
Beide Abfragen in eine neue Abfrage aufnehmen und ein INNER JOIN über die Schlüsselfelder.
Das Feld mit dem neuen Inhalt aktualisieren.
Da braucht es nicht einen Buchstaben VBA.
Gruß
Klaus

markus888

Zitat von: P.Hennig am Dezember 10, 2021, 18:11:19Do Until rcsImport_von_Schule.EOF
            rcsImport_in_LEDA.Edit
            rcsImport_in_LEDA.Fields("LP_NACHVERS").value = rcsImport_von_Schule("Impfstatus_Import").value
            rcsImport_in_LEDA.Update
            rcsImport_in_LEDA.MoveNext
        Loop
        rcsImport_in_LEDA.MoveNext
    Loop
    rcsImport_von_Schule.Close
    rcsImport_in_LEDA.Close
End Sub

Das Problem ist simpel.
Für rcsImport_in_LEDA hast du 2 x MoveNext, für rcsImport_von_Schule gibts gar kein MoveNext.


Klaus weise bereits darauf hin, dass man eine Abfrage verwenden soll.
Da Access aber keine Updates mit aggregierten Daten erlaubt, muss man die Abfragen möglicherweise entsprechend anpassen.
Wenn dir da die Erfahrung fehlt, solltest du ein Bild der Beziehungen der beteiligten Tabellen und den SQL String der beiden Abfragen zeigen.
In der Regel ist es auch besser, keine Abfragen auf Abfragen aufzubauen, da man da den Überblick verliert.
10 Jahre Access

P.Hennig

Hallo und zunächst vielen Dank für die Antworten.

Dann werde ich mich mal an eine Aktualisierungsabfrage machen.
Habe sowas noch nicht gemacht. Mal sehen, hob ich das hinbekomme.

Ich werde dann eine Rückmeldung geben.

LG  und einen guten Start in die Woche...

P.Hennig

so, vielen Dank. ich habe es mit der Aktualisierungsabfrage gelöst bekommen.
Danke für die Hilfestellung.