|
|
|
Закрытие БД или окна Акцеса
|
|||
|---|---|---|---|
|
#18+
Как на закрытие БД или окна Акцеса повесить процедуру? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2004, 15:49 |
|
||
|
Закрытие БД или окна Акцеса
|
|||
|---|---|---|---|
|
#18+
Ты хочешь контролировать закрытие самого Access? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2004, 15:56 |
|
||
|
Закрытие БД или окна Акцеса
|
|||
|---|---|---|---|
|
#18+
2Eternal Бывает ведь базу закрывают закрыв Акцес ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2004, 16:03 |
|
||
|
Закрытие БД или окна Акцеса
|
|||
|---|---|---|---|
|
#18+
Сделай невидимую форму, которая стартует вместе с Аксом и на ее onClose повесь свою процедурку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2004, 16:05 |
|
||
|
Закрытие БД или окна Акцеса
|
|||
|---|---|---|---|
|
#18+
2Темный А это единственный способ? Наверное так и сделаю. Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2004, 16:13 |
|
||
|
Закрытие БД или окна Акцеса
|
|||
|---|---|---|---|
|
#18+
>Бывает ведь базу закрывают закрыв Акцес В смысле нажав крестик в заголовке родительского окна Access? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2004, 16:14 |
|
||
|
Закрытие БД или окна Акцеса
|
|||
|---|---|---|---|
|
#18+
2Eternal И крестик тоже. Невидимая форма должна сдесь сработать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2004, 16:16 |
|
||
|
Закрытие БД или окна Акцеса
|
|||
|---|---|---|---|
|
#18+
А почему скрытую? Можно и открытую :) Если есть какая-либо "главная" форма, т.е. которая загружается первой и во время работы всегда открыта. Событие Unload отслеживает любые попытки закрыть форму и при необходимости можно отменить закрывание. Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2004, 16:28 |
|
||
|
Закрытие БД или окна Акцеса
|
|||
|---|---|---|---|
|
#18+
Блокируй данный крестик с помощью WinAPI. Здесь на форуме это рассматривалось.После юзер на него уже не кликнет,а кликнет туда где "выход",вот там и делай процедуру-шпионку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2004, 16:31 |
|
||
|
Закрытие БД или окна Акцеса
|
|||
|---|---|---|---|
|
#18+
Блокировать крестик: 1. не нужно, ибо OnUnload сработает в любом случае; 2. бесполезно, ибо есть еще Alt+F4, но все равно OnUnload сработает в любом случае. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2004, 16:36 |
|
||
|
Закрытие БД или окна Акцеса
|
|||
|---|---|---|---|
|
#18+
Да Unload самое оптимальное. Спасибо всем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2004, 16:39 |
|
||
|
Закрытие БД или окна Акцеса
|
|||
|---|---|---|---|
|
#18+
Кстати, при событии UnLoad в форме свойство Dirty в любом случае = False, независимо от того производились изменения или нет (при этом никаких принудительных сохранений записей не производилось). А если сделать кнопку в обработке которой анализировать Me.Dirty, то отрабатывается нормально и можно сделать Me.Undo при закрытии. Но юзеру остается вариант Ctrl-F4, чтобы закрыть форму без проверок. Как добиться того чтобы в UnLoad правильное Dirty было ? Или при UnLoad запись автоматом сначала сохраняется ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2004, 17:03 |
|
||
|
Закрытие БД или окна Акцеса
|
|||
|---|---|---|---|
|
#18+
> Или при UnLoad запись автоматом сначала сохраняется ? Похоже, что так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2004, 17:08 |
|
||
|
Закрытие БД или окна Акцеса
|
|||
|---|---|---|---|
|
#18+
А что показывает Me.Dirty? Что было событие изменения данных в записи. Попробуйте изменить значение в поле, потом ввести его прежнее значение. Т.е. фактически значение осталось прежним (не изменилось), но Me.Dirty покажет True. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2004, 17:13 |
|
||
|
Закрытие БД или окна Акцеса
|
|||
|---|---|---|---|
|
#18+
Если бы оно так было, то это было бы замечательно. Но прикол в том, что при UnLoad Me.Dirty всегда False. Как же тогда Undo делать при закрытии формы ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2004, 17:15 |
|
||
|
Закрытие БД или окна Акцеса
|
|||
|---|---|---|---|
|
#18+
Вешаю на Form_Load и на Form_Open: Me.Visible=False Все равно вижу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2004, 17:16 |
|
||
|
Закрытие БД или окна Акцеса
|
|||
|---|---|---|---|
|
#18+
Если нельзя на Unload проверку заполнения формы (проверку Dirty), то нехай будет закрытие формы по кнопке , кнопку закрытия окна убрал, но как отловить нажатие Ctrl-F4 ? Некоторые сильно умные юзеры, чтобы обойти проверку заполнения формы давят Ctrl-f4 и усе. На UnLoad проверку повешать можно (для Ctrl-F4 срабатывает), но там, блин, нельзя сделать Me.Undo. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2004, 17:48 |
|
||
|
Закрытие БД или окна Акцеса
|
|||
|---|---|---|---|
|
#18+
Если вам так дорог Dirty, то вы можете сохранять его в переменной: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. В предыдущем сообщении я пытался показать, что не стоит верить Dirty. Он показывает, что данные ИЗМЕНЯЛИ, а не то, что они фактически ИЗМЕНИЛИСЬ. Пользователь изменил данные, потом передумал и ввёл прежние данные, а программа при выходе из формы говорит, что данные изменились. И пользователь спрашивает у ВАС - как же так, данные осталсь прежними, а программа говорит, что данные изменились. После этого у пользователя теряется вера в умный компьютер и умную программу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2004, 17:58 |
|
||
|
Закрытие БД или окна Акцеса
|
|||
|---|---|---|---|
|
#18+
AllllОн показывает, что данные ИЗМЕНЯЛИ, а не то, что они фактически ИЗМЕНИЛИСЬ. Но в вопросе ситуация была обратная - данные ИЗМЕНЯЛИ, а свойство этого НЕ ПОКАЗЫВАЕТ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2004, 18:12 |
|
||
|
Закрытие БД или окна Акцеса
|
|||
|---|---|---|---|
|
#18+
Если Dirty не показывает, данные изменились, то зачем тогда его использовать? Нужны лишние вопросы и упрёки от пользователей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2004, 18:17 |
|
||
|
Закрытие БД или окна Акцеса
|
|||
|---|---|---|---|
|
#18+
Мысль с таймером понятна. Факт изменения данных это отлавливает (пусть данные и вернули в первозданный вид), но тогда нельзя сделать Me.Undo, точнее оно не дает нужного эффекта, т.к. запись при UnLoad уже сохранена. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2004, 06:50 |
|
||
|
Закрытие БД или окна Акцеса
|
|||
|---|---|---|---|
|
#18+
Чем вам так дороги Dirty и Undo, что вы не хотите с ними расстаться? Проще, это не всегда лучше. Один из вариантов "правильной" проверки: 1. переписать редактируемую запись во временную таблицу; 2. форма редактирования подключена к этой временной таблице; 3. перед закрытием сравнить данные в полях этой записи во временной и в "главной" таблице. Если не совпало хотя бы одно поле, то спросить пользователя о сохранении. Достоинство этого метода: 1. запрос о сохранении будет выдаваться, только если данные действительно изменились. Не будет ложных запросов о сохранении, как при использовании Dirty; 2. кроме несовпадений можно проверять и правильность ввода данных. Например, если в поле1 введена дата получения товара, то в поле2 должна быть фамилия получателя. Если это не так, то сообщить пользователю и предложить продолжить редактирование. Недостаток этого метода - количество строк кода будет больше, чем просто Dirty и Undo. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2004, 09:16 |
|
||
|
Закрытие БД или окна Акцеса
|
|||
|---|---|---|---|
|
#18+
Чумаков А. как отловить нажатие Ctrl-F4 ? Запихнуть в AutoKeys и переопределить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2004, 10:25 |
|
||
|
Закрытие БД или окна Акцеса
|
|||
|---|---|---|---|
|
#18+
Не путайте кислое с зеленым. Откат (проверку) изменений производите в BeforeUpdate. в unload вы их уже не увидите. Но при выгрузке, если происходили изменения, события сохранения (в т.ч. BeforeUpdate) все равно наступят. Там вы можете закопить данные о состоянии для употребления их в событии выгрузки (или просто отменить обновление - аксес выдаст запрос на подтверждение закрытия формы БЕЗ изменения данных (при подтверждении пользователем отмены закрытия отменятся и все последующие события). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2004, 11:19 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32385062&tid=1677056]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
195ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
82ms |
get tp. blocked users: |
2ms |
| others: | 245ms |
| total: | 566ms |

| 0 / 0 |
