Benutzer mit den meisten Antworten
mehrere Datensätze im UFO markieren per VBA

Frage
-
Hallo Leute,
in einem UFO habe ich über ein Checkbox mehrere Datensätze (zusammenhängend) markiert, damit ich Änderungen über das Hauptformular durchführen kann.
Nun möchte ich nach allen Änderungen wieder den Focus auf das UFO setzen und alle Datensätze die checkbox=ja haben wieder markieren.
Wie mache ich das?
Hier mein bisheriger Ansatz. Mir fehlt nur noch die Markierung.
Private Sub cmdEdit_Click() Dim i As Long Dim F As Form Dim RS As Recordset Dim sNewValue As Variant Set F = Me!frmRechnungen.Form Set RS = CurrentDb.OpenRecordset("SELECT tblRechnungen.* FROM tblRechnungen WHERE (((tblRechnungen.chkEdit)=True));", dbOpenDynaset) RS.MoveLast RS.MoveFirst Do While RS.EOF = False Select Case Rahmen3 Case 3 If chkErhöhung = True Then sNewValue = Text16.Value + i Else sNewValue = Text16.Value End If Case Else sNewValue = Text16.Value End Select With RS .Edit .Fields(Rahmen3.Value - 1) = sNewValue .Update .MoveNext End With i = i + 1 Loop F.Recalc Dim iFirst As Long Dim iLast As Long Set RS = F.RecordsetClone For i = 1 To RS.RecordCount If RS.Fields(5) = True Then If iFirst = 0 Then iFirst = i End If iLast = i ElseIf RS.Fields(5) = False And iFirst > 0 And iLast > 0 Then Exit For
End If RS.MoveNext Next Me!frmRechnungen.SetFocus
'erster Datensatz
DoCmd.GoToRecord , , acGoTo, iFirst RunCommand acCmdSelectRecord'letzer Datensatz DoCmd.GoToRecord , , acGoTo, iLast RunCommand acCmdSelectRecord End Sub
Vielen Dank im voraus.
Gruß Ahmed
Antworten
-
Hallo NG,
heute Morgen am Frühstückstisch beim Kaffeetrinken kam mir die Lösung, und die ist so einfach.
Dim F as Form
Dim RS as Recordset
Dim iFirst as Long
Dim iLast As Long
Set F = Me!frmRechnungen.Form
Set RS = F.RecordsetClone RS.MoveFirst 'ersten Datensatz finden, der bearbeitet wurde RS.FindFirst ("chkEdit=true") iFirst = RS.AbsolutePosition + 1
Do While RS.EOF = False iLast = iLast + 1 If RS!chkEdit = False Then 'da nur zusammenhängende DS markiert werden können '=> Aussprung an dieser Stelle Exit Do End If RS.MoveNext Loop 'Focus auf UFO setzen Me!frmRechnungen.SetFocus DoCmd.GoToRecord , , acGoTo, iFirst
'Ganzen DS markieren RunCommand acCmdSelectRecord 'Im UFO einfach die Markierung erweitern Me!frmRechnungen.Form.SelHeight = iLast - 1
Gruß Ahmed
- Als Antwort markiert Ahmed Martens Freitag, 13. Dezember 2013 06:55
- Bearbeitet Ahmed Martens Freitag, 13. Dezember 2013 06:57
Alle Antworten
-
Am 12.12.2013 schrieb Ahmed Martens:
in einem UFO habe ich über ein Checkbox mehrere Datensätze (zusammenhängend) markiert, damit ich Änderungen über das Hauptformular durchführen kann.
Nun möchte ich nach allen Änderungen wieder den Focus auf das UFO setzen und alle Datensätze die checkbox=ja haben wieder markieren.
Wie mache ich das?Evtl. hilft dir dieser Ansatz: 4.5 Gleicher Datensatz nach Requery
http://www.donkarl.com?FAQ4.5
Servus
Winfried
Gruppenrichtlinien
WSUS Package Publisher
HowTos zum WSUS Package Publisher
NNTP-Bridge für MS-Foren -
Hallo Winfried,
vielen Dank für die Info. Aber mein Problem ist nicht das Finden der Datensätze, sondern die Selection des Bereiches. Ich meine die Selection über den Datensatzmarkierer.
Ich mache folgendes:
1. Es werden im UFO mehrere Datensätze markiert und alle markierten DS erhalten eine Checkbox=True
2. Im Hauptformular wird über ein Button alle markierten DS (Checkbox=True) abgeändert.
3. Anschließend möchte ich wieder in das UFO springen und alle DS mit Checkbox=True wieder markieren.Den ersten und den letzten DS kann ich über die Checkbox ermitteln. Aber wie selektiere ich diese mit VBA?
Ich springe immer nur auf den ersten DS.
Gruß Ahmed
-
Hallo NG,
heute Morgen am Frühstückstisch beim Kaffeetrinken kam mir die Lösung, und die ist so einfach.
Dim F as Form
Dim RS as Recordset
Dim iFirst as Long
Dim iLast As Long
Set F = Me!frmRechnungen.Form
Set RS = F.RecordsetClone RS.MoveFirst 'ersten Datensatz finden, der bearbeitet wurde RS.FindFirst ("chkEdit=true") iFirst = RS.AbsolutePosition + 1
Do While RS.EOF = False iLast = iLast + 1 If RS!chkEdit = False Then 'da nur zusammenhängende DS markiert werden können '=> Aussprung an dieser Stelle Exit Do End If RS.MoveNext Loop 'Focus auf UFO setzen Me!frmRechnungen.SetFocus DoCmd.GoToRecord , , acGoTo, iFirst
'Ganzen DS markieren RunCommand acCmdSelectRecord 'Im UFO einfach die Markierung erweitern Me!frmRechnungen.Form.SelHeight = iLast - 1
Gruß Ahmed
- Als Antwort markiert Ahmed Martens Freitag, 13. Dezember 2013 06:55
- Bearbeitet Ahmed Martens Freitag, 13. Dezember 2013 06:57