|
|
|
DefaultValue
|
|||
|---|---|---|---|
|
#18+
Если вовремя обсуждения, то согласен. А если: "Меня не интересует как в других. Хочу только так и не иначе?". Можно, конечно, сменить клиента... Но спорить с ним, почему ему так удобнее... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2003, 13:50 |
|
||
|
DefaultValue
|
|||
|---|---|---|---|
|
#18+
Хочу только так и не иначе - то уж никуда не денишся. Можно как предложил Senin Viktor. Только в сети могут возникнуть проблемы - один пользователь считал значение, второй считал, первый записал, второй увы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2003, 16:27 |
|
||
|
DefaultValue
|
|||
|---|---|---|---|
|
#18+
И при наличии уникального индекса один из пользователей будет послан и нажмет кнопку еще раз. Ничего страшного. Или делать счетчик. Только не забыть, что от необходимости создания уникального индекса счетчик не избавляет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2003, 16:33 |
|
||
|
DefaultValue
|
|||
|---|---|---|---|
|
#18+
2 Витал "Закономерность так и не уловил - иногда возвращает значение без +1 (устанавливал +2, тогда нормально), а иногда с +1. Тогда если было установлено +2 - значение было на 2 больше максимального. " Дык Dmax по табличке ищет :). Т.ч. результат означает, что на момент поисков данное ("предыдущее") не сохранено - и плюсует к последнему сохраненному... А вот почему там бывает несохраненка - скорей всего, ежели вы принудительно не сохранялись, то и "значение по умолчанию" в форму проставилось, но в запись (так и не записанную) не попало, надо думать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2003, 16:59 |
|
||
|
DefaultValue
|
|||
|---|---|---|---|
|
#18+
Все может быть, все может статься... Закономерности и я не уловил. Может это глюк ХР? Бывает при открытии формы (еще ничего не делал) - значение по умолчанию DMax(), хотя в свойствах DMax()+1. Меняю на DMax()+2. При открытии получаю по умолчанию DMax()+1. Выбираю другую запись в субформе "Действие" - получаю в субформе "Операции" по полю № значение по умолчанию DMax()+2. Правда не помню ставил Recalc по этому полю в проце Form_Current?!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2003, 17:14 |
|
||
|
DefaultValue
|
|||
|---|---|---|---|
|
#18+
Если нежелание сохранять - "глюк ХП", то "все может статься". :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2003, 17:20 |
|
||
|
DefaultValue
|
|||
|---|---|---|---|
|
#18+
2 V. Motchulsky >. Только в сети могут возникнуть проблемы - один пользователь считал значение, второй считал, первый записал, второй увы... Легко решаются эти "сетевые" проблемы. В случае возникновения ошибки, прога сама добавляет еще +1 и опять пытается сохранить. И так далее. Правда вставил ограничение не более 5 попыток (что-то побоялся в случае какой-либо заподлянки уйти в непрерывный цикл) З.Ы. Правда у меня не DMax работает - слишком, гад, меленный для сети - а его аналог, на основанный на DAO - работае в несколько раз быстрее. З.Ы.Ы. Хотя я и предлагал заказчику не использовать самодельный счетчик, а пользоваться встроенным, он отказался, сославшися, что пользователи должны сами управлять номерами документов, только после одной неразберихи (два юзера напеременяли так, что потом неделю разбирались), отказался - да поздно - убрать уже не получится - слишком много завязано ( бум. документов) на этот суррагатный счетчик. Заменить-то можно, я даже готов - только им почему-то моя цена не понравилась . так и живут... Мораль: сами придумайте... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2003, 17:21 |
|
||
|
DefaultValue
|
|||
|---|---|---|---|
|
#18+
assa Если нежелание сохранять - "глюк ХП", то "все может статься". :) Что сохранять??? Еще ничего нового не вводил!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2003, 17:28 |
|
||
|
DefaultValue
|
|||
|---|---|---|---|
|
#18+
2 Витал не думаю, что Recalc сохраняет запись... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2003, 17:36 |
|
||
|
DefaultValue
|
|||
|---|---|---|---|
|
#18+
блин, развели разговор на целый бор dmax ставьте не на значение по умолчанию а на "до обновления" формы (причем событие должно срабатывать тока для новой записи) вот тогда она действительно вернет последнее даже если одновременно 2 юзверя будут вводить новую строку давно уже обсуждавшаяся тема всплывает через какое-то время с завидным постоянством ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2003, 17:40 |
|
||
|
DefaultValue
|
|||
|---|---|---|---|
|
#18+
2 Сенин Виктор Я тоже счетчики не люблю. Слишком уж они криво в аксесе реализованы. 2 Зам Трамвайный И с какой же стати на событии до обновления гарантировано вернет разные значения для двух юзеров? Те же яйца и получатся - два юзера одновременно выполнят один и тот же запрос, получат одинаковые значения и один обломается. Другое дело что вероятность этого уменьшается, т.к. длительность глюкоопасного куска мала. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2003, 17:50 |
|
||
|
DefaultValue
|
|||
|---|---|---|---|
|
#18+
>Хаму трамвайному "Ударим трамваем по бездорожью!!!" Если тема все время всплывает "...с завидным постоянством" значит она ... то, что не тонет... в молоке и завидовать ей не стоит. Совет про BeforeUpdate с удовольствием принимается. Так что просьба хамить дальше, больше, круче и чаще. >assa Для синхронизации субформ на событие Current формы подвешена процедурка SubForm.Requery, а Recalc - как сейчас думаю мог бы помочь (или не мог бы) обновить значение по умолчанию (пересчитать) в поле по аналогии со списками. И вообще-то не блокировал я сохранение записи при переходе к следующей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2003, 17:56 |
|
||
|
DefaultValue
|
|||
|---|---|---|---|
|
#18+
по моему тут две проблемы 1 если использовать Dmax (mdb, база ~20-50m, слабые клиенты fsb=66Mz) то есть вероятность что два клиента начнут искать максимум с небольшим промежутком времени и не известно который из них наудет первым и успеет записать измененный номер первым. и запишет новый и попадет ли новый в поиск другого. случаи редкие тно в практике встречались при 2 клиентах примерно раз в полгода при ~20 записях в день на двоих. для бухгалтерии это сами понимаете... 2 пусть будет Dmax - отработал нормальна. первый клиент увеличил номер. к нему (к ней ) приблизил() особь противоположного пола минут на 5. разговор за жизнь. в это время второй клиент ищет мах и находит такой-же номер увеличивает и бысто записывает. потом записывает 1 клиент. опять 2 одинаковых. надо искать бысто и сразу производить запись, что бы "застолбить новый номер" , а потом редактировать остальные поля в этой записи. а на время поиска мах и его записи блокировать табл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2003, 21:33 |
|
||
|
DefaultValue
|
|||
|---|---|---|---|
|
#18+
Для тех, кто не против счетчиков в принципе, а только против поля типа счетчик в данной таблице, - предлагаю вашему вниманию: 1. Заводим таблицу с одним полем типа счетчик и без записей, назовем ее Cou. Ее надо поместить в отдельном mdb и никогда его не сжимать (а его размер увеличиваться и не будет). 2. В той таблице, которую мы заполняем, даем полю значение по умолчанию MyCou() и запираем его от редактирования. 3. И вот сама функция: Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2003, 22:17 |
|
||
|
DefaultValue
|
|||
|---|---|---|---|
|
#18+
2Владимир Саныч механизм вот этого ' главное, что тут никакого Update не нужно .Close почему? поподробнее плииззз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2003, 22:24 |
|
||
|
DefaultValue
|
|||
|---|---|---|---|
|
#18+
Механизм следующий: при каждом AddNew увеличивается на единицу то значение, которое будет возвращено, однако благодаря отсутствию Update размер таблицы не растет. А файл запрещено сжимать потому, что при сжатии это очередное готовое к выдаче значение счетчика обнулится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2003, 22:34 |
|
||
|
DefaultValue
|
|||
|---|---|---|---|
|
#18+
Да, мороки в этих MDB, в ADP все проще. Все равно как лучь света в темном царстве. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2003, 23:07 |
|
||
|
DefaultValue
|
|||
|---|---|---|---|
|
#18+
V. Motchulsky ну раз сказал.... так предложи вариант. все знют - проще... а раз начал, так скажи почему проще. раз разговор идет - значит грабли еще не убрали... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2003, 19:54 |
|
||
|
DefaultValue
|
|||
|---|---|---|---|
|
#18+
В ADP написал процедурку которая ведет счетчики и вызывай когда надо, где то я ее уже писал. Если надо еще раз напишу. Только тут разговор про ADP не идет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2003, 23:47 |
|
||
|
DefaultValue
|
|||
|---|---|---|---|
|
#18+
2V. Motchulsky ADP not ADP все равно все начинают косить глаза в сторону ADP так что выкладывай (не скромничай ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2003, 21:26 |
|
||
|
DefaultValue
|
|||
|---|---|---|---|
|
#18+
Ну тут нефиг скромничать, тут не я придумал, из сайта М$ ALTER proc GetNextIdentity @ForTable sysname, @Value int OUTPUT AS set nocount on begin tran /* if this is the first value generated for this table, start with zero */ if not exists (select * from IdentityTable where ForTable = @ForTable) insert IdentityTable (ForTable, Value) values (@ForTable, 0) /* update must be before select to issue a lock and prevent duplicates */ update IdentityTable set Value = Value + 1 where ForTable = @ForTable select @Value = Value from IdentityTable where ForTable = @ForTable commit tran return @value ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2003, 00:10 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32161046&tid=1681494]: |
0ms |
get settings: |
6ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
40ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 197ms |
| total: | 330ms |

| 0 / 0 |
