powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Почему дублируются значения счетчика?
38 сообщений из 38, показаны все 2 страниц
Почему дублируются значения счетчика?
    #39601633
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день всем! С некоторого момента в поле счетчик одной из таблиц в БД стали появлятся дубли значений этого счетчика (собственно говоря, значения счетчика стали присваиваться не начиная с уже имеющегося максимального значения, а со значения на, приблизительно, 1000 меньше этого максимального значения, отсюда, естественно, пошли дубли значений счетчика). Значения в эту таблицу заносятся через простенькую формочку, база не сетевая. Код формы - буквально, пара строк.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Option Compare Database

Private Sub Form_Close()
Forms!Сотрудник.[Форма допуска] = DLookup("[Форма допуска]", "Допуск", "КодСотрудника1='" & Me.КодСотрудника1 & "' and Дата=#" & Format(DMax("[Дата]", "Допуск", "КодСотрудника1='" & Me.КодСотрудника1 & "'"), "mm\/dd\/yyyy") & "#")
End Sub

Private Sub Форма_допуска_AfterUpdate()
Me.КодСотрудника1 = Forms!Сотрудник.КодСотрудника1
End Sub




Свойства поля счетчик: размер поля - длинное целое, новые значения - последовательные, индексированное поле - нет.

Вопрос - Почему это могло случиться? Как?
...
Рейтинг: 0 / 0
Почему дублируются значения счетчика?
    #39601635
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_rusimportв поле счетчик одной из таблиц в БД стали появлятся дубли значений этого счетчикаОно, это поле - неиндексированное, что ли?

guest_rusimportПочему это могло случиться?Единственным способом изменения текущего значения счётчика, не считая прямого изменения запросом, является сжатие БД, при этом его значение теоретически сбрасывается в MAX+1...
А чудес вроде как не бывает...
...
Рейтинг: 0 / 0
Почему дублируются значения счетчика?
    #39601647
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,
авторОно, это поле - неиндексированное, что ли?


Да, не индексированное

авторЕдинственным способом изменения текущего значения счётчика, не считая прямого изменения запросом, является сжатие БД, при этом его значение теоретически сбрасывается в MAX+1...


Сжатие иногда проводится.

авторА чудес вроде как не бывает...

И вот, тем не менее... Сам удивляюсь
...
Рейтинг: 0 / 0
Почему дублируются значения счетчика?
    #39601656
Тяп-ляп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бывает такое с access, нет у него большой надежности.
...
Рейтинг: 0 / 0
Почему дублируются значения счетчика?
    #39601658
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Остаётся предположить, что добавление/обновление поля счётчика некоторым кодом выполняется некорректно.
...
Рейтинг: 0 / 0
Почему дублируются значения счетчика?
    #39601672
Фотография Tarasios
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_rusimport, свои пару копеек на тему счётчиков.
После первых восторгов по поводу "этого замечательного счётчика" - по мере накопления некоторого опыта - изрядно поостыл в своих восторгах ) А его свойство обнуляться после сжатия базы - порой очень даже мешало. Например, после переброски в архив накладных за день и сжатия - нумерация накладных начиналась опять с 1, 2 и так далее :(
В итоге практически везде вместо счётчика использую числовое поле. Программа при создании нового документа обращается к "накладным за сегодня", к "накладным из архива", определяет максимальное значение, увеличивает его на 1, и это число вписывает в новую запись в качестве номера (записи, накладной, счётчика - нужное подчеркнуть). Во всяком случае, избавил себя от приколов в поведении счётчика ;) Кста, эта же метода по определению избавляет от дублирования значений.
...
Рейтинг: 0 / 0
Почему дублируются значения счетчика?
    #39601683
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TarasiosПрограмма при создании нового документа обращается к "накладным за сегодня", к "накладным из архива", определяет максимальное значение, увеличивает его на 1, и это число вписывает в новую запись в качестве номераИмхо хранение значения в служебной таблице разумнее, чем сбор отовсюду...
...
Рейтинг: 0 / 0
Почему дублируются значения счетчика?
    #39601690
