Как уведомить, когда флажок установлен - PullRequest
0 голосов
/ 15 февраля 2019

Изменение флажка не распознается, когда проверка выполняется пользовательской функцией.

У нас есть форма, в которой можно щелкнуть флажки.В этом случае запись будет добавлена ​​в список, который будет обновлен функцией сохранения.И есть упомянутая функция для проверки всех флажков, но она не работает, как когда я нажимаю на отдельный флажок.

код «Выбрать все»

Private Sub Befehl83_Click()
    With Me.RecordsetClone
        .MoveFirst
        Do Until .EOF
            .Edit
            !visited = True
            .update
            .MoveNext
        Loop
    End With
End Sub

нажал на флажок

Private Sub chkVisited_Click()
    If Not visitedList.Contains(Me.Form.Recordset.Fields("trainingMeasureID").Value) Then
        visitedList.Add Me.Form.Recordset.Fields("trainingMeasureID").Value
    Else
        visitedList.Remove Me.Form.Recordset.Fields("trainingMeasureID").Value
    End If

End Sub

В настоящее время состояние флажков не сохраняется при использовании функции выбора всех.Только когда флажок выбран индивидуально.

В обоих случаях он должен сохраняться правильно.

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

Вот не такое идеальное решение:

Private Sub Befehl83_Click()
    With Me.Recordset
        .MoveFirst
        Do Until .EOF
            .Edit
            .Fields("visited") = True
            .Update
            Call chkVisited_Click()
            .MoveNext
        Loop
    End With
End Sub

Это будет активно обновлять набор записей, вы фактически увидите, как активная запись перемещается в форме.

Другое решение будетперестроить ваш код и выполнить ваши обновления непосредственно в базовый источник данных на основе набора записей вашей формы.Затем обновите свой список соответствующим образом.

Согласно документации, RecordsetClone является доступной только для чтения копией набора записей формы.https://docs.microsoft.com/en-us/office/vba/api/access.form.recordsetclone

0 голосов
/ 15 февраля 2019

Используйте событие AfterUpdate :

Private Sub Befehl83_Click()

    With Me.RecordsetClone
        .MoveFirst
        Do Until .EOF
            If !visited.Value = False Then
                .Edit
                !visited.Value = True
                .update
            End If
            .MoveNext
        Loop
    End With

End Sub
...