Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 с НГ надо чтобы Autonumber начался с нуля  [new]
FATE
Member

Откуда: Рига
Сообщений: 197
есть махонькая БД, там весь год регистрировалась данные (Nr - Autonumber). Как сделать так чтобы с 1 января счетчики обнулились и снова пошли с 1 вперед, но при этом все старые записи остались на месте под своими номерами?
20 дек 06, 10:56    [3558496]     Ответить | Цитировать Сообщить модератору
 Re: с НГ надо чтобы Autonumber начался с нуля  [new]
АлексейЕ
Guest
В данной постановке задачи - ни как.
Придется отказываться от Autonumber, или удалять старые записи.
20 дек 06, 11:00    [3558514]     Ответить | Цитировать Сообщить модератору
 Re: с НГ надо чтобы Autonumber начался с нуля  [new]
mds_world
Member

Откуда: Ташкент
Сообщений: 27549
Как вариант - можно ввести новое поле Счетчик, а старое Nr останется.
20 дек 06, 11:05    [3558560]     Ответить | Цитировать Сообщить модератору
 Re: с НГ надо чтобы Autonumber начался с нуля  [new]
FATE
Member

Откуда: Рига
Сообщений: 197
а можно попподробнее про оба варианта? как это реализовать?
P.S. старые записи точно должны остатся под своими номерами.
20 дек 06, 11:12    [3558614]     Ответить | Цитировать Сообщить модератору
 Re: с НГ надо чтобы Autonumber начался с нуля  [new]
FATE
Member

Откуда: Рига
Сообщений: 197
mds_world
Как вариант - можно ввести новое поле Счетчик, а старое Nr останется.


нового поля не должно быть - должно остатся столько же полей сколько есть.
20 дек 06, 11:14    [3558638]     Ответить | Цитировать Сообщить модератору
 Re: с НГ надо чтобы Autonumber начался с нуля  [new]
Guest ++
Guest
FATE
mds_world
Как вариант - можно ввести новое поле Счетчик, а старое Nr останется.


нового поля не должно быть - должно остатся столько же полей сколько есть.


тогда никак!
20 дек 06, 11:16    [3558650]     Ответить | Цитировать Сообщить модератору
 Re: с НГ надо чтобы Autonumber начался с нуля  [new]
АлексейЕ
Guest
FATE
mds_world
Как вариант - можно ввести новое поле Счетчик, а старое Nr останется.


нового поля не должно быть - должно остатся столько же полей сколько есть.


Из запасов
Вопрос: Определение следующего по порядку номера без использования формата AutoNumber

Совет:
Если повесить этот код на событие Form_BeforeUpdate (до обновления), тогда номер пересчитается непосредственно перед сохранением новой записи. (Ведь кто-то из пользователей все равно первым сохранит запись? Значит для следующего пользователя эта новая запись и будет большей.)
Только не надо забывать про NewRecord. А то при любом изменении любой записи (не новой) будет пересчитываться номер
короче:

Private Sub Form_BeforeUpdate(Cancel As Integer)
If NewRecord Then ИнвНомер.Value = nz(DMax("[ИнвНомер]", "ИнвНомерТехники"),0) + 1
End Sub
20 дек 06, 11:19    [3558681]     Ответить | Цитировать Сообщить модератору
 Re: с НГ надо чтобы Autonumber начался с нуля  [new]
msn13
Member

Откуда: Скорый поезд №42
Сообщений: 1372
mds_world
Как вариант - можно ввести новое поле Счетчик, а старое Nr останется.

ой ли
Счетчик заполнит все значения и 0 не получиться
20 дек 06, 11:20    [3558692]     Ответить | Цитировать Сообщить модератору
 Re: с НГ надо чтобы Autonumber начался с нуля  [new]
FATE
Member

Откуда: Рига
Сообщений: 197
хм....а если снять Autonumber с поля (Nr.) и к кнопке "Новая запись" прописать чтобы при создании новой записи прибавлял 1 к предыдущему значению (Nr.)?
такое реально осуществить? и если возможно, то хоть примерный набросок кода
20 дек 06, 11:22    [3558722]     Ответить | Цитировать Сообщить модератору
 Re: с НГ надо чтобы Autonumber начался с нуля  [new]
mds_world
Member

Откуда: Ташкент
Сообщений: 27549
msn13
ой ли
Счетчик заполнит все значения и 0 не получиться
Это точно. Значит не автоинкремент должен быть.

Автор выдвигает требования екселевской идеологии. А аксе их сложно поддержать
20 дек 06, 11:28    [3558751]     Ответить | Цитировать Сообщить модератору
 Re: с НГ надо чтобы Autonumber начался с нуля  [new]
Allll
Member

Откуда:
Сообщений: 1435
А почему "сложно"?

А если как-то так:
DMax("Поле_с_номером", "Таблица", "Год = 2007")+1
Поле_с_номером - не счётчик
20 дек 06, 11:48    [3558901]     Ответить | Цитировать Сообщить модератору
 Re: с НГ надо чтобы Autonumber начался с нуля  [new]
