|
|
|
Отмена изменений
|
|||
|---|---|---|---|
|
#18+
Вот, поставили задачу: Есть список предприятий, по кнопке информация о предприятии открывается в отдельной форме. Там инфа правится, и форма закрывается по кнопке. Так вот, сказано сделать вторую кнопку - отмена изменений. Все бы ничего (Использовал Me.Undo), но на энтой форме около 15 связаных форм (и каждая привязана к своей таблице). На них это Undo не действует. Кто подскажет, как быть? Форму делали без всеких Recordset, прямо перетаскивая поля и вставляя подчиненные формы, привязанные к таблицам. Koenig ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2003, 00:15 |
|
||
|
Отмена изменений
|
|||
|---|---|---|---|
|
#18+
А что-нибудь такого типа? Dim c As Control For Each c In Me.Controls If TypeOf c Is SubForm Then c.Form.Undo Next ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2003, 00:19 |
|
||
|
Отмена изменений
|
|||
|---|---|---|---|
|
#18+
Вариант (пожалуй, самый простой) Коль скоро информация о предприят ии (не придприятиях), можно перед редактированием делать копии записи из главной таблицы и записей из подчиненных в новые записи с каким-то специальным кодом/флагом. Правишь именно эти временные записи, а по нажатию кнопки либо затираешь ими старые данные, либо просто трешь их. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2003, 00:21 |
|
||
|
Отмена изменений
|
|||
|---|---|---|---|
|
#18+
Гео, твой вариант не самый простой. Копировать данные во временные таблицы (или в основные в каким-нибудь флагом) а потом в транзакции реплицировать изменения в основное хранилище - это конечно хорошо. Только надо предусмотреть возможность одновременной правки одних данных разными пользователями. Ничего сложного, но лишний гемор. Koenig писал:Форму делали без всеких Recordset, прямо перетаскивая поля и вставляя подчиненные формы, привязанные к таблицам. Вот лучше бы сделал со всякими Recordset. Тебе же проще будет. Пример есть в Гетце. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2003, 09:18 |
|
||
|
Отмена изменений
|
|||
|---|---|---|---|
|
#18+
У него подформы, изменения в которых, насколько я понял, тоже надо откатывать. А подформы связаны с таблицами. Так что, если вопрос не поменяется, это не худший вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2003, 09:23 |
|
||
|
Отмена изменений
|
|||
|---|---|---|---|
|
#18+
Гео писал:Так что, если вопрос не поменяется, это не худший вариант. Это ты про вариант с временным хранилищем или про вариант с Me.Recordset? Хотя по фигу. Варианты-то равноценные В случае с временным хранилищем нужно озаботится многопользовательским режимом, в случае с рекордсетами - вручную синхронизировать подчиненные формы с главной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2003, 09:27 |
|
||
|
Отмена изменений
|
|||
|---|---|---|---|
|
#18+
Попробую с вариантом Владимира Саныча - поскольку переделывать всю чужую прогу нет ни сил, ни желания. О результатах доложу :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2003, 10:40 |
|
||
|
Отмена изменений
|
|||
|---|---|---|---|
|
#18+
Можешь даже не пробовать. Не получится. В подчиненной форме все уже давным давно обновилось и в базу записалось - как только ты куда-нибудь в главной/другой подчиненной кликнул. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2003, 10:47 |
|
||
|
Отмена изменений
|
|||
|---|---|---|---|
|
#18+
>Попробую с вариантом Владимира Саныча Вариант Саныча, отменит еще не сохраненые изменения. Т.е. откатит только последнюю измененую строку некой форму (субформы) ибо при потери фокуса (выхода из формы) запись сохраниться автоматом и никакой UNDO не поможет. Вариант Лоха-Гетца :) позволит отменить все, что произошло с момента начала правки/вставки/удаления за счет использования транзакций. Только и здесь могу быть грабли: не знаю потянет ли ядро Jet транзакции по 15 связанным + 1 главная формам - ибо "You can nest transactions up to five levels deep" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2003, 10:51 |
|
||
|
Отмена изменений
|
|||
|---|---|---|---|
|
#18+
2 Сенин Виктор Мало ли что 15 подчиненных форм. Ну будет у тебя 15 рекордсетов, открытых в одном Connection/Workspace, и изменяющихся в одной транзакции (а не в 15-и) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2003, 11:00 |
|
||
|
Отмена изменений
|
|||
|---|---|---|---|
|
#18+
>Dim c As Control >For Each c In Me.Controls >If TypeOf c Is SubForm Then c.Form.Undo >Next - не помогло... к сожалению. Ошибок нет, но и все изменения остались. Забыл сказать, что в эти подчиненные формы для каждого предприятия вносится несколько записей. Грустно. Придется, видимо, переделывать всю прогу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2003, 11:03 |
|
||
|
Отмена изменений
|
|||
|---|---|---|---|
|
#18+
Так, ладно. Дайте, плиз, ссылочку на то, как с помощью Recordset'ов это дело провернуть (примерчик или описание). С Акцессом так плотно столкнулся первый раз, думал кавалерийским наскоком решить... Тут упоминался некий Гетц - есть ли в Инете эта книга? Заранее благодарен Koenig ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2003, 11:08 |
|
||
|
Отмена изменений
|
|||
|---|---|---|---|
|
#18+
http://am.rusimport.ru/MSAccess/f2.aspx?type=1&id=4602 Но если MSA 97, то в нем это не возможно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2003, 11:16 |
|
||
|
Отмена изменений
|
|||
|---|---|---|---|
|
#18+
Большое спасибо за ссылочку, щас попробуем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2003, 11:23 |
|
||
|
Отмена изменений
|
|||
|---|---|---|---|
|
#18+
2ЛП >Ну будет у тебя 15 рекордсетов, открытых в одном Connection/Workspace Утешил. Никогда по такому кол-ву транзакций не делал. Правда как-то давным давно пытался сделать чудо-обновление - обломался на этой ошибке. Вот и в спомнилось. Хорошо есть кому поправить :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2003, 11:36 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32292329&tid=1678884]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
55ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 211ms |
| total: | 370ms |

| 0 / 0 |
