DoCmd.Close на Form_Error
emt
Дата: 13.09.2005 14:01:31
adp - проект. access 2003
Есть главная форма, на ней подчиненая. На подчиненой делается обработка события Form_Error - на случай, если нет разрешения для просмотра записей для формы, закрыть все это хозяйство.
Закрывается все командой DoCmd.Close acForm, Me.Parent.Name.
Проблема - вместо закрытия форм валится сам Access.
Никто не сталкивался?
Latuk
Дата: 13.09.2005 14:19:25
попробуй закрыть через API
Public Const SW_HIDE = 0
Public Const SW_SHOWNORMAL = 1
Public Const SW_NORMAL = 1
Public Const SW_SHOWMINIMIZED = 2
Public Const SW_SHOWMAXIMIZED = 3
Public Const SW_MAXIMIZE = 3
Public Const SW_SHOWNOACTIVATE = 4
Public Const SW_SHOW = 5
Public Const SW_MINIMIZE = 6
Public Const SW_SHOWMINNOACTIVE = 7
Public Const SW_SHOWNA = 8
Public Const SW_RESTORE = 9
Public Const SW_SHOWDEFAULT = 10
Public Const SW_MAX = 10
Public Const WM_CLOSE = &H10
Public Const INFINITE = &HFFFFFFFF
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
( _
ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Any _
) _
As Long
'------------------------------------------------------------
SendMessage(Me.Parent.hwnd, WM_CLOSE, 0&, 0&) |
emt
Дата: 13.09.2005 14:26:39
2 Latuk
спасибо, пробовал - та-же история.
Latuk
Дата: 13.09.2005 14:46:39
А если DoCmd.Close закоментировать
форма в ручную то закрывается ?
типа ежели мышой по крестику шамкнуть.
и еще не очень понятно что значит
" нет разрешения для просмотра записей для формы"
У Юзера нет прав на ХП-ку источник формы ?
emt
Дата: 13.09.2005 15:09:55
>А если DoCmd.Close закоментировать
форма в ручную то закрывается ?
типа ежели мышой по крестику шамкнуть.
закрывается нормально
>и еще не очень понятно что значит
" нет разрешения для просмотра записей для формы"
У Юзера нет прав на ХП-ку источник формы ?
да
Polev
Дата: 13.09.2005 15:17:54
Может все-таки записать в глобальную переменную в случае ошибки значение и по этому значению закрывать форму по событию открытие главной?
emt
Дата: 13.09.2005 15:21:47
2 Polev
можно конечно,
но есть идея написать функцию на все случаи Form_Error и на каждую форму вешать, так что-бы не заморачиваться.
AlTis
Дата: 13.09.2005 15:22:00
А если сделать проще:
в случае возникновения ошибки, в источник строк подсунуть "Нет записей для отображения".
Polev
Дата: 13.09.2005 15:31:01
2emt
Создай массив типа
(("FormName1","0"),("FormName2","0"))
Стандартная процедура добавления/изменения этого массива
Стандартная функция чтения из этого массива.
Тогда на событие Error даешь
call AddOrChange(me.Parent.name)
На открытие главной стандартное
if readCloseParametr(me.form.name) = "1" then docmd.close......
PS
При придумывании имен процедур и функций реальные люди не пострадали.
Polev
Дата: 13.09.2005 15:31:28
Массив, разумеется глобальный.