Hallo zusammen,
bin Neu hier in diesem Forum und hoffe das Ihr einem NewBe helfen könnt.
Folgendes Problem:
Ich möchte aus einer Tabelle ("kunden) die ID in die Tabelle Angebot updaten. Bis jetzt habe ich es geschaft, dass die letzte ID upgedatet wird, allerdings auf alle Datensätze. Warum weiß ich nicht.
Hier mal der Code'Datensätze aus Tabelle 1 auslesen
strSQL = "Select kunden_id FROM tbl_kunden"
Set rstDaten = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)
SQLStr = "Select angebot_id, kundenid FROM tbl_angebot"
With rstDaten
.MoveFirst
Do Until .EOF
satz_kundenid = .Fields("kunden_id")
Debug.Print satz_kundenid
SQLStr = "UPDATE tbl_angebot SET kundenid= " & satz_kundenid & " "
CurrentDb.Execute SQLStr, dbFailOnError
Me.Requery
.MoveNext
Loop
.Close
End With
Kann mir jemand sagen wo das Problem liegen könnte, bzw. den Code anpassen?
Danke im Voraus.
Hallo,
Zitatallerdings auf alle Datensätze. Warum weiß ich nicht.
Du hast es ja so programmiert.
Do Until .EOF
.
.
.MoveNextDas ganze Vorhaben ist ohnehin etwas eigenartig. Kannst Du mal was zum Hintergrund sagen?
Auch ein Bild des Beziehungsfensters wäre mal nicht schlecht.
Gerade als Anfänger besteht die Gefahr, dass man Dinge macht die man so gar nicht braucht.
Auch solche Abfragen gehören dazu. Wenn man für die Dateneingabe gebundene Formaulare verwenden, ggf. Hauptformular und Unterformular wird man eher kein VBA brauchen.
Also bitte mal genauer erklären, mit Beziehungsbild.
Zitat von: MzKlMu am Oktober 08, 2023, 17:48:12Du hast es ja so programmiert.
Stimmt zwar, aber für einen Anfänger wäre ein Stichwort zur konkreten Ursache hilfreicher.
Zitat von: headloose am Oktober 08, 2023, 16:41:05Bis jetzt habe ich es geschaft, dass die letzte ID upgedatet wird, allerdings auf alle Datensätze. Warum weiß ich nicht.
Das passiert, weil dein Update-SQL-Statement keine Where-Klausel (https://de.wikibooks.org/wiki/Einf%C3%BChrung_in_SQL:_WHERE-Klausel_im_Detail) hat, die die betroffenen Daten anhand von Kriterien einschränkt. - Wie diese Kriterien aussehen sollten, kann man aus den Informationen in deinem Text nicht ableiten.
Generell schließe ich mich Klaus an: Dein Vorhaben erscheint eigenartig und du könntest auf einer ganz falschen Fährte sein.
@PhilS Zitatwäre ein Stichwort zur konkreten Ursache hilfreicher.
Stimmt, aber da mir die Zusammenhänge unklar waren bzw. sind, wollte ich erst mal die nähere Beschreibung abwarten.
Ob da eine Where Klausel notwendig/sinnvoll ist, ist auch nicht ganz klar. Möglicherweise kann man ja gezielt auf einen Datensatz positionieren.
Wenn das Ganze überhaupt notwendig ist.
Hier (https://www.datenbankforum.com/threads/query.6932/)gehts zum Crosspost.
Hallo zusammen,
zuerst vielen Dank für Eure Antworten undden Link zum Crosspost. Ja ich bin in 2 Foren unterwegs, allerdings nicht weil ich unzufrieden bin.
Nun noch einmal zu meinem Thema:
Wenn ich einen Kunden anlege soll beim Speichern in der Kundendatei gleich per UPDATE die ID in der Kundendatei in die Tabelle tbl_Angebot übernommen werden. Das ist alles! Ich dachte mir das Ganze kann ich in der Schleife ohne WHERE-Klausel einfügen.
Grüße
Zitat von: headloose am Oktober 09, 2023, 13:48:43Ja ich bin in 2 Foren unterwegs, [...]
Ist halt blöd, dass du das nicht gleich erwähnst, weil man sich hier dann die Mühe macht dir Dinge zu erklären (Where-Klausel), die du in dem anderen Forum längst erklärt bekommen hast.
Zitat von: headloose am Oktober 09, 2023, 13:48:43Wenn ich einen Kunden anlege soll beim Speichern in der Kundendatei gleich per UPDATE die ID in der Kundendatei in die Tabelle tbl_Angebot übernommen werden.
Informiere dich mal über den Unterschied zwischen ...
UPDATE - Aktualisiert bestehende Datensätze, und
INSERT INTO - Legt neue Datensätze an.
Hallo,
wie bereits vermutet ist das ganze Vorhaben ersatzlos überflüssig.
Da die Dateneingabe/Erfassung bei Access grundsätzlich über Formulare erfolgen sollte, ergeben sich 2 Versionen:
Version 1:
Formular für das Angebot anlegen und darin ein Kombinationsfeld über das man den zutreffenden Kunden auswählt.
Die Auswahl füllt dann auch das Fremdschlüsselfeld (ID) des Kunden.
Version 2:
Hauptformular für die Anzeige des Kunden und darin ein Unterformular für das Angebot. Hafo und Ufo sind über die Schlüsselfelder zu verknüpfen. Im Hafo können dann auch neue Kunden angelegt werden. Die Übertragung der KundenID (Fremdschlüssel) erfolgt automatisch über die Verknüpfung, auch bei einem neuen Kunden.
Für beide Versionen ist nichts zu prgrammieren, kein Buchstabe und trotzdem geht alles automatisch.
Du solltest das Vorhaben noch mal überdenken, Du machst es gerade unnötig komliziert.