Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Счетчик не с единицы
 
 автор: zhebov_andrey   (28.07.2009 в 10:13)   личное сообщение
 
 

Как сделать так чтобы счетчик начал отсчет не с 1, а с 600 например???

  Ответить  
 
 автор: osmor   (28.07.2009 в 11:21)   личное сообщение
 
 

Добавить запросом на добавление запись с нужным значением счетчика
потом ее удалить
дальше записи будут добавляться начиная с добавленной записи
Вообще поле счетчик рекомендуется использовать ТОЛЬКО для создания уникального ключа записи, но ни для чего другого.
Вы похоже пытаетесь возложить на счетчик несвойственные ему функции

  Ответить  
 
 автор: zhebov_andrey   (28.07.2009 в 11:43)   личное сообщение
 
 

Мне просто нужно поле, где считались бы номера по порядку 1,2,3 и тд при добавлении новой записи А как сделать поле наподобие счетчика???

  Ответить  
 
 автор: osmor   (28.07.2009 в 11:49)   личное сообщение
 
 

использовать счетчик для этих целей не рекомендуется.
т.к. очень вероятны пропуски.
в случае если база однопользовательская можно при создании использовать функцию DCount или Dmax для генерации нового номера
Если многопользовательская, то схема должна быть сложнее учитывающая что несколько пользователей могут вводить данные одновременно, а так же кто-то может попытаться отказаться от ввода после начала.
Вообще стоит понять зачем вам нумерация? Так ли вам важно что бы номера шли по порядку? что будет если в последствии запись с каким-то номером будет удалена?

  Ответить  
 
 автор: zhebov_andrey   (28.07.2009 в 13:15)   личное сообщение
 
 

Я делаю базу для секретаря в приемной шефа по учету входящей и исходящей документации, а нумерация нужна чтобы присваивать входящий/исходящий номер документу (потом ставиться штамп на документе и туда вписывается этот номер)... Записи из базы удалятся не будут от начала и до конца года, а в начале нового года будет начата пустая база с единицы...

  Ответить  
 
 автор: zhebov_andrey   (28.07.2009 в 14:23)   личное сообщение
 
 

Есть таблица "Входящие_документы", в ней поле "Входящий_№" (числовое), пытаюсь сделать так:
На событие поля "До обновления", пишу
Ме.Входящий_№=nz(DMax("[Входящий_№]","Входящие_документы"),0)+1
...но чет не получается... Help!!!!!!!!!!

  Ответить  
 
 автор: osmor   (28.07.2009 в 15:16)   личное сообщение
 
 

Событие "До обновления" в этом поле не будет происходить
Напишите в свойство "Значение по умолчанию" поля "Входящий_№"
=nz(DMax("[Входящий_№]","[Входящие_документы]"),0)+1

  Ответить  
 
 автор: Гоблин   (28.07.2009 в 15:54)   личное сообщение
37 Кб.
 
 

Та же хрень. Может я чего-то опять не догнал. Пробую по написаному - не получается. Выдает "Задано значение для операции без оператора".

Даю гоблин-вариант: В форму вставь скрытую формочку на групповой запрос по полю с функцией max. Далее по определенному событию (курсор в некоторое поле или еще как-то) обновляй значение в скрытой форме. В поле, где ведется порядковый номер вычисляй очередной. Может неграмотно с точки зрения программирования, но работает безукоризненно.
Вот примерное:
дорабатывай

  Ответить  
 
 автор: Гамлет   (28.07.2009 в 20:50)   личное сообщение
 
 

автор: osmor (28.07.2009 в 15:16) личное сообщение
Событие "До обновления" в этом поле не будет происходить
Напишите в свойство "Значение по умолчанию" поля "Входящий_№"
=nz(DMax("[Входящий_№]","[Входящие_документы]"),0)+1


ИМХО В этом случае пока запись не сохранена, есть вероятность того, что с другого компьютера будет добавлена запись с тем же номером.
Не лучше ли хранить текущий номер в отдельной таблице, который увеличивать на 1 после создания новой записи

  Ответить  
 
 автор: Lukas   (28.07.2009 в 21:27)   личное сообщение
 
 

База одно-пользовательская. Вероятность стремится к 0.

  Ответить  
 
 автор: Гоблин   (28.07.2009 в 22:23)   личное сообщение
