Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Закрытие формы на Activate  [new]
Sfagnum
Member

Откуда: из лесу
Сообщений: 1492
Выдаёт ошибку:
Run-time error '2585':

This action can't be carried out while processing a form or report event


как бы мне закрыть её, просто на Activate проверяються некоторые условия и в определённом случае надо прикрыть формочку...
19 авг 03, 12:10    [305486]     Ответить | Цитировать Сообщить модератору
 Re: Закрытие формы на Activate  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
При выходе из Activate включаем таймер, в таймере закрываем форму.
19 авг 03, 12:21    [305498]     Ответить | Цитировать Сообщить модератору
 Re: Закрытие формы на Activate  [new]
Sfagnum
Member

Откуда: из лесу
Сообщений: 1492
Извени никогда с таймером не работал, не покажешь?
19 авг 03, 12:24    [305502]     Ответить | Цитировать Сообщить модератору
 Re: Закрытие формы на Activate  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
Private Sub Form_Activate()

...
If ... Then Me.TimerInterval = 1000
End Sub

Private Sub Form_Timer()
DoCmd.Close acForm, Me.Name
End Sub

' :^)
19 авг 03, 12:31    [305521]     Ответить | Цитировать Сообщить модератору
 Re: Закрытие формы на Activate  [new]
Sfagnum
Member

Откуда: из лесу
Сообщений: 1492
Пасибки
19 авг 03, 12:36    [305538]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Закрытие формы на Activate  [new]
Лифчик
Member

Откуда:
Сообщений: 1699
Кстати, в каком событии, кроме таймера, форма может закрывать саму себя? Что-то у меня получается, что ни в каких готфокусах и афтерапдейтах нельзя и идет та же ошибка 2585. Неужели путь с таймером - единственный, чтобы разорвать эти дурацкие транзакции?
13 сен 04, 11:40    [954274]     Ответить | Цитировать Сообщить модератору
 Re: Закрытие формы на Activate  [new]
АлексейК
Member

Откуда: http://www.msdatabase.ru , Moscow
Сообщений: 7683
Private Sub Form_Open(Cancel As Integer)
Cancel = True
End Sub
13 сен 04, 11:58    [954353]     Ответить | Цитировать Сообщить модератору
 Re: Закрытие формы на Activate  [new]
Victosha
Member

Откуда: Москва
Сообщений: 2620
Лифчик
Кстати, в каком событии, кроме таймера, форма может закрывать саму себя? Что-то у меня получается, что ни в каких готфокусах и афтерапдейтах нельзя и идет та же ошибка 2585. Неужели путь с таймером - единственный, чтобы разорвать эти дурацкие транзакции?


KeySend
13 сен 04, 11:59    [954359]     Ответить | Цитировать Сообщить модератору
 Re: Закрытие формы на Activate  [new]
Лифчик
Member

Откуда:
Сообщений: 1699
АлексейК
Private Sub Form_Open(Cancel As Integer)
Cancel = True
End Sub
Спасибо, Алексей! Получил заряд бодрости до конца раб.дня:)

PS Понятно, альтернативы нет
13 сен 04, 12:09    [954389]     Ответить | Цитировать Сообщить модератору
 Re: Закрытие формы на Activate  [new]
Лох Позорный
Member

Откуда:
Сообщений: 9898
2 Лифчик
Почему это на афтерапдейтах нельзя закрывать?
Private Sub Form_AfterUpdate()
    DoCmd.Close acForm, Me.Name
End Sub
и усе работает.
13 сен 04, 12:13    [954405]     Ответить | Цитировать Сообщить модератору
 Re: Закрытие формы на Activate  [new]
Лифчик
Member

Откуда:
Сообщений: 1699
Лох Позорный
2 Лифчик
Почему это на афтерапдейтах нельзя закрывать?

Private Sub Form_AfterUpdate()
    DoCmd.Close acForm, Me.Name
End Sub
и усе работает.

