powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Имя родительского контрола
15 сообщений из 15, страница 1 из 1
Имя родительского контрола
    #32626672
HornetBlack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Либо я что-то запамятовал, либо одно из двух :)
Как можно узнать имя контрола в котором находится подотчет из самого подотчета? В Access-XP Parent.Name возвращает имя основного отчета, а в более ранних акцессах возвращалось, если не ошибаюсь, имя контрола.
Если теперь имя контрола невозможно вернуть, то как можно передать информацию о том из какого контрола вызывается подотчет (при наличии нескольких одинаковых подотчетов)?
...
Рейтинг: 0 / 0
Имя родительского контрола
    #32627444
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Никак. Самый простой способ - завести в подотчете глобальную переменную, из родительского отчета задать значения обоим ее экземплярам, а в самом подотчете проверять ее значение.
...
Рейтинг: 0 / 0
Имя родительского контрола
    #32627627
HornetBlack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо. Значит я еще в своем уме :)
Именно этот вариант я уже и реализовал, хотя и не уверен, что эта кривизна не всплывет в один прекрасный момент...
Блин, когда же мелкомягкие научатся все делать по уму?!... Хотя бы упомянули об этом факте в MSDN...
...
Рейтинг: 0 / 0
Имя родительского контрола
    #32627633
HornetBlack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вдогонку: а поля связи из подотчета также не поймать?
...
Рейтинг: 0 / 0
Имя родительского контрола
    #32627677
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
HornetBlackВдогонку: а поля связи из подотчета также не поймать?
Но это же свойства того же контрола. Значит, точно так же. В эту переменную можно загнать либо имя этого контрола, либо вообще ссылку на него.
...
Рейтинг: 0 / 0
Имя родительского контрола
    #32627782
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что касается подчиненных форм то там есть два способа
возможно и здесь сгодится?

1

if parent.Sub1.form is ME then ....


2
if parent.Sub1.form.hwnd = ME.hwnd then ...
...
Рейтинг: 0 / 0
Имя родительского контрола
    #32627975
IgorM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Продублирую и здесь:
Код: plaintext
1.
2.
3.
Dim ctrl As Control
 For Each ctrl In Me.Parent
  If TypeOf ctrl Is SubForm Then If InStr(ctrl.SourceObject, Me.Name) <>  0  Then MsgBox ctrl.Name
 Next
...
Рейтинг: 0 / 0
Имя родительского контрола
    #32627993
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
IgorMПродублирую и здесь:
Код: plaintext
1.
2.
3.
Dim ctrl As Control
 For Each ctrl In Me.Parent
  If TypeOf ctrl Is SubForm Then If InStr(ctrl.SourceObject, Me.Name) <>  0  Then MsgBox ctrl.Name
 Next

Это не решает поставленную задачу - различить два контрола, у которых одинаковый SourceObject.
...
Рейтинг: 0 / 0
Имя родительского контрола
    #32628042
IgorM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Согласен. Не решает. Был не прав, прошу простить. :)
...
Рейтинг: 0 / 0
Имя родительского контрола
    #32628434
HornetBlack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владимир Саныч HornetBlackВдогонку: а поля связи из подотчета также не поймать?
Но это же свойства того же контрола. Значит, точно так же. В эту переменную можно загнать либо имя этого контрола, либо вообще ссылку на него.

Да нет, про переменную и так все ясно - что нужно мы всегда сможем передать. Получается, что вложенный объект знать не знает о том, откуда его вызвали (по кр.мере о контроле)?
Сейчас опробую вариант с хэндлом окна, но IMHO он маловероятен...
...
Рейтинг: 0 / 0
Имя родительского контрола
    #32628458
HornetBlack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владимир СанычВ эту переменную можно загнать либо имя этого контрола, либо вообще ссылку на него.

Кстати, как-то плохо представляю вариант с пересылкой через переменную ссылки на сам объект, т.к. в этом случае основной отчет должен менять эту переменную в момент форматирования (инициализации?) каждого подотчета, а такого события у него нет - только форматирование раздела. Я сейчас просто сделал глобальный счетчик. В Open и Page основного отчета его инициализирую, а в Open подотчета инкрементирую и использую для корректировки запроса-источника.
...
Рейтинг: 0 / 0
Имя родительского контрола
    #32628479
IgorM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Утро вечера мудренее. :) Так подойдет?

Код: plaintext
1.
2.
3.
4.
5.
6.
 On Error GoTo errCatch
 Dim ctrl As Control
 For Each ctrl In Me.Parent
  If TypeOf ctrl Is SubForm Then If ctrl.Report Is Me Then MsgBox ctrl.Name
 Next
errCatch:
 '...
...
Рейтинг: 0 / 0
Имя родительского контрола
    #32628602
HornetBlack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
АлексейКчто касается подчиненных форм то там есть два способа
возможно и здесь сгодится?
if parent.Sub1.form is ME then ....
if parent.Sub1.form.hwnd = ME.hwnd then ...

Похоже при Open подотчета в контроле он еще не инициализирован (parent.ctrl.Report - недоступен), т.ч. никакие свойства контрола, связанные с подотчетом не вызвать :(
...
Рейтинг: 0 / 0
Имя родительского контрола
    #32628616
HornetBlack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorMУтро вечера мудренее. :) Так подойдет?

Код: plaintext
1.
2.
3.
4.
5.
6.
 On Error GoTo errCatch
 Dim ctrl As Control
 For Each ctrl In Me.Parent
  If TypeOf ctrl Is SubForm Then If ctrl.Report Is Me Then MsgBox ctrl.Name
 Next
errCatch:
 '...


Увы-увы, см. мой ответ Алексею, а заодно сам проверь этот вариант ;)
...
Рейтинг: 0 / 0
Имя родительского контрола
    #32628659
HornetBlack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем, решение, связаное с перебором контролов, действительно рабочее.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Имя родительского контрола
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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