42 Кб.
 
 

Бли-ииин! Виноват дурак исправлюсь.
Не Max у меня а Count!
Эта хрень считает количество строк, а следовательно количество записей. Хотя хрен редьки не слаще, но в начальном положении, когда по умолчанию 0 в номере, берет надежней.

(Программеры, то что это утопия знаю. Но ведь работает.)

  Ответить  
 
 автор: zhebov_andrey   (29.07.2009 в 09:45)   личное сообщение
 
 

И правда Osmor, почему ругается "Ошибка синтаксиса во введенном выражении"???

  Ответить  
 
 автор: osmor   (29.07.2009 в 11:38)   личное сообщение
23 Кб.
 
 

вероятно нужно заменить "," на ";"
но вообще сложно так сказать...
см пример

  Ответить  
 
 автор: zhebov_andrey   (29.07.2009 в 13:52)   личное сообщение
 
 

спасибо, все заработало!!!

  Ответить  
 
 автор: Bruno   (26.11.2009 в 16:28)   личное сообщение
 
 

Добрый день,

Как создать счетчик c уникальным номером, нашел в одной из недавних дискуссий (=nz(DMax("DocNum";"tbl1");0)+1). Спасибо авторам за страницу и участникам горячего диспута. А как создать уникальный номер, который бы начинался с шестизначной цифры в форме, к примеру, "000001". Пытался манипулировать c "Input Mask". Может кто-то сталкивался с похожим вопросом. Заранее благодарю.

  Ответить  
 
 автор: sCandal   (29.07.2009 в 10:49)   личное сообщение
 
 

А как все таки можно организовать раздачу порядковых номеров в случае многопользовательской БД?

  Ответить  
 
 автор: Гоблин   (29.07.2009 в 19:47)   личное сообщение
 
 

Да. Вопрос еще тот.
Osmor - все работает, но есть одно но. В случае удаления записи прибавляет зараза единицу.
Поле заблокировано не зря - это понятно. Но можно ли как-то кодом (нажатием на кнопку) разблокировать его для корректуры?
Типа Доступ - да, Блокировка - нет. Или как-то типа так?
DoCmd Forms![Поле], , , , acПолеEdit
DoCmd Forms![Поле], , , , acПолеReadOnly
Последние две строки неработоспособны, но главное направление.

  Ответить  
 
 автор: osmor   (30.07.2009 в 09:01)   личное сообщение
 
 

В случае удаления записи прибавляет зараза единицу.


В смысле если удалить запись которая была уже ранее создана?
Ну так естественно, вопрос о заполнении пропусков должен решаться сначала на уровне "нужно- не нужно", в 90% случаев повторное использование номеров может привести к проблемам.
Для доступа к полю нужно менять свойства Enabled и Locked
Этот пример приемлем только для одно пользовательского режима.

  Ответить  
 
 автор: osmor   (30.07.2009 в 09:02)   личное сообщение
 
 

Будет время попробую описать вариант. Сейчас некогда

  Ответить  
 
 автор: Bruno   (26.11.2009 в 16:29)   личное сообщение
 
 

Добрый день,

Как создать счетчик c уникальным номером, нашел в одной из недавних дискуссий (=nz(DMax("DocNum";"tbl1");0)+1). Спасибо авторам за страницу и участникам горячего диспута. А как создать уникальный номер, который бы начинался с шестизначной цифры в форме, к примеру, "000001". Пытался манипулировать c "Input Mask". Может кто-то сталкивался с похожим вопросом. Заранее благодарю.

  Ответить  
 
 автор: osmor   (26.11.2009 в 16:39)   личное сообщение
 
 

сделайте обычный числовой нумератор, при отображении в форме/отчете можно добавлять к нему что угодно
'0000001" & cstr(ID)
или используйте функцию format
format(ID,"0000001#")

  Ответить  
 
 автор: snipe   (26.11.2009 в 16:40)   личное сообщение
 
 

это просто
ведь пользователю без разницы как вы ведете счет в своей базе данных
ему главное то что он видит - давайте его обманем
создадим поле счетчик числовое
а пользователю будем показывать другое текстовое поле в котором пропишем
=right("000000" & [поле счетчик];6)
вот и все

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList