|
|
|
| Как сделать так чтобы счетчик начал отсчет не с 1, а с 600 например??? | |
|
| |
|
|
|
| Добавить запросом на добавление запись с нужным значением счетчика
потом ее удалить
дальше записи будут добавляться начиная с добавленной записи
Вообще поле счетчик рекомендуется использовать ТОЛЬКО для создания уникального ключа записи, но ни для чего другого.
Вы похоже пытаетесь возложить на счетчик несвойственные ему функции | |
|
| |
|
|
|
| Мне просто нужно поле, где считались бы номера по порядку 1,2,3 и тд при добавлении новой записи А как сделать поле наподобие счетчика??? | |
|
| |
|
|
|
| использовать счетчик для этих целей не рекомендуется.
т.к. очень вероятны пропуски.
в случае если база однопользовательская можно при создании использовать функцию DCount или Dmax для генерации нового номера
Если многопользовательская, то схема должна быть сложнее учитывающая что несколько пользователей могут вводить данные одновременно, а так же кто-то может попытаться отказаться от ввода после начала.
Вообще стоит понять зачем вам нумерация? Так ли вам важно что бы номера шли по порядку? что будет если в последствии запись с каким-то номером будет удалена? | |
|
| |
|
|
|
| Я делаю базу для секретаря в приемной шефа по учету входящей и исходящей документации, а нумерация нужна чтобы присваивать входящий/исходящий номер документу (потом ставиться штамп на документе и туда вписывается этот номер)... Записи из базы удалятся не будут от начала и до конца года, а в начале нового года будет начата пустая база с единицы... | |
|
| |
|
|
|
| Есть таблица "Входящие_документы", в ней поле "Входящий_№" (числовое), пытаюсь сделать так:
На событие поля "До обновления", пишу
Ме.Входящий_№=nz(DMax("[Входящий_№]","Входящие_документы"),0)+1
...но чет не получается... Help!!!!!!!!!! | |
|
| |
|
|
|
| Событие "До обновления" в этом поле не будет происходить
Напишите в свойство "Значение по умолчанию" поля "Входящий_№"
=nz(DMax("[Входящий_№]","[Входящие_документы]"),0)+1 | |
|
| |
|
37 Кб. |
|
| Та же хрень. Может я чего-то опять не догнал. Пробую по написаному - не получается. Выдает "Задано значение для операции без оператора".
Даю гоблин-вариант: В форму вставь скрытую формочку на групповой запрос по полю с функцией max. Далее по определенному событию (курсор в некоторое поле или еще как-то) обновляй значение в скрытой форме. В поле, где ведется порядковый номер вычисляй очередной. Может неграмотно с точки зрения программирования, но работает безукоризненно.
Вот примерное:
дорабатывай | |
|
| |
|
|
|
| автор: osmor (28.07.2009 в 15:16) личное сообщение
Событие "До обновления" в этом поле не будет происходить
Напишите в свойство "Значение по умолчанию" поля "Входящий_№"
=nz(DMax("[Входящий_№]","[Входящие_документы]"),0)+1 |
ИМХО В этом случае пока запись не сохранена, есть вероятность того, что с другого компьютера будет добавлена запись с тем же номером.
Не лучше ли хранить текущий номер в отдельной таблице, который увеличивать на 1 после создания новой записи | |
|
| |
|
|
|
| База одно-пользовательская. Вероятность стремится к 0. | |
|
| |
|
42 Кб. |
|
| Бли-ииин! Виноват дурак исправлюсь.
Не Max у меня а Count!
Эта хрень считает количество строк, а следовательно количество записей. Хотя хрен редьки не слаще, но в начальном положении, когда по умолчанию 0 в номере, берет надежней.
(Программеры, то что это утопия знаю. Но ведь работает.) | |
|
| |
|
|
|
| И правда Osmor, почему ругается "Ошибка синтаксиса во введенном выражении"??? | |
|
| |
|
23 Кб. |
|
| вероятно нужно заменить "," на ";"
но вообще сложно так сказать...
см пример | |
|
| |
|
|
|
| спасибо, все заработало!!! | |
|
| |
|
|
|
| Добрый день,
Как создать счетчик c уникальным номером, нашел в одной из недавних дискуссий (=nz(DMax("DocNum";"tbl1");0)+1). Спасибо авторам за страницу и участникам горячего диспута. А как создать уникальный номер, который бы начинался с шестизначной цифры в форме, к примеру, "000001". Пытался манипулировать c "Input Mask". Может кто-то сталкивался с похожим вопросом. Заранее благодарю. | |
|
| |
|
|
|
| А как все таки можно организовать раздачу порядковых номеров в случае многопользовательской БД? | |
|
| |
|
|
|
| Да. Вопрос еще тот.
Osmor - все работает, но есть одно но. В случае удаления записи прибавляет зараза единицу.
Поле заблокировано не зря - это понятно. Но можно ли как-то кодом (нажатием на кнопку) разблокировать его для корректуры?
Типа Доступ - да, Блокировка - нет. Или как-то типа так?
DoCmd Forms![Поле], , , , acПолеEdit
DoCmd Forms![Поле], , , , acПолеReadOnly
Последние две строки неработоспособны, но главное направление. | |
|
| |
|
|
|
| В случае удаления записи прибавляет зараза единицу. |
В смысле если удалить запись которая была уже ранее создана?
Ну так естественно, вопрос о заполнении пропусков должен решаться сначала на уровне "нужно- не нужно", в 90% случаев повторное использование номеров может привести к проблемам.
Для доступа к полю нужно менять свойства Enabled и Locked
Этот пример приемлем только для одно пользовательского режима. | |
|
| |
|
|
|
| Будет время попробую описать вариант. Сейчас некогда | |
|
| |
|
|
|
| Добрый день,
Как создать счетчик c уникальным номером, нашел в одной из недавних дискуссий (=nz(DMax("DocNum";"tbl1");0)+1). Спасибо авторам за страницу и участникам горячего диспута. А как создать уникальный номер, который бы начинался с шестизначной цифры в форме, к примеру, "000001". Пытался манипулировать c "Input Mask". Может кто-то сталкивался с похожим вопросом. Заранее благодарю. | |
|
| |
|
|
|
| сделайте обычный числовой нумератор, при отображении в форме/отчете можно добавлять к нему что угодно
'0000001" & cstr(ID)
или используйте функцию format
format(ID,"0000001#") | |
|
| |
|
|
|
| это просто
ведь пользователю без разницы как вы ведете счет в своей базе данных
ему главное то что он видит - давайте его обманем
создадим поле счетчик числовое
а пользователю будем показывать другое текстовое поле в котором пропишем
=right("000000" & [поле счетчик];6)
вот и все | |
|
| |