Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Feldwert Zwischenspeicherung aus Unterformular funktioniert nicht richtig

Begonnen von Stefan2323, April 17, 2024, 20:47:13

⏪ vorheriges - nächstes ⏩

Stefan2323

Hallo liebes Forum,

ich bitte um Unterstützung bei der Lösung des folgenden Problems:
in einem Hauptformular gibt es ein Listenfeld und ein Unterformular. Eine Auswahl im Listenfeld filtert die Datensätze im Unterformular. Das Unterformular bezieht seine Daten aus einer Tabelle. Es handelt sich hierbei um Leistungen im Zusammenhang mit einer Auftragsnummer. Diese sind sortiert nach Art aus Gründen der Übersichtlichkeit. Einer der Einträge muss ein Feld betreffend (Menge) geändert werden und die ID dieses Datensatzes soll in einer temporären Variable zwischengespeichert werden. Der Auslöser ist der Fokusverlust des Feldes Menge. Es wird jedoch immer die ID des obersten Datensatzes gespeichert. Die IDs sind ohne Duplikate der Fokus wird vor dem Speichern nicht auf den obersten Datensatz verschoben. Ich füge den Code hier an:

Private Sub Menge_zw_Exit(Cancel As Integer)
 
 Dim db As DAO.Database
 Dim rsUformLeistung As DAO.Recordset
 Dim selectedID As Variant
   
 Set rsUformLeistung = Me.Form.RecordsetClone
 
   
     selectedID = rsUformLeistung.Fields("DatenID_tx").Value
     TempVars.Add "SelectedID", selectedID

  MsgBox "Der Wert aus dem Unterformular ist: " & selectedID
 
  rsUformLeistung.Close
  Set db = Nothing

End Sub

Wenn ich den gewünschten Datensatz in dem Unterformular noch oben sortiere wird seine (die Richtige) ID gespeichert.

Ich freue mich über jede Hilfe,

Grüße
Stefan

MzKlMu

Hallo,
du kannst einer Variablen jederzeit den Wert eines Feldes zuweisen. Am Besten im Ereignis "Nach Aktualisierung" des Feldes "Menge_zw". Das geht mit einem Einzeiler:

TempVars.Add "SelectedID", Me.DatenID_txEs wird die ID des Datensatzes gespeichert der den Fokus hat.

Was willst Du dann mit der Variablen ?

Es ist eigenartig wenn ein Ufo zusätzlich gefiltert wird, es stellt sich daher auch die Frage, warum wird ein Ufo gefiltert und wie sieht der Filter aus ?

ZitatEs handelt sich hierbei um Leistungen im Zusammenhang mit einer Auftragsnummer.
Dazu sollte Hafo und Ufo über die Schlüsselfelder verknüpft sein.

Gruß Klaus

Stefan2323

Hallo Klaus,
danke für die schnelle Antwort, auch mit deiner "Abkürzung" ist das Ergebnis identisch. Ich werde das Szenario jetzt isoliert nachbauen und melde mich dann.
Es geht um das Ändern und Hinzufügen von auftragsbezogenen Leistungen. Dazu gibt es im Hafo Schaltflächen, ein Listenfeld mit Leistungen, ein Listenfeld mit Aufträgen und ein Ufo mit Auftragsdetails. Ich wähle einen Auftrag aus, der filtert seine Details, gegebenenfalls soll jetzt eine Leistung hinzugefügt werden in die Tabelle der Auftragsdetails oder es soll ein Eintrag geändert werden. Das Hinzufügen einer neuen Leistung funktioniert, das Ändern einer Leistung funktioniert nicht, weil die eindeutige ID nicht korrekt geladen wird.

das Unterformular wird über eine geänderte RecordSource gefiltert:


Private Sub lstAuftraege_AfterUpdate()

Dim newRecordSource As Variant
newRecordSource = "SELECT [tSammlerArchiv].* FROM [tSammlerArchiv] WHERE  AuftragsNr_zli = " & Me!lstAuftraege
Me![NameUFormSammlerArchiv].Form.RecordSource = newRecordSource
Me.txtHilfsfeldAuftragsNr = Form_Auftraege_Abrechnungen_pruefen_und_ergaenzen!lstAuftraege.Column(1)

End Sub



Danke erst einmal,

Grüße
Stefan

MzKlMu

Hallo,
so wie ich das sehe sind Hafo und UFO nicht über die Schlüsselfelder verknüpft.
Bei einer Verknüpfung geht Dein Vorhaben automatisch, ohne einen Buchstaben VBA.
Gruß Klaus