Hallo,
ich würde gerne alle Kontrollfelder in meinem Endlosformularaktivieren.
Ich ahbe folgenden Code: Dim ctrl As Control
' Alle Steuerelemente im Formular durchlaufen
For Each ctrl In Me.Controls
' Überprüfen, ob das Steuerelement ein Eingabefeld ist (Textfeld, Kombinationsfeld, etc.)
If ctrl.ControlType = acCheckBox Then
' Setze das Steuerelement auf aktiviert
ctrl.Value = True
End If
Next ctrl
End Subes wird leider aber nur das Kontroll aktiviert, in dessen Datensatz ich mich gerade befinde.
Was mach ich denn da falsch?
Grüße, Babsi
llo,
Du musst auch einen Datensatzwechsel programmieren. Die Box gibt es im Formular ja nur 1x, die nächste Box ist ja der nächste Datensatz.
Warum machst Du das nicht mit einer einfachen Aktualisierungsabfrage (ggf. gefiltert) ?
Hallo,
ja, hab ich auch gemerkt und entsprechend korrigiert.
Dim rs As DAO.Recordset
' Datensatzquelle des Formulars durchlaufen
Set rs = Me.RecordsetClone
With rs
If Not .EOF Then .MoveFirst
Do While Not .EOF
.Edit
!genehmigt = True ' <-- Name des gebundenen Feldes
.Update
.MoveNext
Loop
End With
' Formular neu abgleichen, damit Änderungen sichtbar werden
Me.Requery
Hallo,
ZitatIf Not .EOF Then .MoveFirst
Do While Not .EOF
??? ::)
So etwas nenne ich doppelt gemoppelt! Not. EOF hintereinander zweimal abfragen gibt doch keinen Sinn.
Nach RecordsetClone ist immer der erste Datensatz aktiviert, wenn welche vorhanden sind. Also ein simples "Do While Not .EOF" hätte gereicht.
Wichtiger wäre ein
Set rs = Nothing gewesen, wenn das Recordset nicht mehr gebraucht wird!
Knobbi38
Hallo,
mit der genannten Aktualisierungsabfrage wird das zu einem Einzeiler.
Das mit dem EOF entfällt dann auch komplett.
@klaus:
Im Prinzip schon, hier kommt es jedoch darauf an, ob Filter des Formulars mit berücksichtigt werden müssen oder nicht, d.h., eine Aktualisierungsabfrage müsste ggf. dynamisch angepasst werden.
Grub Knobbi38
@UlrichZitat... müsste ggf. dynamisch angepasst werden.
Das habe ich in #1 schon angedeutet.