Доступ удалить разрыв строки в строке, программа сообщает, что это NULL - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть код, который делает что-то, после чего вы нажимаете ввод в текстовом поле, проблема в том, что когда вы используете Ctrl + Enter, я могу зафиксировать это событие, но в следующей строке access сообщает, что это поле, по-видимому, NULL

Private Sub Text5_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyReturn Or KeyAscii = 10 Then
    If Len(Me.Text5) = 0 Then Exit Sub


    If Val(Right(Me.Text5, 1)) > 2 Then Me.Text5 = Left(Me.Text5, Len(Me.Text5) - 1) & "0"

Так что 'Len' работает нормально, но функция 'Right' выдает 'Invalid use of null', когда я нажимаю debug и проверяю значение NULL

Я не могу понять это

Полагаю, мне нужно удалить символы новой строки, но как это сделать, когда текстовое поле пустое и каждая функция для строк выводит эту ошибку

Ответы [ 3 ]

0 голосов
/ 16 ноября 2018

Также вы можете использовать Nz и установить возвращаемое значение вашего желания в случае, если выражение равно нулю, в этом примере также vbNullString и проверить результат этой функции:

If Nz(Me.Text5, vbNullString) = vbNullString Then

или

If Len(Nz(Me.Text5, vbNullString) = 0) Then

или

If Nz(Me.Text5, 0) = 0 Then

или

If Not Nz(Me.Text5, False) Then

Конечно, вы можете сначала сохранить результат в переменной, а затем проверить и поработать с этим позже. Все, что соответствует вашим потребностям.

0 голосов
/ 01 декабря 2018

Ну, я проверяю это столько, сколько могу, и просто, когда вы используете Ctrl + Enter для поля и фиксируете нажатие клавиши, поле по какой-то причине будет нулевым, я не вижу возможности обойти это

0 голосов
/ 16 ноября 2018

Проблема с вашим чеком в том, что Len(Null) это не 0, а Null.

Есть несколько способов обойти это. Во-первых, как уже упоминалось в комментариях, вы можете просто добавить чек на IsNull:

If IsNull(Me.Text5) Or Len(Me.Text5) = 0 Then

Другой способ сделать это - заставить его объединиться, объединяя vbNullString:

If Len(Me.Text5 & vbNullString) = 0 Then
...