Фотография Tarasios
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina, тоже вариант, и в некоторых случаях я им пользуюсь, но: в тех же накладных за день - некоторые удаляются, отслеживать все эти движухи чисто для определения номера - тоже не очень удобно. К тому же, это всего лишь была иллюстрация варианта замена счётчика как метод избавления от его приколов )
...
Рейтинг: 0 / 0
Почему дублируются значения счетчика?
    #39601705
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tarasiosв тех же накладных за день - некоторые удаляютсяДостаточно один раз постановить, что номер удалённой накладной не может использоваться - и всё... т.е. на номер накладной должно накладываться требование (дата больше == номер больше), и НЕ должно накладываться требование последовательности нумерации, в котором на самом деле нет никакого смысла.
...
Рейтинг: 0 / 0
Почему дублируются значения счетчика?
    #39601733
Фотография Tarasios
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina, думаю, что нумерация накладных - явно выходит за рамки этого топика. Повторюсь - это всего лишь пример "обхода" поля счётчик
...
Рейтинг: 0 / 0
Почему дублируются значения счетчика?
    #39601735
studieren
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_rusimportДобрый день всем! С некоторого момента в поле счетчик одной из таблиц в БД стали появлятся дубли значений этого счетчика (собственно говоря, значения счетчика стали присваиваться не начиная с уже имеющегося максимального значения, а со значения на, приблизительно, 1000 меньше этого максимального значения, отсюда, естественно, пошли дубли значений счетчика). Значения в эту таблицу заносятся через простенькую формочку, база не сетевая. Код формы - буквально, пара строк.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Option Compare Database

Private Sub Form_Close()
Forms!Сотрудник.[Форма допуска] = DLookup("[Форма допуска]", "Допуск", "КодСотрудника1='" & Me.КодСотрудника1 & "' and Дата=#" & Format(DMax("[Дата]", "Допуск", "КодСотрудника1='" & Me.КодСотрудника1 & "'"), "mm\/dd\/yyyy") & "#")
End Sub

Private Sub Форма_допуска_AfterUpdate()
Me.КодСотрудника1 = Forms!Сотрудник.КодСотрудника1
End Sub




Свойства поля счетчик: размер поля - длинное целое, новые значения - последовательные, индексированное поле - нет.

Вопрос - Почему это могло случиться? Как?
Ну в принципе "наколдовать" и достичь такого эффекта может каждый, кто прочёл FAQ - "Что мы знаем про каунтеры (aka счетчики)"
Если погуглить, то можно найти и куча других способов.
...
Рейтинг: 0 / 0
Почему дублируются значения счетчика?
    #39601758
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_rusimportСвойства поля счетчик:
-- размер поля - длинное целое,
-- новые значения - последовательные,
-- индексированное поле - нет.

а разве это характеристика поля с типом=счетчик
...
Рейтинг: 0 / 0
Почему дублируются значения счетчика?
    #39601764
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПЕНСИОНЕРКАа разве это характеристика поля с типом=счетчикДа...
...
Рейтинг: 0 / 0
Почему дублируются значения счетчика?
    #39601804
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
studierenНу в принципе "наколдовать" и достичь такого эффекта может каждый, кто прочёл FAQ - "Что мы знаем про каунтеры (aka счетчики)"
Если погуглить, то можно найти и куча других способов.

Если можно, огласите, пожалуйста, все способы (про первый - я в курсе). Хочется понять причины. Запрос на изменение структуры таблицы наврядли кто-то запускал. В это, прямо скажем, совсем не верится.
...
Рейтинг: 0 / 0
Почему дублируются значения счетчика?
    #39601809
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaОстаётся предположить, что добавление/обновление поля счётчика некоторым кодом выполняется некорректно.
Код весь привел в первом посте. Больше там ничего нет. Кодом счетчик на изменение или присваивание , вообще, не трогаю в программе (от слова - "совсем")
...
Рейтинг: 0 / 0
Почему дублируются значения счетчика?
    #39601810
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_rusimportКод весь привел в первом посте. Больше там ничего нет.Надо так понимать, что именно поле КодСотрудника и есть тот самый счётчик? тогда вопрос - а есть ли возможность ручной или программной корректировки значения поля Forms!Сотрудник.КодСотрудника1?
...
Рейтинг: 0 / 0
Почему дублируются значения счетчика?
    #39601812
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тяп-ляпБывает такое с access, нет у него большой надежности.

