Hallo Miteinander.
Ich brauche eure Hilfe.
Ich habe mehrere Datensätze in einem Endlosformular.
Nun möchte ich bei jedem Satz das Feld [Einzelpreis]
aktualisieren. Diesen Preis nehme ich aus einer Preistabelle.
Ich habe bisher folgenden Code.
Forms![F_Offerte]![F_Offerten_Pos_Unterformular].Form![Einzelpreis] = DLookup("[Preis Eigenwaehrung]", „T_Preisliste_Fideca“, „[Artikel_Nr] = '“ & Forms![F_Offerte]![F_Offerten_Pos_Unterformular].Form![Kombinationsfeld44] & „’“)
Wie Ihr Profis natürlich sofort seht, wird nur der erste Satz aktualisiert. Habe schon versucht alle Datensätze zu markieren, haben dies aber nicht geschafft.
Wäre toll wenn mir jemand weiterhelfen lönnte.
Vielen Dank
hallo
Ich würde das mal mit einer Ereignisprozedur beim Feldereignis „nach Aktualisieren“ versuchen. Als VBA Code einfach me.refresh oder me.requery einfügen. Weiss jetzt nicht gerade was schlauer ist bezw. funktioniert…
Chris
Vielen herzlichen Dank für die prompte Antwort, das hätte ich jetzt nicht gedacht.
Mein Problem liegt darin, dass er die „neuen“ Preise für den nächsten Datensatz nicht per „Dlookup“ abholt, er bleibt einfach stehen. Habe es schon mit einer Schleife probiert, dies ging natürlich bei mir nicht.
Dim rs As Dao.Recordset
Set rs = Me.RecordsetClone
Do Until rs.EOF
rs.Edit
Forms![F_Offerte]![F_Offerten_Pos_Unterformular].Form![Einzelpreis] = DLookup("[Preis Eigenwaehrung]", „T_Preisliste_Fideca“, „[Artikel_Nr] = '“ & Forms![F_Offerte]![F_Offerten_Pos_Unterformular].Form![Kombinationsfeld44] & „’“)
rs.Update
rs.MoveNext
Loop
Auch hier wurde nur ein Satz aktualisiert:frowning:
Wenn ich vielleicht im Code alle Datensätze im UF markieren könnte?
Hallo Daniel
Verstehe ich das richtig? Du hast ein UF und füllst Felder auf irgendeine Weise aber die neuen Werte werden nicht angezeigt? Hast du mal versucht im Formular ins Feld zu schreiben (me.feldname.value=…). Das ist als würde man mit Tastatur reinschreiben. Nachher auf den nächsten Datensatz und das wird akualisiert.
Gruss
ich kann Deine Frage leider nicht beantworten,
denke aber, dass Du so etwas wie eine Schleife brauchst,
die über Dein OffertenPosUnterformular läuft und als ausführende Zeile, Dein gepostetes Statement enthält.
So wird dann in jeder Zeile der Preis ersetzt.
es gibt da die Funktion:
DoCmd.RunCommand acCmdSaveRecord
die du bei Ereignis anwenden kannst!
Auch mit der Funktion „Requery“ habe ich gute Erfahrung gemacht!
Wenn das zu allgemein ist, kannst du dich gerne melden!
Gruss
Eckart
Hallo Miteinander.
Ich brauche eure Hilfe.
Ich habe mehrere Datensätze in einem Endlosformular.
Nun möchte ich bei jedem Satz das Feld [Einzelpreis]
aktualisieren. Diesen Preis nehme ich aus einer Preistabelle.
Ich habe bisher folgenden Code.
Forms![F_Offerte]![F_Offerten_Pos_Unterformular].Form![Einzelpr
eis] = DLookup("[Preis Eigenwaehrung]", „T_Preisliste_Fideca“,
„[Artikel_Nr] = '“ &
Forms![F_Offerte]![F_Offerten_Pos_Unterformular].Form![Kombinat
ionsfeld44] & „’“)
Wie Ihr Profis natürlich sofort seht, wird nur der erste Satz
aktualisiert. Habe schon versucht alle Datensätze zu
markieren, haben dies aber nicht geschafft.
Wäre toll wenn mir jemand weiterhelfen lönnte.
Vielen Dank
Erstmal vielen Dank für deine Antwort. Das mit der Abfrage habe ich bereits probiert. Ich hatte nun die Abfrage mit den zu aktualisierende Datensätzen.Nun haben ich da das gleiche Problem. Ich müsste eine Schleife haben, wo jeder Satz sich der Reihe nach seine Preise per DLookup von der Preistabelle abholt und aktualisiert.
Ich habe es mal so probiert:
Dim rs As Dao.Recordset
Set rs = Me.RecordsetClone
Do Until rs.EOF
rs.Edit
Forms![F_Offerte]![F_Offerten_Pos_Unterformular].Form![Einzelpreis] = DLookup("[Preis Eigenwaehrung]", „T_Preisliste_Fideca“, „[Artikel_Nr] = '“ & Forms![F_Offerte]![F_Offerten_Pos_Unterformular].Form![Kombinationsfeld44] & „’“)
rs.Update
rs.MoveNext
Loop
Aber auch so, die erste aktive Zeile wird mit dem neuen Preis ersetzt, die anderen lässt er stehen.
Ja, ich möchte das Feld Einzelpreis von einer anderen Tabelle via Artikel-Nr mit dem Befehl DLookup abholen.
Jetzt habe ich aber im betreffenden UF mehrere Sätze, das können 2,3 4, sein. Mit meinem Befehl füllt er immer im ersten Satz das Feld [Einzelpreis] korrekt ab und geht nicht zum nächsten. Es müsste irgendwie über eine Schleife gehen, aber wie?
Hallo Dani
Ich hab das bei mir so gelöst und es Funktoiniert:
For i = 1 To Rst.RecordCount
Rst.Edit
Rst.Fields(FeldName).Value = neuer Wert
Rst.Update
Rst.MoveNext
Next i
Gruss
Chris