Генерация последовательного номера счета в MS Access VBA, # перезапуск каждый год - PullRequest
4 голосов
/ 12 сентября 2010

Мне нужно создать уникальные номера счетов для моей базы данных Access (2010). Числа должны быть в формате год + порядковый номер, например, 20101447 для 1447-го счета-фактуры за 2010 год. Я некоторое время оглядывался по сторонам, но многие результаты Google предлагают использовать автонумерацию, и я совершенно уверен, что это не очень надежный способ сделать это. (поскольку автономные номера гарантированно являются уникальными, ничего больше)

На данный момент база данных не будет использоваться сразу несколькими пользователями, но я тоже не хочу использовать полностью взломанное вместе решение.

EDIT Я также нашел этот сайт , который обсуждает последовательную нумерацию с использованием функции DMax. Сценарий № 2 - это именно то, что я имел в виду, и я думаю, что он достаточно хорош для моего варианта использования. Я позабочусь о том, чтобы пользователь был уведомлен в редком (для меня) случае изменения базы данных перед тем, как полностью ввести и сохранить новый счет.

EDIT2 К вашему сведению: Схема нумерации - это не фискальное требование, а наша специальная нумерация. Я не хотел меняться без веской причины.

Ответы [ 2 ]

3 голосов
/ 12 сентября 2010

Если у вас есть возможность изменить схему базы данных:

  • Добавить поле с порядковым номером и поле года.
  • Чтобы получить номер счета, объедините эти значения соответственно.
  • При вставке вам нужно будет получить текущий год, а затем запросить база данных для максимальной последовательной число, где год = текущий год.
  • Используйте эти значения на вставке.

Если вы не можете изменить схему базы данных:

  • Получить максимальный номер счета, где номер счета начинается с текущего год
  • Увеличение номера счета.
  • Используйте эти значения на вашей вставке.

EDIT

Если вы можете добавить другую таблицу, имейте таблицу, в которой хранится порядковый номер 'max' для каждого года. Каждая вставка блокирует таблицу, получает значение и затем увеличивает его. Думайте об этом как о вашей таблице генератора номеров счетов.

2 голосов
/ 12 сентября 2010

Решения в комплекте с примером кода

Как реализовать многопользовательские пользовательские счетчики в DAO 3.5 Игнорировать номер версии 3.5 в этой статье. Используйте любую версию DAO, соответствующую вашей версии Access.

Как реализовать многопользовательские пользовательские счетчики в Jet 4.0 и ADO 2.1 Текущая версия ADO в Windows XP SP3 - 2.8, поэтому игнорируйте часть ADO 2.1 и используйте ADO 2.8. Хотя 2.1 все равно будет работать.

Кроме того, что происходит 2 января, когда кто-то вводит счет, который должен быть датирован 31 декабря? И это произойдет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...