|
|
|
Отловить средствами РВ ситуацию "Row changed beetween...
|
|||
|---|---|---|---|
|
#18+
retrieve and update" можно ли? Т.е. не допускать появления окна с сообщенем о данной ошибке (но знать о ней), а самостоятельно обработать сложившуюся ситуацию? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2005, 11:51 |
|
||
|
Отловить средствами РВ ситуацию "Row changed beetween...
|
|||
|---|---|---|---|
|
#18+
ловить код ошибки -3 в dberror event. для подавления стандартного сообщения - там же - "return 1" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2005, 12:28 |
|
||
|
Отловить средствами РВ ситуацию "Row changed beetween...
|
|||
|---|---|---|---|
|
#18+
Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2005, 12:45 |
|
||
|
Отловить средствами РВ ситуацию "Row changed beetween...
|
|||
|---|---|---|---|
|
#18+
уважаемые коллеги! может кто знает какое-нибудь исследование в литературе, журналах, и-нете по поводу борьбы с подобной ситуацией - "Row changed beetween.... Только ОДИН способ проскользнул в форуме - типа показать старые и новые данные. Наверно любые 2 аналогичных окна с ДВ можно показать с помощью несложного сервиса - но как сделать это унифицированно для всех ДВ? И если форматированием, подкрашиванием полей в ДВ занимаемся пререгулярно, то этот важнейший вопрос, висит в воздухе как замок эльфов-такой же огромный и как висит непонятно! 20% всех вопросов касается этой ошибки - и мне кажется что у большинства метод борьбы один-писать только с ключом. Может ГУРУ поделятся опытом и знаниями?! станислав ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2005, 13:49 |
|
||
|
Отловить средствами РВ ситуацию "Row changed beetween...
|
|||
|---|---|---|---|
|
#18+
Ровно 10 лет назад я работал на одной банковской системе, где именно так и делалось - показывалось унифицированное окно с двумя версиями ОДНОГО ДВ, с подсвеченными/подкрашенными полями в которых concurrency problems. А что стоит написать унифицированный сервис, который будет это делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2005, 18:46 |
|
||
|
Отловить средствами РВ ситуацию "Row changed beetween...
|
|||
|---|---|---|---|
|
#18+
Филипп А что стоит написать унифицированный сервис, который будет это делать? Не спорю - и так можно сделать. Но ведь это всего лишь один вариант обработки, как сейчас любят говорить-безальтернативный! Ведь все книги по базам данных обсуждают вопрос работы ТОЛЬКО с одной записью - и столько проблем. Документация по базам - например та же ASA - формулирует все эти проблемы на "уровнях сериализации" и опять же - либо на уровне строки либо на уровне таблицы. Мой вопрос в том -как имея таблицу на 1000 строк(условно)в памяти, которая загружена в 8 утра и закрыта в 18.00 - обеспечить непротиворечивую работу нескольких человек с одной и тоже таблицей. Подразумевается что средствами ПБ и условно ASA. И желательно, чтобы люди(пользователи) не были огорошены в последний момент тем, что им надо что то сравнивать, много думать и почти всегда решать вопрос об изменениях в свою пользу! Вот я и спрашиваю о какой то информации на эту тему, что то вроде рекомендации, исследования, статьи или просто хороший совет, ссылку. станислав ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2005, 11:46 |
|
||
|
Отловить средствами РВ ситуацию "Row changed beetween...
|
|||
|---|---|---|---|
|
#18+
Перед началом работы с записью (её редактированием) я её ReselectRow(), что позволяет видеть пользователю данные на момент начала редактирования записи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2005, 12:04 |
|
||
|
Отловить средствами РВ ситуацию "Row changed beetween...
|
|||
|---|---|---|---|
|
#18+
sboykoМой вопрос в том -как имея таблицу на 1000 строк(условно)в памяти, которая загружена в 8 утра и закрыта в 18.00 - обеспечить непротиворечивую работу нескольких человек с одной и тоже таблицей. Кэшированные данные надо подгружать иногда. У нас сделано так - перед тем как показать юзеру dw с кэшированными данными - проверяем время обновления таблицы и сравниваем с тем что зафиксировали когда читали данные в кэш последний раз. Время обновления хранится в отделной таблице ( по строчке на каждую таблицу ) и поддерживается триггерами. Насчет обработки Row changed - конфликты бывают редко так что мудрить не надо - перечитываем из БД и говорим - неповезло тебе - вбивай заново. Для особо критичных случаев ( ~1% ) делаем пессимистическую блокировку ( SELECT ... FROM ... with (updlock, rowlock) которая по таймауту снимается обычным ROLLBACK с выдачей сообщения пользователю об истекшем времени. Юзера относятся с пониманием если им говоришь - вот тут действуем быстро - зашел, исправил, вышел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2005, 15:13 |
|
||
|
Отловить средствами РВ ситуацию "Row changed beetween...
|
|||
|---|---|---|---|
|
#18+
urvasПеред началом работы с записью (её редактированием) я её ReselectRow(), что позволяет видеть пользователю данные на момент начала редактирования записи. У нас все dw на процедурах так что воспользоваться ReselectRow не получится :-( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2005, 15:15 |
|
||
|
Отловить средствами РВ ситуацию "Row changed beetween...
|
|||
|---|---|---|---|
|
#18+
авторМой вопрос в том -как имея таблицу на 1000 строк(условно)в памяти, которая загружена в 8 утра и закрыта в 18.00 - обеспечить непротиворечивую работу нескольких человек с одной и тоже таблицей сделать редактирование в форме авторУ нас все dw на процедурах делать не ReselectRow а ретрив DW с определенным параметром - ключем строки. Хр.процедура, получая в параметрах только с ключ, возвращает только одну строку с текущими значениями. Естественно устаревшую строку надо пред этим удалить из DW, а полученную вставить на её место. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2005, 16:34 |
|
||
|
Отловить средствами РВ ситуацию "Row changed beetween...
|
|||
|---|---|---|---|
|
#18+
ЗоринАндрей urvasПеред началом работы с записью (её редактированием) я её ReselectRow(), что позволяет видеть пользователю данные на момент начала редактирования записи.У нас все dw на процедурах так что воспользоваться ReselectRow не получится :-( У меня тоже все DW и на процедурах, но делаю именно так.Изменившееся строка отдельно получается в DataStore перезаписывается ручками в DW. Ну а сами изменения (были-ли они), дергаю по таймеру через свою функцию... rcryo Естественно устаревшую строку надо пред этим удалить из DW, а полученную вставить на её место. и удалять не обязательно, а записать на то же место, вот например как я это делаю: Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2005, 15:48 |
|
||
|
Отловить средствами РВ ситуацию "Row changed beetween...
|
|||
|---|---|---|---|
|
#18+
Согласен! Все что вы пишите здесь - абсолютно правильно, но это наша работа руками. Но ведь ДВ в дополнение к нашим знаниям о ней ведет еще свою внутреннюю жизнь, которая не всегда ясна. Так при update строки снова reselect - хотя вроде никто и не просит! Есть еще другая мысль, вроде бы не связанная с темой. Оказывается, что все производители большого софта имеют 40-50% от ОБОРОТА в организации учебы. То есть - очень много в доке просто не пишется - только рассказывается на курсах. И мне кажется - не могу настаивать - что ДОЛЖНА ДВ как то САМОСТОЯТЕЛЬНО общаться с данными - то есть делать reselect и манипуляции с псевдоблокировками строк самостоятельно. Например, такие вещи видны в Аксессе, MS SQL Enterprise manager в режима просмотра данных - то есть чистое грид ДВ на экране - видна связка между строкой в памяти и на диске и 2 людям, которые пытаются делать это одновременно- встать на одну строчку, выдается сообщение, что мол занято. Ясно, что ДВ и лучше и мощнее, но где все это спрятано, а ведь спрятано должно быть порядка 40%? с уважением станислав ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2005, 11:34 |
|
||
|
Отловить средствами РВ ситуацию "Row changed beetween...
|
|||
|---|---|---|---|
|
#18+
sboykoИ мне кажется - не могу настаивать - что ДОЛЖНА ДВ как то САМОСТОЯТЕЛЬНО общаться с данными - то есть делать reselect и манипуляции с псевдоблокировками строк самостоятельно. Например, такие вещи видны в Аксессе, MS SQL Enterprise manager в режима просмотра данных - то есть чистое грид ДВ на экране - видна связка между строкой в памяти и на диске и 2 людям, которые пытаются делать это одновременно- встать на одну строчку, выдается сообщение, что мол занято PB работает с разными СУБД, поэтому то, что делает Аксесс, MS SQL Enterprise со своими "родными" хранилищами данных, реализовывать внутри PB, на мой взгляд, не имеет смысла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2005, 11:58 |
|
||
|
|

start [/forum/topic.php?fid=15&msg=33395076&tid=1338012]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 342ms |

| 0 / 0 |
