Форумы HiProg.com - MS ACCESS, VBA, VB

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

ник: 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 (т.е. трехзначного номера, то код будет работать неверно)


Ваше имя:

Пароль:

Цитировать: [quote][/quote] Код: [code][/code]
Жирный: [b][/b] Наклонный: [i][/i]
URL: [url][/url] 

Сообщение:

 Размер файла не более 50 Кбт. Большие файлы можно размещать на www.slil.ru

Прикрепить:

 

Для вставки смайлов в текст щелкните по значку.