|
|
|
Границы транзакции в форме при ADP проекте
|
|||
|---|---|---|---|
|
#18+
Т.е. мне непонятно Если есть,скажем, тривиальная форма для редактирования данных на одну таблицу , построенная мастером, то когда начинается и когда заканчивается транзакция при работе пользователя с ней? И то же самое интересно,конечно, и для сложных форм, т.е. когда источник записей - запрос из нескольких таблиц, и кроме того, из самой формы при редактировании какого-то поля пользователь вызывает другую форму(например, для дополнения справочника из которого ему нужно заполнять это поле) и т.д. Т.е. нужно ли специально давать при открытии форм команды SQL SERVER'у BEGIN TRAN , при окончании редактировании ROLLBACK или COMMIT ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2004, 13:00:46 |
|
||
|
Границы транзакции в форме при ADP проекте
|
|||
|---|---|---|---|
|
#18+
по-моему акес берет транзакцию в свои лапы.... и... если переходишь с записи на запись, транзакция для старой кончается, для новой начинается. Если, находясь на како-либо записи ты жамкаешь ескейп, происходит rollback. (Ежели ты там что-то наменял в полях, все откатывается взад) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2004, 13:15:38 |
|
||
|
Границы транзакции в форме при ADP проекте
|
|||
|---|---|---|---|
|
#18+
если речь про ADP то там транзакции в стандартном механизме форм не используются долгосрочная блокировка записей - вещь крайне опасная при необходимости обновить данные серверу посылается запрос типа обновить поле1=1 где код =кодзаписи поле1 = староезначение поле2=староезначение итд по всем полям запроса используемого в форме если возвращается rowcount = 1 то все хорошо а иначе - месагу что запись обновлена другим пользователем если в таблице есть таймштамп то немного по другому, но принцип тот же, без транзакций ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2004, 13:57:26 |
|
||
|
Границы транзакции в форме при ADP проекте
|
|||
|---|---|---|---|
|
#18+
Круто :) но всегда есть место подвигу :) можно, к примеру, самому транзакцию забодяжить :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2004, 14:26:13 |
|
||
|
Границы транзакции в форме при ADP проекте
|
|||
|---|---|---|---|
|
#18+
2 АлексейК > Ну ,скажем так , БЕЗ транзакций не бывает в природе. Просто, видимо, если я правильно Вас понял, транзакция ограничена одним SQL оператором обновления. Т.е. форма сама не выдает Begin Tran/Commit/Rollaback. Но , видно можно , и самому устанавливать границы транзакций , например при открытии формы. Shurgenz вроде это и пишет, но его смайлы не понятны! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2004, 14:40:55 |
|
||
|
Границы транзакции в форме при ADP проекте
|
|||
|---|---|---|---|
|
#18+
2 yuniki ни форма ни ADO явной транзакции не начинает Что касается теории то без транзакций действительно не бывает в природе но в данном случае по отношению клиента к серверу явного объявления транзакции не происходит. Неявная транзакция естественно случается при выполнении update во глубине серверных процессов, но я думаю это уже никому не интересно. кому интересно запускаем MSSQL профайлер и внимательно смотрим как форма сохраняет записи ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2004, 15:11:13 |
|
||
|
Границы транзакции в форме при ADP проекте
|
|||
|---|---|---|---|
|
#18+
Не уверен, что границы транзакции для формы можно как-то поменять. Я писал про собственноручно написанный батч, а потом его экзекют. Никак не привязываясь к собственно форме. А смайлился я потому, что, как мне вначале показалось, узнал нечто новое для себя.... а потом подумал.... А как Акес откатывается назад при нажатии ескейпа? Если это не rollback, то что же? Возможно, он пытается переписать то, что там (в текущей записи было до этого). Однако, на деле происходит не это. Происходит именно rollback, как мне все же кажется.... Если я пытаюсь отменить изменения, а данные были в это время изменены кем-то другим, мне об этом сообщат. То есть, роллбэк выдаст ту запись, измененную этим кем-то. Этому то Акес и удивится и сообщит об ошибке. Хотя... может, все и не так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2004, 15:11:32 |
|
||
|
Границы транзакции в форме при ADP проекте
|
|||
|---|---|---|---|
|
#18+
при нажатии эскепа происходит что то типа: me.control.value = me.control.oldvalue никаких роллбаков и транзакций ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2004, 15:14:34 |
|
||
|
Границы транзакции в форме при ADP проекте
|
|||
|---|---|---|---|
|
#18+
Тогда мне совсем непонятна модель его поведения... Если он (акес) знает, что данные были уже изменены другим пользователем, зачем он тогда пытается сделать авторme.control.value = me.control.oldvalue Не проще ли ему просто обновить эту, измененную кем-то запись? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2004, 15:21:51 |
|
||
|
Границы транзакции в форме при ADP проекте
|
|||
|---|---|---|---|
|
#18+
все. утомлен. тяпница на дворе... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2004, 15:24:28 |
|
||
|
Границы транзакции в форме при ADP проекте
|
|||
|---|---|---|---|
|
#18+
ShurgenzТогда мне совсем непонятна модель его поведения... Если он (акес) знает, что данные были уже изменены другим пользователем, зачем он тогда пытается сделать авторme.control.value = me.control.oldvalue Не проще ли ему просто обновить эту, измененную кем-то запись? ну елыжпалыж и Валью и старую Валю знает форма аксеса и лазать по сеткам ей лома. У нее стандартное поведение на ескейп - 1 раз - откат на олдвалю текущего контрола; 2-й раз - откат всех олдвалюёв и сброс .dirty. И ни за какими данными вона при сем не лазаит (все ж пад руками, да?). А вот при попытке чиста канкретна наобновнуть данные в записи, аксес, напоровшись на то, что даные то уже "поменяты, да тропинки затоптаты" возвращает пользователю отказ от горшка. (ну или требование подвердить текущую нужду). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2004, 15:58:22 |
|
||
|
Границы транзакции в форме при ADP проекте
|
|||
|---|---|---|---|
|
#18+
так вот про "отказ от горшка и речь"... про это я писал.... ведь стандартный rollback отработает таким макаром, что если транзакция свершается уже после смены данных другим пользователем, то после роллбэка я увижу данные, что были сменены, а не те, что были до. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2004, 16:03:10 |
|
||
|
Границы транзакции в форме при ADP проекте
|
|||
|---|---|---|---|
|
#18+
"отказ от горшка" - это кады пришел отлуп на попытку реально вставить запись? И что тут не устраиваит? (Я не помню поведение формы, че, она самоходом не рефрешит запись? А только откатывает олдвелью? Так отрефрешь ее силком.) Ты ж уже получил сообщение об изменении записи. А как "идеологически верно" отменить работу пользователя в этом случае - это ж бабушка даже не надвое сказала. То ли юзер хочет всегда расставаться со старыми значениями без сожаления, то ли хочет иметь их для просмотра перед рефрешем, то ли еще чего. И еще раз - отказ формы от изменений - это не роллбек. Роллбек - это отказ сервера от изменений, который он совершает при отсутствии подверждения от формы. Форма же только откатывает свои велью. Почему сразу не рефрешит - см. выше. А сервер, вероятно, даже не шлет "новые данные" записи форме - ведь запроса на рефреш от формы не было. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2004, 16:19:03 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32779942&tid=1670397]: |
0ms |
get settings: |
5ms |
get forum list: |
22ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
23ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 190ms |
| total: | 300ms |

| 0 / 0 |