Если не сложно, подтвердите своё "бывает" конкретной ссылкой на сайт или пост в интернете. Спасибо.
...
Рейтинг: 0 / 0
Почему дублируются значения счетчика?
    #39601816
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akinaguest_rusimportКод весь привел в первом посте. Больше там ничего нет.Надо так понимать, что именно поле КодСотрудника и есть тот самый счётчик? тогда вопрос - а есть ли возможность ручной или программной корректировки значения поля Forms!Сотрудник.КодСотрудника1?

Нет, счетчик - это поле "id"... ручной корректировки нет, естественно
...
Рейтинг: 0 / 0
Почему дублируются значения счетчика?
    #39601854
guest_rusimport
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Private Sub Form_Close()
Forms!Сотрудник.[Форма допуска] = DLookup("[Форма допуска]", "Допуск", "КодСотрудника1='" & Me.КодСотрудника1 & "' and Дата=#" & Format(DMax("[Дата]", "Допуск", "КодСотрудника1='" & Me.КодСотрудника1 & "'"), "mm\/dd\/yyyy") & "#")
End Sub

Private Sub Форма_допуска_AfterUpdate()
Me.КодСотрудника1 = Forms!Сотрудник.КодСотрудника1
End Sub

Судя по коду у вас есть таблица "Сотрудник" с полем КодСотрудника1 и связанная с ней таблица "Допуск" тоже с полем КодСотрудника1.
На какой таблице лежит форма с этим кодом? В какой из таблиц поле КодСотрудника1 имеет тип счетчик и в какой таблице оно дублируется? Потом будут еще вопросы.
...
Рейтинг: 0 / 0
Почему дублируются значения счетчика?
    #39601869
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Анатолий ( Киев )Судя по коду у вас есть таблица "Сотрудник" с полем КодСотрудника1 и связанная с ней таблица "Допуск" тоже с полем КодСотрудника1.
На какой таблице лежит форма с этим кодом? В какой из таблиц поле КодСотрудника1 имеет тип счетчик и в какой таблице оно дублируется? Потом будут еще вопросы.
1. Форма с приведенным кодом лежит на таблице "Допуск"
2.Поле КодСотрудника1 текстовое, в таблице "Сотрудник" оно ключевое , оно связано с таким же текстовым полем (не ключевым) в таблице "Допуск".
...
Рейтинг: 0 / 0
Почему дублируются значения счетчика?
    #39601873
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Анатолий ( Киев ),
Всё,о чем я тут рассказывал, происходит с полем "id" (счетчиком) таблицы "Допуск". Программа нормально функционировала несколько лет.
...
Рейтинг: 0 / 0
Почему дублируются значения счетчика?
    #39601894
guest_rusimportВсё,о чем я тут рассказывал, происходит с полем "id" (счетчиком) таблицы "Допуск". Счетчик сбивается, если в таблицу добавить запись запросом INSERT INTO с явным указанием промежуточного значения полю-счетчику. Сжатие БД не помогает. Лечится таким же запросом на добавление одной записи с присвоением счетчику MAX+1 и ее дальнейшим удалением. После этого нумерация начнется с MAX+2.
А почему у вас это поле не ключевое?
...
Рейтинг: 0 / 0
Почему дублируются значения счетчика?
    #39601904
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Анатолий ( Киев )Счетчик сбивается, если в таблицу добавить запись запросом INSERT INTO с явным указанием промежуточного значения полю-счетчику. Сжатие БД не помогает. Лечится таким же запросом на добавление одной записи с присвоением счетчику MAX+1 и ее дальнейшим удалением. После этого нумерация начнется с MAX+2.
А почему у вас это поле не ключевое?
Запросом, кроме меня, некому, вроде, что-либо менять в таблице. Поэтому это предположение в моем случае не очень правдоподобное. Почему поле "id" не ключевое? - Да, как то так, исторически сложилось, о чем теперь не жалею (ситуацию я уже "разрулил"). Но хочется понять - почему такое может происходить. А оно, как я понял, может, раз такое случилось.
...
Рейтинг: 0 / 0
Почему дублируются значения счетчика?
    #39601937
