Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Границы транзакции в форме при ADP проекте / 13 сообщений из 13, страница 1 из 1
12.11.2004, 13:00:46
    #32779456
yuniki
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Границы транзакции в форме при ADP проекте
Т.е. мне непонятно Если есть,скажем, тривиальная форма для редактирования данных на одну таблицу , построенная мастером, то когда начинается и когда заканчивается транзакция при работе пользователя с ней?

И то же самое интересно,конечно, и для сложных форм, т.е. когда источник записей - запрос из нескольких таблиц, и кроме того, из самой формы при редактировании какого-то поля пользователь вызывает другую форму(например, для дополнения справочника из которого ему нужно заполнять это поле)
и т.д.
Т.е. нужно ли специально давать при открытии форм команды SQL SERVER'у BEGIN TRAN , при окончании редактировании ROLLBACK или COMMIT ?
...
Рейтинг: 0 / 0
12.11.2004, 13:15:38
    #32779506
Shurgenz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Границы транзакции в форме при ADP проекте
по-моему акес берет транзакцию в свои лапы.... и... если переходишь с записи на запись, транзакция для старой кончается, для новой начинается.

Если, находясь на како-либо записи ты жамкаешь ескейп, происходит rollback.
(Ежели ты там что-то наменял в полях, все откатывается взад)
...
Рейтинг: 0 / 0
12.11.2004, 13:57:26
    #32779654
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Границы транзакции в форме при ADP проекте
если речь про ADP
то там транзакции в стандартном механизме форм не используются
долгосрочная блокировка записей - вещь крайне опасная


при необходимости обновить данные серверу посылается запрос типа
обновить поле1=1 где код =кодзаписи поле1 = староезначение поле2=староезначение итд по всем полям запроса используемого в форме

если возвращается rowcount = 1 то все хорошо а иначе - месагу что запись обновлена другим пользователем

если в таблице есть таймштамп то немного по другому, но принцип тот же,
без транзакций
...
Рейтинг: 0 / 0
12.11.2004, 14:26:13
    #32779751
Shurgenz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Границы транзакции в форме при ADP проекте
Круто :) но всегда есть место подвигу :) можно, к примеру, самому транзакцию забодяжить :)
...
Рейтинг: 0 / 0
12.11.2004, 14:40:55
    #32779813
yuniki
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Границы транзакции в форме при ADP проекте
2 АлексейК >
Ну ,скажем так , БЕЗ транзакций не бывает в природе.
Просто, видимо, если я правильно Вас понял, транзакция ограничена одним SQL оператором обновления. Т.е. форма сама не выдает Begin Tran/Commit/Rollaback.

Но , видно можно , и самому устанавливать границы транзакций , например при открытии формы.
Shurgenz вроде это и пишет, но его смайлы не понятны!
...
Рейтинг: 0 / 0
12.11.2004, 15:11:13
    #32779942
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Границы транзакции в форме при ADP проекте
2 yuniki

ни форма ни ADO явной транзакции не начинает

Что касается теории то без транзакций действительно не бывает в природе
но в данном случае по отношению клиента к серверу явного объявления транзакции не происходит. Неявная транзакция естественно случается при выполнении update во глубине серверных процессов, но я думаю это уже никому не интересно.

кому интересно запускаем MSSQL профайлер и внимательно смотрим как форма сохраняет записи ...
...
Рейтинг: 0 / 0
12.11.2004, 15:11:32
    #32779945
Shurgenz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Границы транзакции в форме при ADP проекте
Не уверен, что границы транзакции для формы можно как-то поменять. Я писал про собственноручно написанный батч, а потом его экзекют. Никак не привязываясь к собственно форме.

А смайлился я потому, что, как мне вначале показалось, узнал нечто новое для себя.... а потом подумал....

А как Акес откатывается назад при нажатии ескейпа? Если это не rollback, то что же? Возможно, он пытается переписать то, что там (в текущей записи было до этого). Однако, на деле происходит не это. Происходит именно rollback, как мне все же кажется.... Если я пытаюсь отменить изменения, а данные были в это время изменены кем-то другим, мне об этом сообщат. То есть, роллбэк выдаст ту запись, измененную этим кем-то. Этому то Акес и удивится и сообщит об ошибке.

Хотя... может, все и не так.
...
Рейтинг: 0 / 0
12.11.2004, 15:14:34
    #32779960
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Границы транзакции в форме при ADP проекте
при нажатии эскепа происходит что то типа:

me.control.value = me.control.oldvalue

никаких роллбаков и транзакций
...
Рейтинг: 0 / 0
12.11.2004, 15:21:51
    #32779980
Shurgenz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Границы транзакции в форме при ADP проекте
Тогда мне совсем непонятна модель его поведения...

Если он (акес) знает, что данные были уже изменены другим пользователем, зачем он тогда пытается сделать

авторme.control.value = me.control.oldvalue

Не проще ли ему просто обновить эту, измененную кем-то запись?
...
Рейтинг: 0 / 0
12.11.2004, 15:24:28
    #32779993
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Границы транзакции в форме при ADP проекте
все. утомлен. тяпница на дворе...
...
Рейтинг: 0 / 0
12.11.2004, 15:58:22
    #32780113
Границы транзакции в форме при ADP проекте
ShurgenzТогда мне совсем непонятна модель его поведения...

Если он (акес) знает, что данные были уже изменены другим пользователем, зачем он тогда пытается сделать

авторme.control.value = me.control.oldvalue

Не проще ли ему просто обновить эту, измененную кем-то запись?

ну елыжпалыж
и Валью и старую Валю знает форма аксеса и лазать по сеткам ей лома. У нее стандартное поведение на ескейп - 1 раз - откат на олдвалю текущего контрола; 2-й раз - откат всех олдвалюёв и сброс .dirty. И ни за какими данными вона при сем не лазаит (все ж пад руками, да?). А вот при попытке чиста канкретна наобновнуть данные в записи, аксес, напоровшись на то, что даные то уже "поменяты, да тропинки затоптаты" возвращает пользователю отказ от горшка. (ну или требование подвердить текущую нужду).
...
Рейтинг: 0 / 0
12.11.2004, 16:03:10
    #32780131
Shurgenz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Границы транзакции в форме при ADP проекте
так вот про "отказ от горшка и речь"... про это я писал.... ведь стандартный rollback отработает таким макаром, что если транзакция свершается уже после смены данных другим пользователем, то после роллбэка я увижу данные, что были сменены, а не те, что были до.
...
Рейтинг: 0 / 0
12.11.2004, 16:19:03
    #32780194
Границы транзакции в форме при ADP проекте
"отказ от горшка" - это кады пришел отлуп на попытку реально вставить запись? И что тут не устраиваит? (Я не помню поведение формы, че, она самоходом не рефрешит запись? А только откатывает олдвелью? Так отрефрешь ее силком.) Ты ж уже получил сообщение об изменении записи.

А как "идеологически верно" отменить работу пользователя в этом случае - это ж бабушка даже не надвое сказала. То ли юзер хочет всегда расставаться со старыми значениями без сожаления, то ли хочет иметь их для просмотра перед рефрешем, то ли еще чего.


И еще раз - отказ формы от изменений - это не роллбек. Роллбек - это отказ сервера от изменений, который он совершает при отсутствии подверждения от формы. Форма же только откатывает свои велью. Почему сразу не рефрешит - см. выше. А сервер, вероятно, даже не шлет "новые данные" записи форме - ведь запроса на рефреш от формы не было.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Границы транзакции в форме при ADP проекте / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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