Какую логику проверки VBA можно добавить, чтобы запретить пользователю вводить любое число больше 8 в Microsoft Access? - PullRequest
0 голосов
/ 11 июня 2019

У меня есть база данных, в которой сотрудники регистрируются в нерабочее время или в отпуске.Числа, которые нужно добавить, должны быть в часах, но когда кто-то делает перерыв на полчаса вместо ввода 0,5, он вводит 30. Я хочу, чтобы база данных показывала ошибку, когда они вводят что-либо более 8 часов.

Ответы [ 2 ]

0 голосов
/ 11 июня 2019

Чтобы упростить это, вы можете использовать маску ввода , например:

"90:00;1;0"

и некоторый код, например:

Private Sub Logon_KeyPress(KeyAscii As Integer)

    Dim Text        As String
    Dim Char        As String
    Dim Length      As Integer
    Dim SelStart    As Integer

    With Me!Logon
        Select Case KeyAscii
            Case vbKeyBack, vbKeyTab, Asc(vbLf), vbKeyReturn, vbKeyEscape, vbKeyF16
                ' Allow navigation etc. with
                ' BackSpace, Tab, Ctrl+Enter, Enter, Escape, Ctrl+BackSpace
            Case Is > 0
                Text = .Text
                Length = Len(Text)
                SelStart = .SelStart

                If KeyAscii < vbKey0 Or KeyAscii > vbKey9 Then
                    ' Replace any invalid entry with a zero.
                    KeyAscii = vbKey0
                End If

                Char = Mid(Text, 1 + SelStart, 1)
                If SelStart < Length Then
                    If KeyAscii <= vbKey0 + 2 Then
                        ' Always accept 0, 1, 2.
                    Else
                        ' Check if the text will represent a valid time.
                        ' If not, restore the overwritten digit.
                        Mid(Text, 1 + SelStart, 1) = Chr(KeyAscii)
                        If Not IsDate(Text) Then
                            DoCmd.Beep
                            KeyAscii = Asc(Char)
                        End If
                    End If
                End If
        End Select
    End With

End Sub

.код нужен.Все это описано в моей статье и демонстрации:

Ввод 24-часового времени с маской ввода и полной проверкой в ​​Microsoft Access

Если у вас нет учетной записиперейдите по ссылке: Прочитать статью целиком

Код также включен GitHub : VBA.TimeEntry

0 голосов
/ 11 июня 2019

Вы можете создать правило проверки в поле таблицы или в текстовом поле формы, чтобы данные были <=8.Мы не знаем, получают ли пользователи доступ к данным через форму или непосредственно в таблицу, но это будет работать в обоих случаях.

Чтобы узнать больше о проверке правил проверки: Ограничить данныеввод с использованием правил проверки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...