Для моей формы почти все бумажные формы должны иметь идентификатор, который вы вводите в одно поле. Однако в нескольких формах будут отсутствовать идентификаторы, и я хочу сгенерировать в другое поле идентификационный номер на основе ввода пользователем информации.Не могу понять, как исправить ошибку нуля
Что я хочу сделать, это создать 4-значное число, где первая цифра взята из поля usernum, а последние 3 цифры просто подсчитываются.
В первый раз, когда они нажимают кнопку, в поле usernum ничего еще нет, и я думаю, что это может быть причиной ошибки моего времени выполнения 94?
ниже мой код и линия ошибки
Private Sub Command100_Click()
'on click of button InsightId is generated
Me.idnum = NewInsightID()
End Sub
Public Function NewInsightID() As Long
Dim lngNextID As Long
'Find highest ID in the test table and add 1
lngNextID = (Me.usernum * 1000) + DMax([idnum], "test", "usernum=" & Me.usernum) + 1
'ABOVE IS THE LINE WITH ERRORS
'Assign function the value of the Next ID
NewInsightID = lngNextID
End Function
Я пробовал различные обходные пути, но ни один из них работал
ниже того, что я пытался и не работал:
lngNextID = (Me.usernum * 1000) + 1 + NZ(DMax([idnum], "test", "usernum=" & Me.usernum),0)
lngNextID = (Me.usernum * 1000) + 1 + Nz(DMax([idnum], "test", "usernum=" & Nz(Me.usernum, 0)), 0)
lngNextID = (Me.usernum * 1000) + 1 + DMax([idnum], "test", "usernum=" & Nz(Me.usernum, 0))
EDIT 2: Хорошо, сделали процесс. Вроде бы это работает, за исключением двух вещей - по какой-то причине она не начнется с 001, только 002. После этого она постепенно увеличивается на единицу. Главное - ошибка, если usernum пуст. Опять же, я не ожидаю, что это когда-либо будет, но когда дело доходит до ввода данных, я думаю, что лучше всего предположить самых тупых возможных пользователей, и поскольку я буду в отпуске, когда эта база данных будет использована, я не хотите получать сообщения об ошибках. Я пытаюсь сделать это, чтобы, если usernum пуст, они получают сообщение, которое сообщает им об ошибке и отменяет суб, но по какой-то причине оно не работает, а затем в коде появляется сообщение об ошибке Run ошибка 3075 отсутствует в выражении запроса 'usernum ='. Я предположил, что для создания этой проблемы необходимо создать окно сообщения, но я не могу заставить окно сообщения работать.
Private Sub Command100_Click()
'on click of button InsightId is generated
If usernum = Null Then
Beep
MsgBox ("you cannot leave usernum blank")
Cancel = True
Else: Me.idnum = NewInsightID()
End If
End Sub
Public Function NewInsightID() As Long
Dim lngNextID As Long
'Find highest ID in the test table and add 1
If DMax("idnum", "test", "usernum=" & Me.usernum) = Null Then
lngNextID = (Me.usernum * 1000 + 1)
Else:
lngNextID = 1 + Nz(DMax("idnum", "test", "usernum=" & Me.usernum), Me.usernum * 1000 + 1)
End If
'Assign function the value of the Next ID
NewInsightID = lngNextID
End Function
EDIT3: ааа Я решил это невероятно !!
Private Sub Command100_Click()
'on click of button InsightId is generated
If IsNull(Me.usernum) Then
Beep
MsgBox ("you cannot leave usernum blank")
Cancel = True
Else: Me.idnum = NewInsightID()
End If
End Sub
Public Function NewInsightID() As Long
Dim lngNextID As Long
'Find highest ID in the test table and add 1
If DMax("idnum", "test", "usernum=" & Me.usernum) = Null Then
lngNextID = (Me.usernum * 1000 + 1)
Else:
lngNextID = 1 + Nz(DMax("idnum", "test", "usernum=" & Me.usernum), Me.usernum * 1000)
End If
'Assign function the value of the Next ID
NewInsightID = lngNextID
End Function
ли вы имеете в виду, что пользователь Безразлично» t есть какие-либо записи в тестовой таблице, но они сами имеют идентификатор? То, что вы хотите сделать, это что-то вроде «Если DMax (.....) Is Null Then lngNextID = Me.usernum * 1000) + 1 Else lngNextID = Right (DMax (....), 3) + 1" Однако , если есть идентификаторы, введенные пользователем, которые больше, чем созданные этим процессом, вы можете столкнуться с некоторыми проблемами. – OpiesDad
Что такое usernum? – justkrys
В основном каждому пользователю (человеку, вводящему данные) присваивается однозначное число, которое является usernum. Usernum - это первая цифра для расчетного идентификатора, который является idnum. idnum будет пустым для всех пользователей до тех пор, пока первый раз они не нажмут кнопку, чтобы указать, что они должны их генерировать. Я попробую решение OpiesDad и посмотрю, как это работает – eee333