Тяп-ляп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_rusimportЕсли не сложно, подтвердите своё "бывает" конкретной ссылкой на сайт или пост в интернете. Спасибо.
Тоже проблема со счетчиком
...
Рейтинг: 0 / 0
Почему дублируются значения счетчика?
    #39601944
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тяп-ляпguest_rusimportЕсли не сложно, подтвердите своё "бывает" конкретной ссылкой на сайт или пост в интернете. Спасибо.
Тоже проблема со счетчиком
Там ситуация не моя, там база сетевая и одновременный ввод данных разными пользователями.
Ещё варианты есть? Спасибо.
...
Рейтинг: 0 / 0
Почему дублируются значения счетчика?
    #39602146
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_rusimportЕщё варианты есть?

У меня такое было, примерно раз в пол года то у одного, то у другого из многочисленных клиентов, но и этой статистикой можно было бы пренебречь... И это не зависит от монопольного или сетевого режима.
Причина - отключение питания (сбой HDD, отказ системы, оперативной памяти) в момент добавления записи в таблицу, при этом именно счетчик становился раком, но так как от у меня еще был и ключом, то это делало работу далее невозможной...

Тут нужно прикинуть - если данное место (операция) не критичное, то можно исправить счетчик, и забыть...
У меня же это было самое узкое место - то место в котором был основной прирост БД, - практически ежесекундно...
Я решил проблему так - задублировал это место (одну таблицу) в отдельном файле и теперь для устранения проблемы достаточно перезапустить программу (при старте файл обновляется независимо от его состояния).
Таким образом проблема теоретически не решена, но теперь основной долбеж идет в отдельный файл, а в основную БД пишутся нормальные данные приличными порциями и периодически.... А если учесть, что новый
файл лежит еще и на этой машине. а не в сети - то и быстродействие выросло существенно...
Там если что - то я очки сегодня забыл, по смыслу смотрите...
...
Рейтинг: 0 / 0
Почему дублируются значения счетчика?
    #39602169
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vmag,

Спасибо за ответ. Но настораживает тот факт, что кроме нас с вами, такое ощущение, что аналогичная проблема не у кого не возникала, судя по отсутствию похожих вопросов в интернете (или, может быть, я их просто не нашел, поэтому и просил отвечающих "ткнуть меня носом").
...
Рейтинг: 0 / 0
Почему дублируются значения счетчика?
    #39602174
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vmag,
Сейчас опросил пользователя, клятвенно утверждает про при вводе данных в таблицу через эту форму подвисаний или аварийных вылетов из БД никогда не случалось. Ничего не понимаю...
...
Рейтинг: 0 / 0
Почему дублируются значения счетчика?
    #39602175
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_rusimport,

Все очень просто,
- когда гаснет свет, зовут разработчика и говорят - вот свет ек и теперь не работает, но это не ваш случай, по крайней мере вы его так не позиционировали, да и в таком ракурсе позиционировать его нет смысла и так все понятно...
- с точки зрения кривого кода, это тоже - не кривой код, он может быть не оптимальным, но тот факт что 2 года не было проблем, не дает право назвать код кривым...
- Возможно в вашем случае тоже свет был ек, но включили - все работает... а дубли заметили не сразу... вот и получилось что вроде как ни с того ни с сего... Если бы счетчик был еще и ключом, то колом бы скорее всего стало сразу все и была бы очевидна причина...
...
Рейтинг: 0 / 0
Почему дублируются значения счетчика?
    #39602179
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_rusimportСейчас опросил пользователя, клятвенно утверждает

Это почти всегда так :)
Глупо признаваться типа - да я делал потягушки и ногой выдернул шнур из системного блока...
Да он мог этого и не заметить, - просто моргнул свет и все...
Если это за два года было один раз - забейте и всё...
...
Рейтинг: 0 / 0
Почему дублируются значения счетчика?
    #39602181
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmag- когда гаснет свет, зовут разработчика и говорят - вот свет ек и теперь не работает, но это не ваш случайАльтернативный вариант - не закрывая приложения, оставив его на середине ввода, клиент запустил игрушку или иной процесс, комп повис или ребутнулся. В подобных случаях клиент практически никогда не воспринимает это как жёсткий офф приложения (более того - ни в жисть не признается в происшествии).
...
Рейтинг: 0 / 0
Почему дублируются значения счетчика?
    #39602200
