powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как хранить счетчик с номерами накладных
10 сообщений из 35, страница 2 из 2
Как хранить счетчик с номерами накладных
    #38535207
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wamacoСоздаете одну запись с нач.номером. далее при записи документа присв.номер и увеличиваете нумератор на 1. Все в одной транзакции.
Все.
Отпустили 100 накладных за 10 дней. Теперь вспомнили, что нужно удалить 1-ую накладную, отпущенную в первый день. Твои действия? Не понимаю, чем тебе поможет отдельная табличка и чем она лучше хранения порядкового номера непосредственно в рабочей таблице.
...
Рейтинг: 0 / 0
Как хранить счетчик с номерами накладных
    #38536234
wamaco
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУwamacoСоздаете одну запись с нач.номером. далее при записи документа присв.номер и увеличиваете нумератор на 1. Все в одной транзакции.
Все.
Отпустили 100 накладных за 10 дней. Теперь вспомнили, что нужно удалить 1-ую накладную, отпущенную в первый день. Твои действия? Не понимаю, чем тебе поможет отдельная табличка и чем она лучше хранения порядкового номера непосредственно в рабочей таблице.

Задним числом удалить накладную не верное решение. Снять участие в учете это можно.
Поэтому номер останется за существующей накладной, пусть и не участвующей в учете.
Второе, отдельная таблица будет хранить все нумераторы документов, это удобно.
Плюс есть возможность устанавливать нумерацию с любого номера.
Плюс легко скидывать нумерацию за периоды и т.д.
...
Рейтинг: 0 / 0
Как хранить счетчик с номерами накладных
    #38536298
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wamacoЗадним числом удалить накладную не верное решение. Снять участие в учете это можно.
Поэтому номер останется за существующей накладной, пусть и не участвующей в учете.
Правильно, этот процесс называется сторно, как я ранее и говорил.

wamacoВторое, отдельная таблица будет хранить все нумераторы документов, это удобно.
Плюс есть возможность устанавливать нумерацию с любого номера.
Плюс легко скидывать нумерацию за периоды и т.д.
Sequence?
...
Рейтинг: 0 / 0
Как хранить счетчик с номерами накладных
    #38536477
wamaco
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot МСУ]wamacoSequence?

Sequence... Sequence...
...
Рейтинг: 0 / 0
Как хранить счетчик с номерами накладных
    #38536616
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Одной строкой (начиная с SQL Server 2005), предпочтительно делать в отдельной транзакции:

Код: sql
1.
update [Sequence] set [Number] = [Number] + 1 output inserted.[Number]



Sequence -- это табличка с одним полем.
...
Рейтинг: 0 / 0
Как хранить счетчик с номерами накладных
    #38536790
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нахлобуч,

Код: c#
1.
NEXT VALUE FOR MySequence
...
Рейтинг: 0 / 0
Как хранить счетчик с номерами накладных
    #38537157
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУНахлобуч,

Код: c#
1.
NEXT VALUE FOR MySequence

"Не взлетит" (с)
Sequence NumbersThe sequence object generates numbers according to its definition, but the sequence object does not control how the numbers are used. Sequence numbers inserted into a table can have gaps when a transaction is rolled back, when a sequence object is shared by multiple tables, or when sequence numbers are allocated without using them in tables. When created with the CACHE option, an unexpected shutdown, such as a power failure, can lose the sequence numbers in the cache
...
Рейтинг: 0 / 0
Как хранить счетчик с номерами накладных
    #38537174
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvМСУНахлобуч,

Код: c#
1.
NEXT VALUE FOR MySequence

"Не взлетит" (с)
Sequence NumbersThe sequence object generates numbers according to its definition, but the sequence object does not control how the numbers are used. Sequence numbers inserted into a table can have gaps when a transaction is rolled back, when a sequence object is shared by multiple tables, or when sequence numbers are allocated without using them in tables. When created with the CACHE option, an unexpected shutdown, such as a power failure, can lose the sequence numbers in the cache

Взлетит. Выделил красным.

По поводу кэша изучаем матчасть.

МатчастьЕсли компонент Компонент Database Engine непредвиденно завершает работу (например, из-за сбоя электропитания), то последовательность перезапускается с номера, считываемого из системных таблиц (39). Все порядковые номера, выделенные в память (но не запрошенные пользователем или приложением), теряются. При такой обработке возможны пропуски в номерах, однако гарантируется, что одно значение ни в коем случае не будет дважды назначено одному объекту последовательности, если для нее не задан параметр CYCLE или не выполнен перезапуск вручную.
Кэш хранится в памяти путем отслеживания текущего значения (последнего назначенного) и количества значений, оставшихся в кэше. Таким образом, объем памяти, используемый для кэша, всегда равен размеру двух экземпляров типа данных объекта последовательности.
Если установить аргумент кэша в значение NO CACHE, то текущее значение последовательности будет записываться в системные таблицы при каждом использовании последовательности. Это может снизить производительность за счет увеличения числа обращений к диску, но снижает вероятность нежелательных пропусков номеров. Пропуски по-прежнему возможны, если номера запрашиваются с помощью функции NEXT VALUE FOR или процедуры sp_sequence_get_range, однако это означает, что пропущенные номера не используются либо используются в незафиксированных транзакциях.
Если в объекте последовательности используется параметр CACHE, то при перезапуске объекта последовательности или изменении свойств INCREMENT, CYCLE, MINVALUE, MAXVALUE или размера кэша кэш записывается в системные таблицы до выполнения изменения. Затем кэш перезагружается, начиная с текущего значения (т. е. числа не пропускаются). Изменение размера кэша вступает в силу немедленно.
...
Рейтинг: 0 / 0
Как хранить счетчик с номерами накладных
    #38537194
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУsphinx_mvпропущено...
"Не взлетит" (с)
пропущено...


Взлетит. Выделил красным.А роллбэк почему пропустил?
МСУПо поводу кэша изучаем матчасть.
Если стоит задача "получить номер документа без пропусков нумерациии", то на "автосчетчиках" любого вида она не решается.
Так что "не взлетит"... :)

А вот если завести табличку что-то типа "журнал регистрации документов" и брать номер документа уже из него, то может получиться...
...
Рейтинг: 0 / 0
Как хранить счетчик с номерами накладных
    #38537268
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvМСУпропущено...


Взлетит. Выделил красным.А роллбэк почему пропустил?
МСУПо поводу кэша изучаем матчасть.
Если стоит задача "получить номер документа без пропусков нумерациии", то на "автосчетчиках" любого вида она не решается.
Так что "не взлетит"... :)

А вот если завести табличку что-то типа "журнал регистрации документов" и брать номер документа уже из него, то может получиться...

Так я тоже могу руками крутануть номер в табличке и у тогда будут дырки. Точно так же и с сиквенсом. Нехрен его крутить тем, кому не нужно. Не вижу принципиальной разницы.
...
Рейтинг: 0 / 0
10 сообщений из 35, страница 2 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как хранить счетчик с номерами накладных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]