FATE
Member

Откуда: Рига
Сообщений: 197
АлексейЕ
FATE
mds_world
Как вариант - можно ввести новое поле Счетчик, а старое Nr останется.


нового поля не должно быть - должно остатся столько же полей сколько есть.


Из запасов
Вопрос: Определение следующего по порядку номера без использования формата AutoNumber

Совет:
Если повесить этот код на событие Form_BeforeUpdate (до обновления), тогда номер пересчитается непосредственно перед сохранением новой записи. (Ведь кто-то из пользователей все равно первым сохранит запись? Значит для следующего пользователя эта новая запись и будет большей.)
Только не надо забывать про NewRecord. А то при любом изменении любой записи (не новой) будет пересчитываться номер
короче:

Private Sub Form_BeforeUpdate(Cancel As Integer)
If NewRecord Then ИнвНомер.Value = nz(DMax("[ИнвНомер]", "ИнвНомерТехники"),0) + 1
End Sub


а что надо с NewRecord сделать?
20 дек 06, 11:51    [3558935]     Ответить | Цитировать Сообщить модератору
 Re: с НГ надо чтобы Autonumber начался с нуля  [new]
msn13
Member

Откуда: Скорый поезд №42
Сообщений: 1372
Allll
А почему "сложно"?

А если как-то так:
DMax("Поле_с_номером", "Таблица", "Год = 2007")+1
Поле_с_номером - не счётчик

тогда нужно добавлять поле год, и делать ключ по 2м полям, а автору это не подходит
20 дек 06, 11:54    [3558957]     Ответить | Цитировать Сообщить модератору
 Re: с НГ надо чтобы Autonumber начался с нуля  [new]
не со зла...
Guest
сделайте над слбой усилие, прочтите месный фак, там про счетчики очень хорошо написано
20 дек 06, 11:58    [3558997]     Ответить | Цитировать Сообщить модератору
 Re: с НГ надо чтобы Autonumber начался с нуля  [new]
Fat Lamer
Member

Откуда:
Сообщений: 360
А после решения проблемы с нумерацией автору написать на бумажке крупными буквами: "Никогда не привязывать нумерацию документов к полю с типом Счетчик! Пользователь никогда не должен видеть и использовать поле с типом Счетчик! Поля с типом Счетчик должны использоваться только внутри базы!" и повесить на стенку.
А если серьезно, то либо тип поля придется менять, либо вводить еще одно поле для хранения номера документа. ИМХО лучше ввести дополнительное поле и воспользоваться приведенными здесь советами по формированию номера.
20 дек 06, 12:11    [3559105]     Ответить | Цитировать Сообщить модератору
 Re: с НГ надо чтобы Autonumber начался с нуля  [new]
FATE
Member

Откуда: Рига
Сообщений: 197
не со зла...
сделайте над слбой усилие, прочтите месный фак, там про счетчики очень хорошо написано

там для нормальных людей написано, а мне надо как для "особо одаренных"
20 дек 06, 12:26    [3559221]     Ответить | Цитировать Сообщить модератору
 Re: с НГ надо чтобы Autonumber начался с нуля  [new]
FATE
Member

Откуда: Рига
Сообщений: 197
Private Sub Form_BeforeUpdate(Cancel As Integer)
If NewRecord Then ingoing_org_id.Value = Nz(DMax("[ingoing_org_id]", "Admin_Ingoing_doc_Company"), 0) + 1
End Sub

это все работает на ура.
но как сделать чтобы нумерация шла с 1, а не продолжалась?
20 дек 06, 13:12    [3559624]     Ответить | Цитировать Сообщить модератору
 Re: с НГ надо чтобы Autonumber начался с нуля  [new]
mds_world
Member

Откуда: Ташкент
Сообщений: 27549
автор
но как сделать чтобы нумерация шла с 1, а не продолжалась?
А вы в DMax пропишите условие для года Year(Date()). Тогда будет искать только внутри текущего года.
20 дек 06, 13:23    [3559736]     Ответить | Цитировать Сообщить модератору
 Re: с НГ надо чтобы Autonumber начался с нуля  [new]
Allll
Member

Откуда:
Сообщений: 1435
У документа, кроме номера, наверняка, есть ещё и дата.
Иначе, как отличить документ №1, созданный в 2006 году, от №1 в 2007 году?

If NewRecord Then ingoing_org_id.Value = Nz(DMax("[ingoing_org_id]", "Admin_Ingoing_doc_Company", "year(Поле_с_датой_документа) = " & Year(Now)), 0) + 1

Если в текущем году ещё не было документов, то
DMax вернёт Null,
Nz "пребразует" Null в 0,
0+1=>1

Вроде должно работать.
20 дек 06, 13:25    [3559745]     Ответить | Цитировать Сообщить модератору
 Re: с НГ надо чтобы Autonumber начался с нуля  [new]
FATE
Member

Откуда: Рига
Сообщений: 197
спасибо!
все работает.
20 дек 06, 15:08    [3560608]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить