|
Почему дублируются значения счетчика?
|
|||
---|---|---|---|
#18+
Добрый день всем! С некоторого момента в поле счетчик одной из таблиц в БД стали появлятся дубли значений этого счетчика (собственно говоря, значения счетчика стали присваиваться не начиная с уже имеющегося максимального значения, а со значения на, приблизительно, 1000 меньше этого максимального значения, отсюда, естественно, пошли дубли значений счетчика). Значения в эту таблицу заносятся через простенькую формочку, база не сетевая. Код формы - буквально, пара строк. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9.
Свойства поля счетчик: размер поля - длинное целое, новые значения - последовательные, индексированное поле - нет. Вопрос - Почему это могло случиться? Как? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2018, 10:49 |
|
Почему дублируются значения счетчика?
|
|||
---|---|---|---|
#18+
guest_rusimportв поле счетчик одной из таблиц в БД стали появлятся дубли значений этого счетчикаОно, это поле - неиндексированное, что ли? guest_rusimportПочему это могло случиться?Единственным способом изменения текущего значения счётчика, не считая прямого изменения запросом, является сжатие БД, при этом его значение теоретически сбрасывается в MAX+1... А чудес вроде как не бывает... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2018, 10:55 |
|
Почему дублируются значения счетчика?
|
|||
---|---|---|---|
#18+
Akina, авторОно, это поле - неиндексированное, что ли? Да, не индексированное авторЕдинственным способом изменения текущего значения счётчика, не считая прямого изменения запросом, является сжатие БД, при этом его значение теоретически сбрасывается в MAX+1... Сжатие иногда проводится. авторА чудес вроде как не бывает... И вот, тем не менее... Сам удивляюсь ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2018, 11:07 |
|
Почему дублируются значения счетчика?
|
|||
---|---|---|---|
#18+
Бывает такое с access, нет у него большой надежности. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2018, 11:26 |
|
Почему дублируются значения счетчика?
|
|||
---|---|---|---|
#18+
Остаётся предположить, что добавление/обновление поля счётчика некоторым кодом выполняется некорректно. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2018, 11:31 |
|
Почему дублируются значения счетчика?
|
|||
---|---|---|---|
#18+
guest_rusimport, свои пару копеек на тему счётчиков. После первых восторгов по поводу "этого замечательного счётчика" - по мере накопления некоторого опыта - изрядно поостыл в своих восторгах ) А его свойство обнуляться после сжатия базы - порой очень даже мешало. Например, после переброски в архив накладных за день и сжатия - нумерация накладных начиналась опять с 1, 2 и так далее :( В итоге практически везде вместо счётчика использую числовое поле. Программа при создании нового документа обращается к "накладным за сегодня", к "накладным из архива", определяет максимальное значение, увеличивает его на 1, и это число вписывает в новую запись в качестве номера (записи, накладной, счётчика - нужное подчеркнуть). Во всяком случае, избавил себя от приколов в поведении счётчика ;) Кста, эта же метода по определению избавляет от дублирования значений. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2018, 11:57 |
|
Почему дублируются значения счетчика?
|
|||
---|---|---|---|
#18+
TarasiosПрограмма при создании нового документа обращается к "накладным за сегодня", к "накладным из архива", определяет максимальное значение, увеличивает его на 1, и это число вписывает в новую запись в качестве номераИмхо хранение значения в служебной таблице разумнее, чем сбор отовсюду... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2018, 12:06 |
|
Почему дублируются значения счетчика?
|
|||
---|---|---|---|
#18+
Akina, тоже вариант, и в некоторых случаях я им пользуюсь, но: в тех же накладных за день - некоторые удаляются, отслеживать все эти движухи чисто для определения номера - тоже не очень удобно. К тому же, это всего лишь была иллюстрация варианта замена счётчика как метод избавления от его приколов ) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2018, 12:10 |
|
Почему дублируются значения счетчика?
|
|||
---|---|---|---|
#18+
Tarasiosв тех же накладных за день - некоторые удаляютсяДостаточно один раз постановить, что номер удалённой накладной не может использоваться - и всё... т.е. на номер накладной должно накладываться требование (дата больше == номер больше), и НЕ должно накладываться требование последовательности нумерации, в котором на самом деле нет никакого смысла. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2018, 12:27 |
|
Почему дублируются значения счетчика?
|
|||
---|---|---|---|
#18+
Akina, думаю, что нумерация накладных - явно выходит за рамки этого топика. Повторюсь - это всего лишь пример "обхода" поля счётчик ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2018, 12:51 |
|
Почему дублируются значения счетчика?
|
|||
---|---|---|---|
#18+
guest_rusimportДобрый день всем! С некоторого момента в поле счетчик одной из таблиц в БД стали появлятся дубли значений этого счетчика (собственно говоря, значения счетчика стали присваиваться не начиная с уже имеющегося максимального значения, а со значения на, приблизительно, 1000 меньше этого максимального значения, отсюда, естественно, пошли дубли значений счетчика). Значения в эту таблицу заносятся через простенькую формочку, база не сетевая. Код формы - буквально, пара строк. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9.
Свойства поля счетчик: размер поля - длинное целое, новые значения - последовательные, индексированное поле - нет. Вопрос - Почему это могло случиться? Как? Ну в принципе "наколдовать" и достичь такого эффекта может каждый, кто прочёл FAQ - "Что мы знаем про каунтеры (aka счетчики)" Если погуглить, то можно найти и куча других способов. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2018, 12:55 |
|
Почему дублируются значения счетчика?
|
|||
---|---|---|---|
#18+
guest_rusimportСвойства поля счетчик: -- размер поля - длинное целое, -- новые значения - последовательные, -- индексированное поле - нет. а разве это характеристика поля с типом=счетчик ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2018, 13:36 |
|
Почему дублируются значения счетчика?
|
|||
---|---|---|---|
#18+
ПЕНСИОНЕРКАа разве это характеристика поля с типом=счетчикДа... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2018, 13:43 |
|
Почему дублируются значения счетчика?
|
|||
---|---|---|---|
#18+
studierenНу в принципе "наколдовать" и достичь такого эффекта может каждый, кто прочёл FAQ - "Что мы знаем про каунтеры (aka счетчики)" Если погуглить, то можно найти и куча других способов. Если можно, огласите, пожалуйста, все способы (про первый - я в курсе). Хочется понять причины. Запрос на изменение структуры таблицы наврядли кто-то запускал. В это, прямо скажем, совсем не верится. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2018, 14:26 |
|
Почему дублируются значения счетчика?
|
|||
---|---|---|---|
#18+
AkinaОстаётся предположить, что добавление/обновление поля счётчика некоторым кодом выполняется некорректно. Код весь привел в первом посте. Больше там ничего нет. Кодом счетчик на изменение или присваивание , вообще, не трогаю в программе (от слова - "совсем") ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2018, 14:31 |
|
Почему дублируются значения счетчика?
|
|||
---|---|---|---|
#18+
guest_rusimportКод весь привел в первом посте. Больше там ничего нет.Надо так понимать, что именно поле КодСотрудника и есть тот самый счётчик? тогда вопрос - а есть ли возможность ручной или программной корректировки значения поля Forms!Сотрудник.КодСотрудника1? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2018, 14:36 |
|
Почему дублируются значения счетчика?
|
|||
---|---|---|---|
#18+
Тяп-ляпБывает такое с access, нет у него большой надежности. Если не сложно, подтвердите своё "бывает" конкретной ссылкой на сайт или пост в интернете. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2018, 14:36 |
|
Почему дублируются значения счетчика?
|
|||
---|---|---|---|
#18+
Akinaguest_rusimportКод весь привел в первом посте. Больше там ничего нет.Надо так понимать, что именно поле КодСотрудника и есть тот самый счётчик? тогда вопрос - а есть ли возможность ручной или программной корректировки значения поля Forms!Сотрудник.КодСотрудника1? Нет, счетчик - это поле "id"... ручной корректировки нет, естественно ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2018, 14:38 |
|
Почему дублируются значения счетчика?
|
|||
---|---|---|---|
#18+
guest_rusimport Код: vbnet 1. 2. 3. 4. 5. 6. 7.
Судя по коду у вас есть таблица "Сотрудник" с полем КодСотрудника1 и связанная с ней таблица "Допуск" тоже с полем КодСотрудника1. На какой таблице лежит форма с этим кодом? В какой из таблиц поле КодСотрудника1 имеет тип счетчик и в какой таблице оно дублируется? Потом будут еще вопросы. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2018, 15:26 |
|
Почему дублируются значения счетчика?
|
|||
---|---|---|---|
#18+
Анатолий ( Киев )Судя по коду у вас есть таблица "Сотрудник" с полем КодСотрудника1 и связанная с ней таблица "Допуск" тоже с полем КодСотрудника1. На какой таблице лежит форма с этим кодом? В какой из таблиц поле КодСотрудника1 имеет тип счетчик и в какой таблице оно дублируется? Потом будут еще вопросы. 1. Форма с приведенным кодом лежит на таблице "Допуск" 2.Поле КодСотрудника1 текстовое, в таблице "Сотрудник" оно ключевое , оно связано с таким же текстовым полем (не ключевым) в таблице "Допуск". ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2018, 15:45 |
|
Почему дублируются значения счетчика?
|
|||
---|---|---|---|
#18+
Анатолий ( Киев ), Всё,о чем я тут рассказывал, происходит с полем "id" (счетчиком) таблицы "Допуск". Программа нормально функционировала несколько лет. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2018, 15:50 |
|
Почему дублируются значения счетчика?
|
|||
---|---|---|---|
#18+
guest_rusimportВсё,о чем я тут рассказывал, происходит с полем "id" (счетчиком) таблицы "Допуск". Счетчик сбивается, если в таблицу добавить запись запросом INSERT INTO с явным указанием промежуточного значения полю-счетчику. Сжатие БД не помогает. Лечится таким же запросом на добавление одной записи с присвоением счетчику MAX+1 и ее дальнейшим удалением. После этого нумерация начнется с MAX+2. А почему у вас это поле не ключевое? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2018, 16:20 |
|
Почему дублируются значения счетчика?
|
|||
---|---|---|---|
#18+
Анатолий ( Киев )Счетчик сбивается, если в таблицу добавить запись запросом INSERT INTO с явным указанием промежуточного значения полю-счетчику. Сжатие БД не помогает. Лечится таким же запросом на добавление одной записи с присвоением счетчику MAX+1 и ее дальнейшим удалением. После этого нумерация начнется с MAX+2. А почему у вас это поле не ключевое? Запросом, кроме меня, некому, вроде, что-либо менять в таблице. Поэтому это предположение в моем случае не очень правдоподобное. Почему поле "id" не ключевое? - Да, как то так, исторически сложилось, о чем теперь не жалею (ситуацию я уже "разрулил"). Но хочется понять - почему такое может происходить. А оно, как я понял, может, раз такое случилось. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2018, 16:28 |
|
Почему дублируются значения счетчика?
|
|||
---|---|---|---|
#18+
guest_rusimportЕсли не сложно, подтвердите своё "бывает" конкретной ссылкой на сайт или пост в интернете. Спасибо. Тоже проблема со счетчиком ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2018, 17:10 |
|
Почему дублируются значения счетчика?
|
|||
---|---|---|---|
#18+
Тяп-ляпguest_rusimportЕсли не сложно, подтвердите своё "бывает" конкретной ссылкой на сайт или пост в интернете. Спасибо. Тоже проблема со счетчиком Там ситуация не моя, там база сетевая и одновременный ввод данных разными пользователями. Ещё варианты есть? Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2018, 17:33 |
|
Почему дублируются значения счетчика?
|
|||
---|---|---|---|
#18+
guest_rusimportЕщё варианты есть? У меня такое было, примерно раз в пол года то у одного, то у другого из многочисленных клиентов, но и этой статистикой можно было бы пренебречь... И это не зависит от монопольного или сетевого режима. Причина - отключение питания (сбой HDD, отказ системы, оперативной памяти) в момент добавления записи в таблицу, при этом именно счетчик становился раком, но так как от у меня еще был и ключом, то это делало работу далее невозможной... Тут нужно прикинуть - если данное место (операция) не критичное, то можно исправить счетчик, и забыть... У меня же это было самое узкое место - то место в котором был основной прирост БД, - практически ежесекундно... Я решил проблему так - задублировал это место (одну таблицу) в отдельном файле и теперь для устранения проблемы достаточно перезапустить программу (при старте файл обновляется независимо от его состояния). Таким образом проблема теоретически не решена, но теперь основной долбеж идет в отдельный файл, а в основную БД пишутся нормальные данные приличными порциями и периодически.... А если учесть, что новый файл лежит еще и на этой машине. а не в сети - то и быстродействие выросло существенно... Там если что - то я очки сегодня забыл, по смыслу смотрите... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2018, 09:25 |
|
Почему дублируются значения счетчика?
|
|||
---|---|---|---|
#18+
vmag, Спасибо за ответ. Но настораживает тот факт, что кроме нас с вами, такое ощущение, что аналогичная проблема не у кого не возникала, судя по отсутствию похожих вопросов в интернете (или, может быть, я их просто не нашел, поэтому и просил отвечающих "ткнуть меня носом"). ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2018, 09:57 |
|
Почему дублируются значения счетчика?
|
|||
---|---|---|---|
#18+
vmag, Сейчас опросил пользователя, клятвенно утверждает про при вводе данных в таблицу через эту форму подвисаний или аварийных вылетов из БД никогда не случалось. Ничего не понимаю... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2018, 10:11 |
|
Почему дублируются значения счетчика?
|
|||
---|---|---|---|
#18+
guest_rusimport, Все очень просто, - когда гаснет свет, зовут разработчика и говорят - вот свет ек и теперь не работает, но это не ваш случай, по крайней мере вы его так не позиционировали, да и в таком ракурсе позиционировать его нет смысла и так все понятно... - с точки зрения кривого кода, это тоже - не кривой код, он может быть не оптимальным, но тот факт что 2 года не было проблем, не дает право назвать код кривым... - Возможно в вашем случае тоже свет был ек, но включили - все работает... а дубли заметили не сразу... вот и получилось что вроде как ни с того ни с сего... Если бы счетчик был еще и ключом, то колом бы скорее всего стало сразу все и была бы очевидна причина... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2018, 10:16 |
|
Почему дублируются значения счетчика?
|
|||
---|---|---|---|
#18+
guest_rusimportСейчас опросил пользователя, клятвенно утверждает Это почти всегда так :) Глупо признаваться типа - да я делал потягушки и ногой выдернул шнур из системного блока... Да он мог этого и не заметить, - просто моргнул свет и все... Если это за два года было один раз - забейте и всё... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2018, 10:22 |
|
Почему дублируются значения счетчика?
|
|||
---|---|---|---|
#18+
vmag- когда гаснет свет, зовут разработчика и говорят - вот свет ек и теперь не работает, но это не ваш случайАльтернативный вариант - не закрывая приложения, оставив его на середине ввода, клиент запустил игрушку или иной процесс, комп повис или ребутнулся. В подобных случаях клиент практически никогда не воспринимает это как жёсткий офф приложения (более того - ни в жисть не признается в происшествии). ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2018, 10:23 |
|
Почему дублируются значения счетчика?
|
|||
---|---|---|---|
#18+
guest_rusimport, ну, уж если говорить про причину глюков... Насколько я "вычислил", приложения на Ассес очень не любят, когда при работе с ними через локальную сеть эта самая сеть даёт сбой. Скажем, джек выскочил из сетевой карты. Вторая любимая причина Ассеса - енто когда делается сжатие БД при подключенных клиентах... Простейшие причины, но запороть базу вообще насмерть могут :( ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2018, 10:58 |
|
Почему дублируются значения счетчика?
|
|||
---|---|---|---|
#18+
Спасибо за ответы. Но тут дело осложняется тем (а может быть, наоборот, упрощается), что у меня с пользователем полное доверие и замечательные отношения, если он говорит, что ничего такого не было, значит я это так и воспринимаю. Да и специфика рабочего процесса у нас априори определяет доверительные отношения. Т.е. врать ему просто смысла не имеет. Если он что-то замечает странное тут же обращается ко мне. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2018, 11:14 |
|
Почему дублируются значения счетчика?
|
|||
---|---|---|---|
#18+
guest_rusimport, По статистике (моей) база (хранилище) формата 2000-2003 при рабочем размере до 50 метров практически не убиваемая, хоть по сети хоть монопольно, за исключением выше описанных мажоров... При рабочем размере от 50 до 100 метров на плохом железе заметны тормоза, но тоже сносно и даже по сетке 100... Если размер больше 100 метров и сеть, то лучше выбрать другое хранилище... Естественно речь о более-менее сложной базе, таблиц на 50 с кучей связей, речь не про три сосны... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2018, 11:32 |
|
Почему дублируются значения счетчика?
|
|||
---|---|---|---|
#18+
vmag, раза три наблюдал хитрый сбой в поле "Счётчик" (служит для генерации уникального кода товара). Так вот уже три случая наблюдал, когда значение счётчика "перепрыгивало" вело отсчёт дальше. Например 100 101 102 120450 120451 120452 Не слишком сложное приложение, в сжатом виде - до 50 МБ, mde сгенерировано в 2007 Аксе, работает под AccessRuntime2007. Если за пару случаев могу только гадать (в глаза ни разу не видел тех компов, в другом городе), то за один комп чётко знаю. Локальная машина, Вин7/64, никаких левых программ, без инета, даже антивируса не стоит. Но сбой - был :( Предположительно - как раз в момент сжатия. На всякий случай сделал автоматическое предварительное резервное копирование базы перед запуском сжатия, но это просто костыль, и не объясняет саму причину сбоя :( ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2018, 11:43 |
|
Почему дублируются значения счетчика?
|
|||
---|---|---|---|
#18+
А я у себя сбоя счётчиков не помню. Может и было что-то на 97-м, но давно и неправда. Формат Access 2000, возраст 12 лет, размер 850 Мб, сетевая, работают через сервер терминалов. Ни разу не ложилась. Единственный сбой, при попытке заменить подключенную базу. База накрылась, Сжимаю раз в квартал. Растёт на 50-60 Мб в год. Таблиц за 50, Активно используются около 10, остальные время от времени. С фокусами с INSERT INTO что описывал Алексей сталкивался, но давно. Счётчики у меня все ключи и индексированные ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2018, 12:47 |
|
Почему дублируются значения счетчика?
|
|||
---|---|---|---|
#18+
JossСчётчики у меня все ключи и индексированные Тогда сбоя и не будет ) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2018, 12:54 |
|
Почему дублируются значения счетчика?
|
|||
---|---|---|---|
#18+
Ламер ЛамеровичJossСчётчики у меня все ключи и индексированные Тогда сбоя и не будет ) Не факт :) 1361526 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2018, 19:10 |
|
|
start [/forum/topic.php?all=1&fid=45&tid=1611684]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
74ms |
get tp. blocked users: |
1ms |
others: | 267ms |
total: | 430ms |
0 / 0 |