Фотография Tarasios
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_rusimport,
ну, уж если говорить про причину глюков... Насколько я "вычислил", приложения на Ассес очень не любят, когда при работе с ними через локальную сеть эта самая сеть даёт сбой. Скажем, джек выскочил из сетевой карты. Вторая любимая причина Ассеса - енто когда делается сжатие БД при подключенных клиентах... Простейшие причины, но запороть базу вообще насмерть могут :(
...
Рейтинг: 0 / 0
Почему дублируются значения счетчика?
    #39602212
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ответы. Но тут дело осложняется тем (а может быть, наоборот, упрощается), что у меня с пользователем полное доверие и замечательные отношения, если он говорит, что ничего такого не было, значит я это так и воспринимаю. Да и специфика рабочего процесса у нас априори определяет доверительные отношения. Т.е. врать ему просто смысла не имеет. Если он что-то замечает странное тут же обращается ко мне.
...
Рейтинг: 0 / 0
Почему дублируются значения счетчика?
    #39602228
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_rusimport,

По статистике (моей) база (хранилище) формата 2000-2003 при рабочем размере до 50 метров практически не убиваемая, хоть по сети хоть монопольно, за исключением выше описанных мажоров...
При рабочем размере от 50 до 100 метров на плохом железе заметны тормоза, но тоже сносно и даже по сетке 100...
Если размер больше 100 метров и сеть, то лучше выбрать другое хранилище...
Естественно речь о более-менее сложной базе, таблиц на 50 с кучей связей, речь не про три сосны...
...
Рейтинг: 0 / 0
Почему дублируются значения счетчика?
    #39602231
Фотография Tarasios
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmag, раза три наблюдал хитрый сбой в поле "Счётчик" (служит для генерации уникального кода товара). Так вот уже три случая наблюдал, когда значение счётчика "перепрыгивало" вело отсчёт дальше. Например
100
101
102
120450
120451
120452

Не слишком сложное приложение, в сжатом виде - до 50 МБ, mde сгенерировано в 2007 Аксе, работает под AccessRuntime2007. Если за пару случаев могу только гадать (в глаза ни разу не видел тех компов, в другом городе), то за один комп чётко знаю. Локальная машина, Вин7/64, никаких левых программ, без инета, даже антивируса не стоит. Но сбой - был :( Предположительно - как раз в момент сжатия.
На всякий случай сделал автоматическое предварительное резервное копирование базы перед запуском сжатия, но это просто костыль, и не объясняет саму причину сбоя :(
...
Рейтинг: 0 / 0
Почему дублируются значения счетчика?
    #39602267
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А я у себя сбоя счётчиков не помню. Может и было что-то на 97-м, но давно и неправда.
Формат Access 2000, возраст 12 лет, размер 850 Мб, сетевая, работают через сервер терминалов. Ни разу не ложилась. Единственный сбой, при попытке заменить подключенную базу. База накрылась, Сжимаю раз в квартал. Растёт на 50-60 Мб в год. Таблиц за 50, Активно используются около 10, остальные время от времени.
С фокусами с INSERT INTO что описывал Алексей сталкивался, но давно.
Счётчики у меня все ключи и индексированные
...
Рейтинг: 0 / 0
Почему дублируются значения счетчика?
    #39603653
Ламер Ламерович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JossСчётчики у меня все ключи и индексированные
Тогда сбоя и не будет )
...
Рейтинг: 0 / 0
Почему дублируются значения счетчика?
    #39603732
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ламер ЛамеровичJossСчётчики у меня все ключи и индексированные
Тогда сбоя и не будет )

Не факт :) 1361526
...
Рейтинг: 0 / 0
38 сообщений из 38, показаны все 2 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Почему дублируются значения счетчика?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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