|
FAQ. Что мы знаем про каунтеры (aka счетчики)
|
|||
---|---|---|---|
#18+
А чего это в Москве 3 выходных? В Израиле был Йом Кипур, это я знаю, а в Москве что? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2003, 15:51 |
|
FAQ. Что мы знаем про каунтеры (aka счетчики)
|
|||
---|---|---|---|
#18+
2 Владимир Саныч: ЛЕНЬ и бактерии не полностью выздоровевшего Л.П. Да плюс тяжелый физический труд в течение 2 дней и последующий за ним отходняк в виде вышеуказанных причин. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2003, 17:03 |
|
FAQ. Что мы знаем про каунтеры (aka счетчики)
|
|||
---|---|---|---|
#18+
Саныч писал:> То туда Null запишется (хотя поле обязательное), то значения задублируются (хотя есть уникальный индекс). Похоже, что база накрылась. Ясен пень накрылась. Не вся база, а один индекс. Восстановление/сжатие/импорт в новую не проходит, спотыкается на этих кривых значениях. Приходится убивать связи, убивать индекс, лечить съехавшие значения, лечить значения в связанных таблицах, восстанавливать индекс, восстанавливать связи, и только тогда восстанавливать/сжимать. Непонятно другое - почему у меня все это счастье происходит только с индексами по полю типа счетчик? Т.е. бывает, что и по обычному (числовому) полю индекс рушится, в итоге выборка с использованием этого индекса глючит. Но ни уникальность, ни обязательность, ни целостность данных никуда не пропадают в случае индекса по числовому полю. А вообще мне это уже так надоело, что из-за одного этого глюка уже неделю хожу с мыслю "Пора сваливать с этого Jet'а" Темный писал:ЛЕНЬ и бактерии не полностью выздоровевшего Л.П. Что, я уже своей ленью начал людей заражать? Придется перед монитором в марлевой повязке сидеть ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2003, 09:54 |
|
FAQ. Что мы знаем про каунтеры (aka счетчики)
|
|||
---|---|---|---|
#18+
а про дыры в нумерации - по моему самый часто задаваемый вопрос про щетчики... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2003, 11:01 |
|
FAQ. Что мы знаем про каунтеры (aka счетчики)
|
|||
---|---|---|---|
#18+
Понял. Q: В таблице есть счетчик, но его значения идут не подряд, несколько чисел в середине отсутствуют. Как перезаполнить поле, чтобы дырок не было? A: Никаких средств для этого нет. Если возникла такая необходимость, значит база была спроектирована неверно. Поле счетчика должно служить только для однозначной идентификации записей (и, возможно, порядка их занесения), юзер не должен видеть его значений. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2003, 14:37 |
|
FAQ. Что мы знаем про каунтеры (aka счетчики)
|
|||
---|---|---|---|
#18+
гут. надо еще пару ламерских частых вопросов припомнить....... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2003, 14:42 |
|
FAQ. Что мы знаем про каунтеры (aka счетчики)
|
|||
---|---|---|---|
#18+
Неужели и я смогу внести свою лепту! Q: А как все-таки избавиться от дырок в счетчике? (ну если очень нада!!!) A: Пользоваться данным советом сугубо осторожно!!! Возможны большие проблемы с сортировкой данных!!! 1. Удалить поле счетчик. 2. Сохранить таблицу. 3. Создать поле счетчик (естественно, с тем же именем) 4. Сохранить таблицу. Я таким пользуюсь только в тех случаях, когда подготавливаю базу к запуску после тестов. (Бывают умные люди, которые спрашивают "А почему это я первый в форуме зарегистрировался, а у меня номер 118". Не отвечать же, что я 117 раз регистрировался во время отладки :) Ответственности за использование этого текста нести не хочу, и не буду. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2003, 14:59 |
|
FAQ. Что мы знаем про каунтеры (aka счетчики)
|
|||
---|---|---|---|
#18+
автор писал:Если возникла такая необходимость, значит база была спроектирована неверно. Поле счетчика должно служить только для однозначной идентификации записей (и, возможно, порядка их занесения), юзер не должен видеть его значений. Мне кажется, что данное утверждение слишком категорично. Думаю, нет ни чего страшного в том, что пользователю будет выводиться (только для чтения) номер счетчика. В небольших базах где, количество номенклатуры не очень большое, и не требуется вводить сложную кодировку номенклатуры, счетчик в полнее может служить именно кодом товара (элемента справочника). А вот что касается "провалов" или "пробелов" в счетчике, то они могут образоваться при удалении элемента справочника, что будет вполне нормальным и для бухгалтерского (управленческого) учета, т.к. в данном случае в коде элемента справочника не зашифровываются индивидуальные характеристики элемента, группы элементов. А повторять код хоть и удаленного элемента справочника, в данном случае может привести к ошибкам. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2003, 15:05 |
|
FAQ. Что мы знаем про каунтеры (aka счетчики)
|
|||
---|---|---|---|
#18+
2 funddd: Проблемы будут также в других таблицах, в которых данные привязаны к нашей таблице через уничтоженное поле. А что касается подготовки к запуску после тестов, то надо тестовые данные вообще стереть (!!!), и тогда годится описанный уже способ со сжатием базы. 2 АлексейЕ: Да, я уже подумал, что был слишком категоричен. Предлагаю новую формулироку: ...юзер не должен видеть его значений, а если и увидит, то не должен возражать против тех значений, которые есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2003, 15:12 |
|
FAQ. Что мы знаем про каунтеры (aka счетчики)
|
|||
---|---|---|---|
#18+
2 Владимир Саныч А может так? … Пользователю в большинстве случаев не зачем знать (видеть) о существовании счетчика. Если же счетчик в базе используется как элемент учетной политики предприятия (организации), то заказчик вынужден будет согласиться с теми ограничениями, которые вносит Тип данных (DataType) "Счетчик"… или что-то типа этого. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2003, 15:24 |
|
FAQ. Что мы знаем про каунтеры (aka счетчики)
|
|||
---|---|---|---|
#18+
Что-то метод предложенный funddd, мне не нравиться. Удалять таблицу - это значит удалить и индексы и связи. Заново их создовать? Зачем? Когда ХамТрамвайный предложил (да и по сей день предлагает :) более приятный способ : через Alter (есно после удаления данных хотя можно и до). Правда только для 2000/2002/2003. Для 97 - прокатит простое Сжатие ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2003, 15:25 |
|
FAQ. Что мы знаем про каунтеры (aka счетчики)
|
|||
---|---|---|---|
#18+
По-моему, у меня сказано то же самое, только короче. Кроме того, не хотелось бы затрагивать частные случаи типа учетной политики предприятия. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2003, 15:27 |
|
FAQ. Что мы знаем про каунтеры (aka счетчики)
|
|||
---|---|---|---|
#18+
Поправка: Я имел виду "не удалить таблицу", а удалить счетчик (что в принципе роли не играет) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2003, 15:27 |
|
FAQ. Что мы знаем про каунтеры (aka счетчики)
|
|||
---|---|---|---|
#18+
Виктор, я с тобой. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2003, 15:28 |
|
FAQ. Что мы знаем про каунтеры (aka счетчики)
|
|||
---|---|---|---|
#18+
Ну кто на нас с Санычем? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2003, 15:33 |
|
FAQ. Что мы знаем про каунтеры (aka счетчики)
|
|||
---|---|---|---|
#18+
ИМХО, переиндексировать индекс - это бред! Ну и что, что пробелы в значениях. А если это значение является внешним ключом??? -------------------- Best wishes, Dmitriy ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2003, 15:45 |
|
FAQ. Что мы знаем про каунтеры (aka счетчики)
|
|||
---|---|---|---|
#18+
2 Владимир Саныч Согласен. Короче, и то же самое. Просто я занудный бухгалтер, и описал со своей точки зрения. Что касается "… частные случаи типа учетной политики предприятия …" (это опять бухгалтерское занудство. Уж простите :)), то, на мой взгляд, это единственный случай при котором требуется счетчик вывести "на глаза" пользователя. Т.е. дополнительная идентификация элемента справочника в учете предприятия. Хотя, может, теперь я слишком категоричен. И может действительно не стоит смешивать FAQ по программирования и FAQ по учету. Просто мне показалось, что для начинающего программиста будет полезно понять, когда и в каких случаях требуется отображать Счетчик. Одним словом ИМХО. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2003, 15:46 |
|
FAQ. Что мы знаем про каунтеры (aka счетчики)
|
|||
---|---|---|---|
#18+
Оффтопик: А что "занудный бухгалтер" делает на форуме sql.ru? Или не такой уж он и занудный? -------------------- Best wishes, Dmitriy ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2003, 15:55 |
|
FAQ. Что мы знаем про каунтеры (aka счетчики)
|
|||
---|---|---|---|
#18+
Темный писал:А что "занудный бухгалтер" делает на форуме sql.ru? Это просто "занудный бухгалтер широкого профиля" :) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2003, 16:19 |
|
FAQ. Что мы знаем про каунтеры (aka счетчики)
|
|||
---|---|---|---|
#18+
> Просто мне показалось, что для начинающего программиста будет полезно понять, когда и в каких случаях требуется отображать Счетчик. Пусть лучше программист знает, что это не требуется никогда. А если это потребуется, то пусть он узнает об этом от заказчика. И напишет программу, в которой все равно счетчик не отображается, а отображается специально сделанное поле, в котором предусмотрена защита от дырок. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2003, 16:51 |
|
FAQ. Что мы знаем про каунтеры (aka счетчики)
|
|||
---|---|---|---|
#18+
2 Владимир Саныч Убедил. Раз защита от дырок, так защита от дырок. P.S. И бублики все заштопаем. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2003, 16:57 |
|
FAQ. Что мы знаем про каунтеры (aka счетчики)
|
|||
---|---|---|---|
#18+
:^) Гусары, молчать... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2003, 17:02 |
|
FAQ. Что мы знаем про каунтеры (aka счетчики)
|
|||
---|---|---|---|
#18+
Ну не могу я промолчать!!!! Единственное, могу заменить все смайликами! -------------------- Best wishes, Dmitriy ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2003, 17:47 |
|
FAQ. Что мы знаем про каунтеры (aka счетчики)
|
|||
---|---|---|---|
#18+
Оправлять бы пора, в фак уже, многостаночник Владимир Саныч! -------------------- Best wishes, Dmitriy ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2003, 19:53 |
|
FAQ. Что мы знаем про каунтеры (aka счетчики)
|
|||
---|---|---|---|
#18+
Итак, выдаю новую версию. Тут оказалось, что в течение 2,5 месяцев стояла версия с багом. В моем посте от 3 авг добавка про rsCounter.Update добавлена к ответу на совсем другой вопрос. :^) Q: Как создать свой счетчик (чтобы поле было не типа счетчик)? A1: Занести в DefaultValue поля: Код: plaintext
Так можно нумеровать записи даже внутри группы, а не только насквозь через всю таблицу. Для этого надо правильно задать параметры DMax. Правда, надо отдельно позаботиться о ситуации, когда два юзера обратятся к этому "генератору счетчиков" одновременно. На этот случай надо написать обработчик ошибок. Пример обработчика можно взять из приведенного ниже A3. A2: Заводим отдельную таблицу с одним полем типа счетчик и без данных. Приводимая ниже процедура обращается к такой таблице и возвращает очередное значение для "нашего" счетчика. Внимание - файл, в котором сидит эта таблица, запрещено сжимать. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38.
Вариант: все-таки делать rsCounter.Update, тогда по виду этой таблицы будет сразу ясно, какое значение было выдано последним. Правда, в этом случае файл станет расти. A3: Держим в отдельной таблице очередное значение счетчика и каждый раз увеличиваем его на 1. Таблица блокируется на момент чтения и увеличения счетчика, а все, кто в нее будут в это время стучаться, спокойно ждут (см. обработчик ошибок adhGetNextAutoNumber_Err) освобождения таблицы. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60.
Q: Как заставить счетчик начать выдавать значения начиная с некоторой заданной величины? A1: Добавить в таблицу со счетчиком при помощи инсерта запись, в которой полю счетчика дается значение на 1 меньше, чем надо. Потом удалить эту запись. Способ работает только при условии, что этот счетчик этого или большего значения еще не выдавал. (Если таким образом дать счетчику отрицательное значение, то он начнет выдавать отрицательные значения, несмотря на то что уже выдавал значения, большие их. Играя на этом, можно добиться, чтобы счетчик выдавал любые значения, в т.ч. и те, которые уже были.) A2: Сжать базу, в которой сидит таблица со счетчиком. Счетчик будет выдавать значения начиная с наибольшего из существующих +1. В некоторых версиях Аксесса это работает только при условии, что таблица со счетчиком пуста (и тогда счетчик начнет выдавать значения с 1). A3: Начиная с Аксесса 2000, можно запустить запрос наподобие такого: Код: plaintext
Q: Может ли поле счетчика содержать повторяющиеся значения? A: В принципе да. Этого несложно достичь, меняя состояние счетчика описанными способами. Однако если при этом возникнут нарушения ключа (вообще говоря, поле счетчика можно и не делать ключевым, но обычно все-таки принято делать), то записи просто не смогут добавляться. Каждая неудачная попытка добавить запись будет увеличивать значение счетчика на 1. Когда зона существующих значений будет пройдена, то записи опять смогут добавляться. Q: В таблице есть счетчик, но его значения идут не подряд, несколько чисел в середине отсутствуют. Как перезаполнить поле, чтобы дырок не было? A: Никаких средств для этого нет. Если возникла такая необходимость, значит база была спроектирована неверно. Поле счетчика должно служить только для однозначной идентификации записей (и, возможно, порядка их занесения), юзер не должен видеть его значений, а если и увидит, то не должен возражать против тех значений, которые есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2003, 16:38 |
|
|
start [/forum/topic.php?fid=45&msg=32291290&tid=1654065]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
31ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 260ms |
total: | 400ms |
0 / 0 |