Вот такой комплект событий не работает с ошибкой 2585
Private Sub Form_AfterUpdate()
DoCmd.Close acForm, FormName, acSaveYes
End Sub

Private Sub HyperLinkControl_AfterUpdate()
...
Me.Refresh
End Sub

Private Sub HyperLinkControl_GotFocus()
DoCmd.RunCommand acCmdEditHyperlink
End Sub
13 сен 04, 13:01    [954622]     Ответить | Цитировать Сообщить модератору
 Re: Закрытие формы на Activate  [new]
Лох Позорный
Member

Откуда:
Сообщений: 9898
А зачем тебе Me.Refresh на афтерапдейте контрола?
Может это такой модный способ запись сохранить?
Замени эту строчку на Me.Dirty = False и радуйся жизни :)
13 сен 04, 13:07    [954667]     Ответить | Цитировать Сообщить модератору
 Re: Закрытие формы на Activate  [new]
Лифчик
Member

Откуда:
Сообщений: 1699
Лох Позорный
А зачем тебе Me.Refresh на афтерапдейте контрола?
Может это такой модный способ запись сохранить?
Замени эту строчку на Me.Dirty = False и радуйся жизни :)
Это такой новомодный способ инициировать событие формы автерапдейт, в котором магическое действие закрытия осуществляется. Но я заменил на твое грязное дёти - и радуюсь жизни с тем же самым кодом 2585 :(

ЗЫ Могу закрыть только таймером, блин
13 сен 04, 13:26    [954796]     Ответить | Цитировать Сообщить модератору
 Re: Закрытие формы на Activate  [new]
Лох Позорный
Member

Откуда:
Сообщений: 9898
Это такой новомодный способ инициировать событие формы автерапдейт

Это весьма странный способ инициировать событие формы афтерапдейт. Через жопу автогеном.
Событие само инициируется - когда запись сохранится. Вот и сохраняй запись. Хоть через DoCmd.RunCommand acCmdSaveRecord, хоть через Dirty. Делать Refresh и перепрочитывать все данные - не нужно, хоть оно и запись сохранит тоже.

Но я заменил на твое грязное дёти - и радуюсь жизни с тем же самым кодом 2585 :(

у меня работает. аксес 97 и XP
чего-то ты не договариваешь.
13 сен 04, 13:34    [954843]     Ответить | Цитировать Сообщить модератору
 Re: Закрытие формы на Activate  [new]
Victosha
Member

Откуда: Москва
Сообщений: 2620
Лифчик

Вот такой комплект событий не работает с ошибкой 2585
Private Sub Form_AfterUpdate()
DoCmd.Close acForm, FormName, acSaveYes
End Sub

Private Sub HyperLinkControl_AfterUpdate()
...
Me.Refresh
End Sub

Private Sub HyperLinkControl_GotFocus()
DoCmd.RunCommand acCmdEditHyperlink
End Sub


Код, который ты привел - страноватенький, конечно.
То, о чем говорил ЛП - работает:

Private Sub HyperLinkControl_AfterUpdate()
DoCmd.Close acForm, FormName, acSaveNo
End Sub

Видимо, ты пытаешьсяя сказать о ситуации, при которой код, размещенный
в afterUpdate контрола формы приводит к возникновению событий на другом контроле...
13 сен 04, 13:39    [954878]     Ответить | Цитировать Сообщить модератору
 Re: Закрытие формы на Activate  [new]
Лох Позорный
Member

Откуда:
Сообщений: 9898
Кстати, после вызова DoCmd.RunCommand acCmdEditHyperlink - и у меня перестало работать :)
13 сен 04, 13:40    [954881]     Ответить | Цитировать Сообщить модератору
 Re: Закрытие формы на Activate  [new]
Лифчик
Member

Откуда:
Сообщений: 1699
Лох Позорный
Это такой новомодный способ инициировать событие формы автерапдейт

Делать Refresh и перепрочитывать все данные - не нужно, хоть оно и запись сохранит тоже.
Но я заменил на твое грязное дёти - и радуюсь жизни с тем же самым кодом 2585 :(

у меня работает. аксес 97 и XP
чего-то ты не договариваешь.
СанСаныч(?), принимаю все обвинения. Есть только одна отмаза - форма с одним контролом, контрол источник берет из таблы, состоящей из одной строки. И вообще, все что здесь делается - делается через ж.пу, потому что комбо не наследует нужных свойств.

ЗЫ Я все сказал и чист перед тобой. Тока может вот эта строка подло клинит - DoCmd.RunCommand acCmdEditHyperlink? Я этот диалог САМ не закрываю, только ОК ему нажимаю. Он запоминает то что надо где надо, но может не закрывается сразу и клинит транзакцию апдейта моего поля и формы?
13 сен 04, 13:48    [954937]     Ответить | Цитировать Сообщить модератору
 Re: Закрытие формы на Activate  [new]
Лох Позорный
Member

Откуда:
Сообщений: 9898
за что я и не люблю объект DoCmd
уж слишком он асинхронный :(
13 сен 04, 13:51    [954963]     Ответить | Цитировать Сообщить модератору
 Re: Закрытие формы на Activate  [new]
Лифчик
Member

Откуда:
Сообщений: 1699
Да, точно. Помнишь, в прошлом году я тебе базу высылал? Там на форме в событии OnDelete пытался путем DoCmd просто запустить другую форму, и эта пакость ставила на запись какую-то лишнюю блокировку. Может это как-то для Фака сформулировать, типа "Поменьше используйте DoCmd в событиях апдейта и делита, и вообще поменьше ее используйте ":)
13 сен 04, 14:01    [955012]     Ответить | Цитировать Сообщить модератору
 Re: Закрытие формы на Activate  [new]
Victosha
Member

Откуда: Москва
Сообщений: 2620
Лох Позорный
за что я и не люблю объект DoCmd
уж слишком он асинхронный :(


2 ЛП - !!!!!!! ЧТО ТЫ СКАЗАЛ ТЫ САМ ТО ПОНЯЛ????????
ЭТОЖЕ И ЕСТЬ ТО ЛЕКАРСТВО,
КОТОРОЕ ТЫ В СВОЕМ ПЕРВОМ ОТВЕТЕ ПРОПИСЫВАЛ...

ажно комментарии в глотке застряли...


2 Лифчик
блин, я уже потерялся - в какой поток тебе отвечать...

Я понял кажется наконец, о чем ты так долго спрашива.
САМОЕ ИНТЕРЕСНОЕ, ЧТО ТЫ ЭТО СДЕЛАЛ!!!
Осталась одна запятая... Кадется, её можно поставить...

(Я бы не додумался до твоей идеи)

Скажы - ты имитируешь вызов контрола ред. гиперлинк "по требованию"?

То есть, твоя форма нужна только для того, чтобы достучаться до контрола
редактирования гиперлинка - так?
13 сен 04, 14:56    [955231]     Ответить | Цитировать Сообщить модератору
 Re: Закрытие формы на Activate  [new]
Лох Позорный
Member

Откуда:
Сообщений: 9898
Victosha
2 ЛП - !!!!!!! ЧТО ТЫ СКАЗАЛ ТЫ САМ ТО ПОНЯЛ????????
ЭТОЖЕ И ЕСТЬ ТО ЛЕКАРСТВО,
КОТОРОЕ ТЫ В СВОЕМ ПЕРВОМ ОТВЕТЕ ПРОПИСЫВАЛ...

Это к чему?
Ну не люблю я DoCmd, чтож теперь поделать. Иногда им все-таки приходится пользоваться (ну не умею я по другому формы закрывать), менее асинхронным он от этого не становится.
13 сен 04, 15:00    [955240]     Ответить | Цитировать Сообщить модератору
 Re: Закрытие формы на Activate  [new]
Victosha
Member

Откуда: Москва
Сообщений: 2620
Лох Позорный
Victosha
2 ЛП - !!!!!!! ЧТО ТЫ СКАЗАЛ ТЫ САМ ТО ПОНЯЛ????????
ЭТОЖЕ И ЕСТЬ ТО ЛЕКАРСТВО,
КОТОРОЕ ТЫ В СВОЕМ ПЕРВОМ ОТВЕТЕ ПРОПИСЫВАЛ...

Это к чему?
Ну не люблю я DoCmd, чтож теперь поделать. Иногда им все-таки приходится пользоваться (ну не умею я по другому формы закрывать), менее асинхронным он от этого не становится.


Это к тому - что форма - она вся асинхронная. И иногда пребывает в режимах, когда "синхронная" попытка подергать за некое действие не проходит
- в силу незавершенности текущего действия и их "режимной" несовместности.

DoCmd - он в такой ситуации ОБЯЗАН и не может не быть асинхронный -синхронный он на х";ен никому не нужен. А такое впечатление - что он не полностью следует своей желательной и необходимой программисту асинхронности.

Не любить его легко - заменить непросто.
Подозреваю, что не любишь ты его именно в тех местах, где он твои АСИНХРОННЫЕ ожидания не оправдывает...
13 сен 04, 15:08    [955264]     Ответить | Цитировать Сообщить модератору
 Re: Закрытие формы на Activate  [new]
Лох Позорный
Member

Откуда:
Сообщений: 9898
2 Victosha
Ты знаешь, вот когда я форму закрываю с помощью DoCmd.Close (снаружи, а не из самой же формы), то я ожидаю, что после отработки этой команды - форма будет закрыта. События там всякие отработают, из коллекции Forms она пропадет. Вот такое вот у меня скромное желание. А аксесу с его DoCmd на мои желания плевать. Сколько раз сталкивался, что DoCmd.Close отрабатывает, причем без ошибок, а форма еще не закрыта, обработчик события закрытия не отработал, из коллекции не пропало. Свинство. Когда оно отработает целиком и полностью - одному DoCmd известно.

Вот и кажись подобное свинство. DoCmd.RunCommand acCmdEditHyperlink непонятно когда запись/форму освобождает, а без этого хрен закроешь.

Так что не люблю я DoCmd именно в тех местах, где он мои СИНХРОННЫЕ ожидания не оправдывает.
13 сен 04, 15:19    [955306]     Ответить | Цитировать Сообщить модератору
 Re: Закрытие формы на Activate  [new]
Лох Позорный
Member

Откуда:
Сообщений: 9898
Кстати, COM-овские объекты по определению синхронны
Внутри своих методов они могут вызывать ассинхронные куски кода на выполнения, но сами методы - синхронны.
Вот зачем DoCmd асинхронностью балуется - я понять не могу.
13 сен 04, 15:22    [955314]     Ответить | Цитировать Сообщить модератору
 Re: Закрытие формы на Activate  [new]
Лифчик
Member

Откуда:
Сообщений: 1699
Victosha

Скажы - ты имитируешь вызов контрола ред. гиперлинк "по требованию"?

То есть, твоя форма нужна только для того, чтобы достучаться до контрола
редактирования гиперлинка - так?
Иес. Раз контрол в подчиненной форме потерял нужные мне гиперлинковые свойства (в т.ч. - возможность вызова диалога), то я и хочу передать фокус на другой, подходящий контрол. Но самое интересное, что некто "бывает" в другой ветке подсказал, как подходящий контрол на главной форме устроить. Щас буду делать. Или есть еще какие-нить соображения? Всегда рад...

Блин, я на форуме в основном в роли просителя выступаю, стыдно, пора уже начать самому советы давать. Тока я не успеваю чаще всего :)
13 сен 04, 15:26    [955329]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft Access Ответить