Hallo, ???
ich habe ein Hauptformular mit zwei Unterformularen. Personen -> Bestellungen -> Bestelldetails. Nun habe ich in dem UFO Bestelldetails ein Kontrollkästchen, Artikel ausgegeben. Wenn alle Artikel abgehakt, sprich ausgegeben wurden, dann soll im UFO Bestellungen ein Kontrollkästchen Bestellung erledigt WAHR werden, sprich sich selbstständig abhaken, WAHR werden. Hat jemand eine Idee.
Meine Versuche schlugen bis jetzt leider fehl: z.B.
Formular beim Anzeigen: If Personen!Bestellungen!Bestelldetails.ausgegeben= true then
Personen!Bestellungen.erledigt=true
else
Personen!Bestellungen.erledigt=false
end if
???
Also,
habe folgende Variante ausprobiert und sie Funktioniert.
Private Sub Form_Current()
If Me.Bestelldetails!Ausgegeben = True Then
Me.Bestellungen!Erledigt = True
Else
Me.Bestellungen!Erledigt = False
End If
End Sub
Das Problem ist aber, dass die Bestelldetails mehrere Artikel enthält. Das Kontrollfeld Me.Bestellungen!Erledigt soll aber nur
TRUE werden wenn alle Bestelldetails!Ausgegeben True sind. Nicht wenn noch eines False ist.
Wie kann ich das realisieren? Vielleicht mit einer FOR Next Schleife?
Wer hat einen Tip für mich?
Gruß
Hallo,
per Durchlauf des Form-Recordsets:
Private Sub Form_Current()
Dim RSC as Dao.Recordset, erl as Boolean
Set RSC =Me!Bestelldetails.Form.Recordsetclone
erl=True
If RSC.Recordcount >0 then
Rsc.Movefirst
Do until RSC.EOF
If not RSC!Ausgegeben then
erl=false
exit Do
End if
RSC.Movenext
Loop
End if
Me!Bestellungen!Erledigt =erl
set RSC=Nothing
End Sub
Ob aber das Form_Current-Ereignis an dieser Stelle das geeignete ist, dazu habe ich leichte Bedenken.
Alternativ könnte man auch die DCount-Funktion auf die Tabelle ansetzen und die Anzahl der "fehlenden Haken" zählen.
Hallo DF6GL,
danke für den Tip :D. Funktioniert einwandfrei.
Wie kann ich es erreichen, dass sich das Formular nach jedem Häckchen setzten aktualisiert?
Mit Me.Requery bekomme ich einen Fehler: Nicht genügend Speicherplatz im Stapel!
Und mit Me.Refresh aktualisiert sich dass Feld erledigt nicht! ???
Hallo,
mhm,, ja, anders als in meiner PN vermutet, dürften sich meine Bedenken hinsichtlich des Ereignisses bestätigen.
Benutz mal das BeforeUpdate_Ereignis des "Hakens", um den Code auszuführen.
Ansonsten wirklich die Dcount-Funktion einsetzen...
Also,
Ich habe ein Hauptformular [Hauptformular Personen],
darin enthalten ist ein UFO [Bestellungen],
darin enthalten ist ein UFO [Bestelldetails]
In jedem Datensatz von Bestellungen, können zig Datensätze Bestelldetails enthalten sein.
Jeder datensatz Bestelldetails enthält ein Kontrollkästchen (Ware ausgegeben).
Jeder Datensatz Bestellungen enthält ein Kontrollkästchen Erledigt (Bestellung abgeschlossen).
Dieses Kontrollkästchen "Erledigt" soll aktiv sein, wenn alle Bestelldetails aktiv sind.
Ansonsten soll es inaktiv bleiben.
Folgender Code funktioniert:
Private Sub Form_Current()
Dim RS As Object, erl As Boolean
Set RS = Me.Bestelldetails.Form.RecordsetClone
erl = True
If RS.RecordCount > 0 Then
RS.MoveFirst
Do Until RS.EOF
If Not RS.Ausgegeben Then
erl = False
Exit Do
End If
RS.MoveNext
Loop
End If
Me.Bestellungen!Erledigt = erl
Set RS = Nothing
End Sub
Dass heißt, wenn ich alle Detailshäkchen aktiviere, sollte sich das Häckchen Erledigt, in UFO Bestellungen auch aktivieren. Tut es aber nicht. Klicke ich einen datensatz vor und zurück, ist es sofort aktiv. Also Funktioniert das setzen der Häkchen, nur die Anzeige ist nicht aktuell.
Nun habe ich im UFO Bestelldetails folgende Lösung versucht:
Private Sub Form_AfterUpdate()
Me.Parent!Bestellungen.Form.Requery
End Sub
Leider auch ohne Erfolg
Was an diese Stelle funktioniert ist ein Requery auf das Hauptformular. Allerdings springt die Anzeige dann zum ersten Datensatz. Sie sollte aber schon im aktuellen Datensatz bleiben.
Der Fehler liegt meiner Meinung nach in der richtigen Aktualisierung. Was muss wie aktualisiert werden, damit die UFOs korrekt angezeigt werden.
Ich danke schon mal im voraus allen die einen Tip für mich haben.
Gruß
Hallo,
setz mal ein runcommand accmdsaverecord zusätzlich an den Anfang des Code und das Requery beibehalten.
(und nochmal: Such ein anderes Ereignis...)
Hallo DF6GL,
du hattest natürlich recht. Das Ereignis war sehr schlecht.
Mittlerweile funktioniert alles korrekt.
Der Code funktioniert, wenn er aus dem Hauptformular aufgerufen wird. Dazu habe ich eine
unsichtbare Befehlschaltfläche erstellt und darin das Form-Recordset durchlaufen lassen.
Der Aufruf erfolgt nach Aktualisierung des Ja/Nein-Häckchens im Ufo2.
Wird der gleiche Code aus dem Ufo aufgerufen, funktioniert es nicht. Da muss man erst mal drauf kommen.
Vielen dank für die Hilfe!!! ;D