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
Массив, разумеется глобальный.