Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как сделать ПРАВЕЛЬНЫЙ справочник / 15 сообщений из 15, страница 1 из 1
06.02.2003, 11:07
    #32102099
AlexNiko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать ПРАВЕЛЬНЫЙ справочник
Как сделать функцию что бы она на входе открывала форму а на выходе, при закрытии формы-справочника давала значение выбранное в форме.
...
Рейтинг: 0 / 0
06.02.2003, 11:14
    #32102114
sFx
sFx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать ПРАВЕЛЬНЫЙ справочник
давала куда? можно это значение помещать в глобальную переменную например, а можно в качестве аргумента при открытии другой формы...
...
Рейтинг: 0 / 0
06.02.2003, 11:29
    #32102129
Savik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать ПРАВЕЛЬНЫЙ справочник
И не забыть при открытии формы указывать параметр acDialog, чтобы выполнение функции остановилось до закрытия формы.
...
Рейтинг: 0 / 0
06.02.2003, 11:33
    #32102132
AlexNiko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать ПРАВЕЛЬНЫЙ справочник
В том то и дело что использовать это надо будет для вставки в различные формы так что аргумент формы отпадает, а хотелось бы видеть нечто подобное:
Код: plaintext
1.
me.mesto=getfromspavka()
...
Рейтинг: 0 / 0
06.02.2003, 11:37
    #32102136
Savik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать ПРАВЕЛЬНЫЙ справочник
Ну и напиши

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
function getfromspavka() as integer

docmd.openform  "name" ,,,acDialog
' в форме при закрытии присвой значение переменной Public ret_val'

getfromspavka=ret_val

end function

...
Рейтинг: 0 / 0
06.02.2003, 13:45
    #32102252
ДиД
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать ПРАВЕЛЬНЫЙ справочник
>savik
а как быть с размерами формы справочника? если открывать как acDialog, то ничего нельзя изменить.
...
Рейтинг: 0 / 0
06.02.2003, 14:06
    #32102278
Savik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать ПРАВЕЛЬНЫЙ справочник
Ну если ОЧЕНЬ надо, то можно написать обработчик onMouseMove и захреначить изменение размера.
Правда зачем это нужно - не очень понимаю. Не слишком напрягает та же особенность MsgBox ?
...
Рейтинг: 0 / 0
06.02.2003, 14:10
    #32102281
AlexJuice
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать ПРАВЕЛЬНЫЙ справочник
А можно еще перед вызовом формы обнулить переменную (ну или задать для нее какое-то неподходящее значение),
а в функции сделать:

Код: plaintext
1.
2.
Do While MyVar= 0 
   DoEvents
Loop


Не очень хооршо, конечно, но работать должно ;0)
...
Рейтинг: 0 / 0
06.02.2003, 15:47
    #32102410
vladK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать ПРАВЕЛЬНЫЙ справочник
Если комплексуешь по поводц глобальных переменных (как я например), сохраняй значение - результат работы формы в её же свойстве TAG.
...
Рейтинг: 0 / 0
08.02.2003, 03:06
    #32103320
SM
SM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать ПРАВЕЛЬНЫЙ справочник
А может Вам нужно полученное значение помещать сразу в поле основной формы?
...
Рейтинг: 0 / 0
08.02.2003, 14:02
    #32103391
MixaCh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать ПРАВЕЛЬНЫЙ справочник
Народ!!! Ну почему вечно одни глобальные переменные??!?!
Если вер. 2.0 - согласен, базара нет.... да и то.. зачем глобальные?!?
Они имеют тенденцию превращаться в мусорные ямы, да и ... не красиво это!!!

Ведь с 97 появились Propert'я - очень полезная штучка...
У себя переписал почти все Public переменные на Property - красота...

А механизм вызова справочника у меня примерно следующий:
1. Одна форма на все справочники и одна функция вызова...
2. По номеру справочника определяется описание, расположение элементов и пр... то бишь динамически настраивается форма (вплоть до конкретного вида под каждого пользователя).
3. В форму справочника передается Control (Set Property), в который надо вернуть значение после выбора пользователем). Естественно под него в форме справочника есть Private переменная типа Control. (в принципе, конечно можно использовать и Public переменную в форме...)
4. В этом случае не нужны никакие acDialog и пр... - обычная нормальная форма..
5. Tag - тоже не рекомендовал бы использовать для возврата значений... - имеет свойство сохраняться при закрытии формы - и в принципе таже самая муссорная яма....

2 All:
Естественно это только мое видение - никого не хотел обидеть!!!!
...
Рейтинг: 0 / 0
08.02.2003, 16:31
    #32103413
Julius
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать ПРАВЕЛЬНЫЙ справочник
А вообще, конечно, в VBA, хвала Биллу Гейтсу есть события классов, а модули форм - это тоже модули классов.
По-этому, в модуле формы-спраовчника можно написать свое событие:

Public Property ObjectChange(Id As Variant)

В событии AfterUpdate() формы-спарвочника:

Private Sub Form_AfterUpdate()
RaiseEvent ObjectChange(Me!Id)

End Sub

В вызввающей форме тогда надо писать:

Private WithEvents Frm As Form_Справочник

В событии кнопки Click:

Private Sub Кнопка_Click()
Set Frm = New Form_Справочник
Frm.Caption = "Подпись для формы-српавочника"
Frm.Visible = True
End Sub

Потом пишем обработчик для события нашей формы:

Private Sub Frm_ObjectChange(Id As Variant)
Me.Поле = Id
Frm.SteFocus
DoCmd.Close

End Sub

Преимуществ такого подхода множество:

1. Форму-справочник можно отобразить на экране много раз одновременно
2. форма-справочник ничего не должна знать о том, кто ее вызывает
3. вызывающая форма, напротив точно знает, зачем вызвала форму-справочник и что делать с кодом записи, который вернуло ее событие
4. Можно настроить некоторые свойства справочника, например, caption до того, как форма будет отображена на экране. Можно также применить фильтры, выбрать запись, начать изменение и т.п. - на Ваш вкус

Этот подход, строго говоря самый универсальный и правильный, поскольку если справочник универсален, незачем в нем описывать его реакцию на разного рода формы его вызова.
...
Рейтинг: 0 / 0
08.02.2003, 18:12
    #32103434
MixaCh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать ПРАВЕЛЬНЫЙ справочник
2 Julius:
Рад, что есть единомышленники!!!!
Надеюсь, что их много!!!!
...
Рейтинг: 0 / 0
10.02.2003, 12:30
    #32103782
Savik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать ПРАВЕЛЬНЫЙ справочник
Ну, понеслось!
Последователи Вирта и Страуструпа, апологеты ООП!
Всё это прикольно, но для такой элементарной задачи всё же проще, не мудрствуя лукаво, записать в глобальную переменную, тем более, что за время закрытия формы никаких мусорных ям не образуется.
...
Рейтинг: 0 / 0
10.02.2003, 15:03
    #32103918
MixaCh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать ПРАВЕЛЬНЫЙ справочник
Так вопрос звучал "Как сделать ПРАВЕЛЬНЫЙ справочник"!!!!

Вот и отвечаем - как правильный, а не какой попало....
Причем согласен, что потенциально из справочника может вызываться лругой справочник - поэтому New - правильнее, чем старый OpenForm.....

А насчет последователей - спасибо, видимо это был комплимент.....
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как сделать ПРАВЕЛЬНЫЙ справочник / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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