Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Присвоить переменной имя формы, чтобы передать данные определённой форме 
V
    Опции темы
Woodlin
Дата 12.11.2009, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 188
Регистрация: 15.7.2009
Где: Челябинская облас ть, г. Пласт

Репутация: 1
Всего: 1



Подскажите как решить проблему: есть форма поиска "Поиск", которая вызывается из формы1 или из формы2 для поиска записи. Не получается сделать так, чтобы найденная запись из формы "Поиск" возвращалась в форму 1 или 2, в зависимости из какой был вызван "Поиск".

Сделал в "Поиск" поле, в которое заносится имя вызвавшей формы и как теперь значение этого поля присвоить переменной никак не пойму. 
PM MAIL ICQ   Вверх
Akina
Дата 12.11.2009, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



В форме поиска должна быть публичная процедура или функция. Именно её и следует вызывать. Само собой по окончании её работы возврат произойдёт в точку вызова.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
bopoha
Дата 12.11.2009, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

Репутация: 21
Всего: 21



Стоит делать примерно так.
Вариант 1. 
В модуле:
Код

Public Function MyFind() As String

    Dim frmPoisk As Form_f_poisk
    
    DoCmd.OpenForm "f_poisk", , , , , acDialog '-- окно открывается как диалоговое
    
    If Not SysCmd(acSysCmdGetObjectState, acForm, "f_poisk") = acObjStateOpen Then
        Exit Function
    End If
    
    Set fromPoisk = Forms("f_poisk")
    MyFind = frmPoisk.GetFilter()
    Set fromPoisk = Nothing
    
End Function


В форме f_poisk:
Код

Public Function GetFilter() as String
     GetFilter = ... '--- выражение поиска
End Function


Вариант 2. Мой любимый. При помощи пользовательских событий. Подробности тут: http://5codelines.net/events1/


PM MAIL WWW ICQ Skype GTalk   Вверх
Woodlin
Дата 13.11.2009, 06:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 188
Регистрация: 15.7.2009
Где: Челябинская облас ть, г. Пласт

Репутация: 1
Всего: 1



bopoha, 
скачал Ваш пример использования пользовательских событий... и упёрся в стену.
У меня вызываемая форма для выбора(поиска) записи имеет субформу(в виде таблицы), собственно содержащую список записей.
 И я не знаю как прописать строчку:
          RaiseEvent OnClientSelect(Me.[Список изложниц].Form![Номер_изложницы]),
   
PM MAIL ICQ   Вверх
bopoha
Дата 13.11.2009, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

Репутация: 21
Всего: 21



Woodlin, 
Цитата(Woodlin @  13.11.2009,  06:33 Найти цитируемый пост)
 И я не знаю как прописать строчку:
          RaiseEvent OnClientSelect(Me.[Список изложниц].Form![Номер_изложницы]),


В чем именно заключается проблемма? Событие это вызывать нужно на кнопке.
И примерчик свой приложите.
PM MAIL WWW ICQ Skype GTalk   Вверх
Woodlin
Дата 13.11.2009, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 188
Регистрация: 15.7.2009
Где: Челябинская облас ть, г. Пласт

Репутация: 1
Всего: 1



bopoha, 
Цитата(bopoha @  13.11.2009,  10:44 Найти цитируемый пост)
В чем именно заключается проблемма? Событие это вызывать нужно на кнопке.
И примерчик свой приложите. 


В своей БД я постарался сделать как в Вашем примере с пользовательскими событиями.
В Вашем примере форма Поиска не содержит субформу, а у меня содержит. 
Проблема в том, что я не смог правильно прописать:
      RaiseEvent OnClientSelect(Me.[Список изложниц].Form![Номер_изложницы]),




О... чуть не забыл свой пример:

Это сообщение отредактировал(а) Woodlin - 13.11.2009, 12:57

Присоединённый файл ( Кол-во скачиваний: 7 )
Присоединённый файл  1.rar 53,10 Kb
PM MAIL ICQ   Вверх
bopoha
Дата 13.11.2009, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

Репутация: 21
Всего: 21



Woodlin, 

Какокго типа значения поля Me.[Список изложниц].Form![Номер_изложницы]?
Строкового.
Какого типа параметр события?
Код

Event OnClientSelect(ByVal lK_KLIENT As Long)

Long.
Делайте выводы.

Информация к размышлению:
1. Переименуйте событие
2. Переименуйте параметр.
3. Пробелы в именах объектов - источник ошибок. Т.к. один или два там пробела не видно. Вместо пробелов лучше использовать символ "_".
Объявить тип формы с пробелом в имени можно так:
Код

Set m_frmKlientSepis = New [Form_Поиск изложницы]

6. Русские буквы в именах объектов, методов, полей то же возможный источник проблем при работе программы в разных версиях Access. Лучше латиница.
PM MAIL WWW ICQ Skype GTalk   Вверх
Woodlin
Дата 14.11.2009, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 188
Регистрация: 15.7.2009
Где: Челябинская облас ть, г. Пласт

Репутация: 1
Всего: 1



bopoha, 

Цитата(bopoha @  13.11.2009,  18:16 Найти цитируемый пост)
Информация к размышлению:
1. Переименуйте событие
2. Переименуйте параметр.
3. Пробелы в именах объектов - источник ошибок. Т.к. один или два там пробела не видно. Вместо пробелов лучше использовать символ "_".
Объявить тип формы с пробелом в имени можно так:
Set m_frmKlientSepis = New [Form_Поиск изложницы]


всё исправил, отлично работает.
Спасибо  smile 
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS Access"
Akina
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] и [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Access | Следующая тема »


 




[ Время генерации скрипта: 0.0486 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.