Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Почему дублируются значения счетчика? / 25 сообщений из 38, страница 1 из 2
14.02.2018, 10:49
    #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
14.02.2018, 10:55
    #39601635
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему дублируются значения счетчика?
guest_rusimportв поле счетчик одной из таблиц в БД стали появлятся дубли значений этого счетчикаОно, это поле - неиндексированное, что ли?

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


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

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


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

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

И вот, тем не менее... Сам удивляюсь
...
Рейтинг: 0 / 0
14.02.2018, 11:26
    #39601656
Тяп-ляп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему дублируются значения счетчика?
Бывает такое с access, нет у него большой надежности.
...
Рейтинг: 0 / 0
14.02.2018, 11:31
    #39601658
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему дублируются значения счетчика?
Остаётся предположить, что добавление/обновление поля счётчика некоторым кодом выполняется некорректно.
...
Рейтинг: 0 / 0
14.02.2018, 11:57
    #39601672
Tarasios
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему дублируются значения счетчика?
guest_rusimport, свои пару копеек на тему счётчиков.
После первых восторгов по поводу "этого замечательного счётчика" - по мере накопления некоторого опыта - изрядно поостыл в своих восторгах ) А его свойство обнуляться после сжатия базы - порой очень даже мешало. Например, после переброски в архив накладных за день и сжатия - нумерация накладных начиналась опять с 1, 2 и так далее :(
В итоге практически везде вместо счётчика использую числовое поле. Программа при создании нового документа обращается к "накладным за сегодня", к "накладным из архива", определяет максимальное значение, увеличивает его на 1, и это число вписывает в новую запись в качестве номера (записи, накладной, счётчика - нужное подчеркнуть). Во всяком случае, избавил себя от приколов в поведении счётчика ;) Кста, эта же метода по определению избавляет от дублирования значений.
...
Рейтинг: 0 / 0
14.02.2018, 12:06
    #39601683
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему дублируются значения счетчика?
TarasiosПрограмма при создании нового документа обращается к "накладным за сегодня", к "накладным из архива", определяет максимальное значение, увеличивает его на 1, и это число вписывает в новую запись в качестве номераИмхо хранение значения в служебной таблице разумнее, чем сбор отовсюду...
...
Рейтинг: 0 / 0
14.02.2018, 12:10
    #39601690
Tarasios
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему дублируются значения счетчика?
Akina, тоже вариант, и в некоторых случаях я им пользуюсь, но: в тех же накладных за день - некоторые удаляются, отслеживать все эти движухи чисто для определения номера - тоже не очень удобно. К тому же, это всего лишь была иллюстрация варианта замена счётчика как метод избавления от его приколов )
...
Рейтинг: 0 / 0
14.02.2018, 12:27
    #39601705
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему дублируются значения счетчика?
Tarasiosв тех же накладных за день - некоторые удаляютсяДостаточно один раз постановить, что номер удалённой накладной не может использоваться - и всё... т.е. на номер накладной должно накладываться требование (дата больше == номер больше), и НЕ должно накладываться требование последовательности нумерации, в котором на самом деле нет никакого смысла.
...
Рейтинг: 0 / 0
14.02.2018, 12:51
    #39601733
Tarasios
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему дублируются значения счетчика?
Akina, думаю, что нумерация накладных - явно выходит за рамки этого топика. Повторюсь - это всего лишь пример "обхода" поля счётчик
...
Рейтинг: 0 / 0
14.02.2018, 12:55
    #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
14.02.2018, 13:36
    #39601758
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему дублируются значения счетчика?
guest_rusimportСвойства поля счетчик:
-- размер поля - длинное целое,
-- новые значения - последовательные,
-- индексированное поле - нет.

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

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

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

Нет, счетчик - это поле "id"... ручной корректировки нет, естественно
...
Рейтинг: 0 / 0
14.02.2018, 15:26
    #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
14.02.2018, 15:45
    #39601869
guest_rusimport
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему дублируются значения счетчика?
Анатолий ( Киев )Судя по коду у вас есть таблица "Сотрудник" с полем КодСотрудника1 и связанная с ней таблица "Допуск" тоже с полем КодСотрудника1.
На какой таблице лежит форма с этим кодом? В какой из таблиц поле КодСотрудника1 имеет тип счетчик и в какой таблице оно дублируется? Потом будут еще вопросы.
1. Форма с приведенным кодом лежит на таблице "Допуск"
2.Поле КодСотрудника1 текстовое, в таблице "Сотрудник" оно ключевое , оно связано с таким же текстовым полем (не ключевым) в таблице "Допуск".
...
Рейтинг: 0 / 0
14.02.2018, 15:50
    #39601873
guest_rusimport
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему дублируются значения счетчика?
Анатолий ( Киев ),
Всё,о чем я тут рассказывал, происходит с полем "id" (счетчиком) таблицы "Допуск". Программа нормально функционировала несколько лет.
...
Рейтинг: 0 / 0
14.02.2018, 16:20
    #39601894
Почему дублируются значения счетчика?
guest_rusimportВсё,о чем я тут рассказывал, происходит с полем "id" (счетчиком) таблицы "Допуск". Счетчик сбивается, если в таблицу добавить запись запросом INSERT INTO с явным указанием промежуточного значения полю-счетчику. Сжатие БД не помогает. Лечится таким же запросом на добавление одной записи с присвоением счетчику MAX+1 и ее дальнейшим удалением. После этого нумерация начнется с MAX+2.
А почему у вас это поле не ключевое?
...
Рейтинг: 0 / 0
14.02.2018, 16:28
    #39601904
guest_rusimport
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему дублируются значения счетчика?
Анатолий ( Киев )Счетчик сбивается, если в таблицу добавить запись запросом INSERT INTO с явным указанием промежуточного значения полю-счетчику. Сжатие БД не помогает. Лечится таким же запросом на добавление одной записи с присвоением счетчику MAX+1 и ее дальнейшим удалением. После этого нумерация начнется с MAX+2.
А почему у вас это поле не ключевое?
Запросом, кроме меня, некому, вроде, что-либо менять в таблице. Поэтому это предположение в моем случае не очень правдоподобное. Почему поле "id" не ключевое? - Да, как то так, исторически сложилось, о чем теперь не жалею (ситуацию я уже "разрулил"). Но хочется понять - почему такое может происходить. А оно, как я понял, может, раз такое случилось.
...
Рейтинг: 0 / 0
14.02.2018, 17:10
    #39601937
Тяп-ляп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему дублируются значения счетчика?
guest_rusimportЕсли не сложно, подтвердите своё "бывает" конкретной ссылкой на сайт или пост в интернете. Спасибо.
Тоже проблема со счетчиком
...
Рейтинг: 0 / 0
14.02.2018, 17:33
    #39601944
guest_rusimport
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему дублируются значения счетчика?
Тяп-ляпguest_rusimportЕсли не сложно, подтвердите своё "бывает" конкретной ссылкой на сайт или пост в интернете. Спасибо.
Тоже проблема со счетчиком
Там ситуация не моя, там база сетевая и одновременный ввод данных разными пользователями.
Ещё варианты есть? Спасибо.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Почему дублируются значения счетчика? / 25 сообщений из 38, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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