ник: osmor
а кто такой NZKposl ? в коде его нет...
вообще какая-то каша,
вот например:
Set NZK = CurrentDb.OpenRecordset("Таблица1")
If Not NZK.EOF Then
NZK.MoveLast
Set NZK = CurrentDb.OpenRecordset("Таблица1")
End If
|
перевожу на русский:
открыть рекордсет по таблице Таблица1 и присвоить его переменной NZK
если была попытка выйти за последнюю запись рекордсета то
перейти на последнюю запись рекордсета
открыть рекордсет по таблице Таблица1 и присвоить его переменной NZK
конец если
|
где логика?
еще
NZK.AddNew
NZKsled = (Left(NZK![Поле_кода], 3))
NomerZK_auto = String(3 - Len(NZKsled), 0) & (NZKsled + 1) & "09-M"
|
Вы добавляете запись в рекордсет
берете значение поля Поле_кода из новой добавленной записи (если значение по умолчанию для поля не задано, то будет null)
потом вы к этому значению добавляете 1 и собираете все в код. зачем добавлять 1 если поле и так должно содержать код для новой записи (если там вообще есть значение)
Кстати у вас не вылетает сообщение об ошибке про неверное использование NULL на строке
NZKsled = (Left(NZK![Поле_кода], 3))
?
На мой взгляд было бы проще создать числовое поле содержащее номе по порядку, его увеличивать при добавлении записи (используя для этого dmax(....) +1, а уж пользователю можно выводить собранное значение, и отформатированное нужным образом значение, тогда порядковый номер не нужно будет каждый раз вычленять из собранного.
Кроме того как только вы выйдите за пределы 999 (т.е. трехзначного номера, то код будет работать неверно)