qwantor
Дата: 26.11.2006 14:20:06
Доброго времени суток уважаемые гуру!
У некоторой формы источником строк является некоторый запрос. подскажите пожалуйста как сделать так, что бы при закрытии формы можно было бы взять и отменить все изменения. Может быть можно это сделать как-нибудь на уровне изменения чьих-нибудь свойств???
ы
Дата: 26.11.2006 14:26:18
проще всего, наверное, при открытии формы переливать изменяемые данные во временную локальную таблицу. И по закрытию решать, что с ними делать, удалять или переносить в общую базу.
Другой способ - транзакции, но он не всегда удобный.
bubucha
Дата: 26.11.2006 14:26:25
временная табла в качестве источника данных для формы - по выходу, либо save in base , либо нет
qwantor
Дата: 26.11.2006 15:05:33
1. у меня recordsource это запрос, объеденяющий не мало таблиц.
2. Мне придётся сохранить данные во временную таблицу, т.е. написать тучу однотипных запросов
на сохранение данных во временной таблице.
3. Потом если при закрытии формы пользователь скажет "а не хочу я сохранять изменения!"
мне нужно будет добавить изменённые ключивые поля(ключивые поля для таблиц, которые учавствуют в запросе, являющимся источником строк для мой формы).
4. Открыть невидимую форму(что бы сохранились изменения нужно что бы форма всё таки закрылась), на которой, например, при её открытии я буду из тучи моих таблиц удалять по ключевым полям все строки, да ещё потом по нужному порядку из таблицы с временными данными вставлять старые данные в нужные мои таблицы.
Точно нельзя при закрытии формы, где происходят изменения, взять да и отменить сохранение??????? Так как то что написанно выше сделать впринципе можно, но это отнимит очень много времени.
NG
Дата: 26.11.2006 15:22:58
Именно поэтому, -- такой путь только для энтизиастов. Все остальные не заморачиваются. Вам придется сделать выбор. Если вы сильны в программировании и есть желание сделать "как надо" -- делайте (наряду с таблицами подойдут и "отвязанные" рекордсеты). Если нет, -- поступайте как все. Правда, можно еще на DotNet перейти, -- он именно это и делает без вашей головной боли.
ы
Дата: 26.11.2006 15:39:32
qwantor
Дата: 26.11.2006 17:28:22
NG |
Именно поэтому, -- такой путь только для энтизиастов. Все остальные не заморачиваются. Вам придется сделать выбор. Если вы сильны в программировании и есть желание сделать "как надо" -- делайте (наряду с таблицами подойдут и "отвязанные" рекордсеты). Если нет, -- поступайте как все. Правда, можно еще на DotNet перейти, -- он именно это и делает без вашей головной боли. |
Что такое DotNet я не знать не знаю, но мне нужно селать это именно в аксессе(ВБА), без головной боли это делается и в билдере например.
Честно скажу я не знаю что такое "отвязанные" рекордсеты и как их использовать. Подскажите, пожалуйста как их использовать, как с их помощью добиться нужного мне результата!
Заранее спасибо!!!
qwantor
Дата: 26.11.2006 18:44:25
Может конечно я с самого сначала не правильно задал вопрос, но решение проблеммы было до смешного просто: Тупо воспользоваться мастером кнопок, создать кнопочку восстанавливающую записи, и вставить этот код в нужное место(В закрытии программы сделать диалоговое окно Сохранить записи или нет?!!!
mds_world
Дата: 26.11.2006 18:54:25
А вы и сейчас неточно выразились. Вы все время говорили о записях во множественном числе, соответственно и советы были даны на такую постановку. Отменить же одну запись до помещения ее в таблицу - это совершенно другая задача для которой а Акцесс есть инструментарий - метод Undo, которым вы воспользовались в скрытом виде.
rok
Дата: 26.11.2006 19:24:38
Вывести при закрытии формы сообщение с двумя кнопками "ДА" и "НЕТ":"А ТЫ ХОРОШО ПОДУМАЛ? СОХРАНИТЬ ИЗМЕНЕНИЯ"