Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / О сколько нам открытий глючных готовит мелкософта дух! / 5 сообщений из 5, страница 1 из 1
23.07.2003, 13:10
    #32215534
Лифчик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О сколько нам открытий глючных готовит мелкософта дух!
Не, ну я балдею простооооо!
Закидайте меня дохлыми енотами, уничтожьте словечками обидными, ламером обзовите...
Либо я совершенно не понимаю особенности передачи управления между аксессовскими формами, либо во всей этой байде какие-то фундаментальные кривульки заложены и постоянно на рыло свиное натыкаешься.
Объясняю.
Изобрел для своих нужд форму (Progress)- по сути некая мерцающая по таймеру картинка, говорящая о том, что юзер в настоящий момент производит какие-то специальные действия и надо быть внимательным. Форма состоит из BoundObjectFrame (thanx Саныч) - собственно меняющийся кадр (Me.Kadr), в нем можно или женщину голую разместить, или призывы типа "НЕ ОТЛУЧАЙТЕСЬ! Завершите операцию.", и текстового поля, в котором НЕ мерцает текстовая инструкция. Обращаться хотел из разных мест, чтобы при вызове просто менять требуемые картинки и инструкции. Вот текст модулей формы.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
Option Compare Database
Public Counter As Long, NumOfKadr As Long
Public StandardBar As String
Public rs As DAO.Recordset

Private Sub Form_Load()
Counter =  0 
StandardBar =  "ProgressBar1"  'В таблице ProgressBar1 - покадрово мультик
If Not IsNull(Me.OpenArgs) Then
StandardBar = Me.OpenArgs
End If
Set rs = CurrentDb.OpenRecordset(StandardBar)
NumOfKadr = rs.RecordCount
End Sub

Private Sub Form_Timer()
Dim i As Long
Counter = Counter +  1 
With rs
.MoveFirst
i =  0 
Do Until .EOF
If (Counter Mod NumOfKadr) = i Then
Me.Kadr = rs!Picture
DoEvents
Exit Sub
End If
.MoveNext
i = i +  1 
Loop
End With
End Sub

Теперь дальше. Есть основная форма (Form) - single, типа карточки клиента, а в нее встроена табличная Subform, вроде как список сотрудников фирмы-клиента. Subform естественно, прилинкована к главной форме.
Немного о том, какую операцию хочу исполнять, чтобы понятно было, зачем мне прогрессбар.
Операция простая - удаление персоны из списка сотрудников. Удаление происходит безболезненно, если в связанной таблице (Письма) нет соответствующих записей. Если письма у товарисча есть, то я помечаю его и предлагаю в той же подчиненной форме тыркнуться на ДРУГУЮ запись, чтобы перекинуть переписку на другого человека (естественно, с пометками).
Пока не было обращения к Progress, все нормально работало - событие в подформе Form_Delete активизировало Form_Current и письма я благополучно перекидывал на другого чела.
И вот теперь я на свою голову в событии Form_Delete поставил вызов прогрессбара

Код: plaintext
1.
DoCmd.OpenForm  "Progress"  'Запуск ProgressBar
Forms!Progress.ProgressText =  "Ткните мышью на человека, на которого будет переведена почта" 

Результат. Форма Progress загружается, картинка мерцает, инструкция на экране, НО:
1. Subform (список людей) теряет событие Current (причем другие события, напр. ДблКлик - остаются), и что самое интересное!!!-
2. Subform ОТВЯЗЫВАЕТСЯ ОТ ГЛАВНОЙ ФОРМЫ!!! Т.е. если я главную форму вызывал из другой, то Requery Главной НЕ ПРИВОДИТ к обновлению подчиненной!!!


Вот, собственно, все. Я кончил.
А Вы что на это скажете?
...
Рейтинг: 0 / 0
23.07.2003, 14:22
    #32215690
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О сколько нам открытий глючных готовит мелкософта дух!
Предагаю вариант. Вместо вытаскивания картинки из рекордсета - сделать сабформу, которая будет сидеть на таблице с картинками, и менять ей фильтр.
...
Рейтинг: 0 / 0
23.07.2003, 14:48
    #32215757
Лифчик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О сколько нам открытий глючных готовит мелкософта дух!
Саныч, это как всегда хорошая идея. Т.е. как я ее понял, можно открыть форму с картинками заранее, минимизировать ее, а потом в зависимости от ситуации поднимать с разными фильтрами? Главное наверное - избегать DoCmd.OpenForm в обработчике события.
Но мне вообще интересно, что произошло - то ли мои неумелые действия (какие?) вызвали отрыв подформы от формы и потерю Current, то ли это бага акса. Было у кого-нибудь такое?
...
Рейтинг: 0 / 0
23.07.2003, 14:49
    #32215760
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О сколько нам открытий глючных готовит мелкософта дух!
Не мнимизировать, а открыть в виде сабформы.

Про прочее не знаю. :^)
...
Рейтинг: 0 / 0
23.07.2003, 19:20
    #32216226
Лифчик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О сколько нам открытий глючных готовит мелкософта дух!
Углубляюсь в предмет. Беру свои слова про Current назад. Событие происходит. Не происходит вот что.
Собираясь удалить запись, я с первого прохода ее мечу, т.е в таблице есть поле Flag , в которое заношу галочку. Все это происходит в событии

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Private Sub Form_Delete(Cancel As Integer)
if me.flag = false then
me.flag = true

'Дальше я делаю
me.refresh
'чтобы галочка занеслась в таблицу. Потом эту галочку обрабатывает событие Current
...
<ВСЯКИЙ ПРОВЕРОЧНЫЙ КОД>
...
cancel=True
end if
end sub


Не знаю, корректно ли в событии Delete ставить Refresh (вроде как спасать запись, которую собираешься удалить), но пока во <ВСЯКОМ ПРОВЕРОЧНОМ КОДЕ> нет обращения к DoCmd - все работает нормально, т.е. после обработки события Delete я лицезрею в табличке галочку против намечаемого к удалению чела и текущая запись НЕ ЗАБЛОКИРОВАНА!
А вот если я в проверочный код эту DoCmd вставляю - то ВСЕ - после обработки Delete никакой галочки нет, а запись заблокирована (перечеркнутый ноль сбоку). Соответственно, все остальное происходит криво.

Это тонкий момент, или толстые обстоятельства моих пробелов в образовании?
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / О сколько нам открытий глючных готовит мелкософта дух! / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]