| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MS Access > Выполнить дейсвие после создания формы |
| Автор: Djinn 5.10.2009, 15:58 | ||
| Здравствуйте. Вопрос вот в чем: есть у меня поле для ввода денег (тип денежный) собственно мне нужно чтобы в другом поле выводилось какое-то число в другое такое-же поле. В общем поле с одним именем приблизительно в 5-ти вариантах может быть (создаются по выборке из запроса), то есть присвоить просто полю то или иное значение нельзя. Есть модуль в котором ф-я делает такое (к примеру)
Мне нужно обязательно чтобы во время создания input2 выполнялась эта функция (или во время создания ipput2). В данные ф-ю нельзя впихнуть потому как тогда одно из полей не будет создано, остальные все действия уже относятся к пользователю :( Надеюсь описал более-менее понятно. заранее благодарен |
| Автор: bopoha 5.10.2009, 17:43 | ||
| 1. Реализоываете фукнцию в модуле. 2.а Используете ее в качестве источника данных для поля формы, в атрибут данные записывая выражение: =Фукнция() 2.б Релаизовываете обработчик события открытие формы и выполняете Me.Pole.Value = Фeнкция() P.S. К чему вы обращаетесь посредствам Form_Form5? В модуле класса, в частности формы, можно использовать ключевое слово Me для доступа к атрибутам и методам текущего класса. Если вы во внежней фнукции хотите обрабатываеть форму, то лучше делать так:
Вместо "ByRef frm As Form_Form5" можно использовать объявление "ByRef frm As Form", если не известно для какой формы будет вызывана функция. |
| Автор: Akina 5.10.2009, 18:55 |
| Модератор: Используя тег кода, смотрите внимательнее, какой именно тип кода задаёте. |
| Автор: bopoha 5.10.2009, 23:02 |
| Djinn, Выражения записываются по другому. Воспользуйтесь мастером (кнопка с многоточием в окне Свойств напротив Свойства). Я вообще-то предполагал, что туда будет записана фукнция. См. книжку. Темы события форм и обработчики событий. Опять, читайте книгу. Любую о программировании Access. Рекомендую "Разработка настольных приложений в MS Access 2003". P.S. Форма это и есть класс. |
| Автор: Djinn 6.10.2009, 00:34 | ||||
Нет событий которые исполняются сами... все Events исполняются с помощью пользователя... например фокус мышки...
Если в данные Поле2(Input2.Value, в которое надо присвоить данные) вписать функцию, то будет ошибка:
В Поле1(Input1.Value, которое записываем) данные уже заняты, ибо там стоить поле из запроса (которое собственно и заполняет эти поля). Вот в чем дело :( поэтому и ищу чтобы в выражение еще какой-то Events найти bopoha, Сенкс что помогаешь |
| Автор: Akina 6.10.2009, 07:34 |
| Нет такого события как создание поля. Вообще нет! Все необходимые действия по настройке начального вида формы делаются в Form_Load(). Индивидуализация вида контролов выполняется в AfterLayout, BeforeRender, AfterRender или AfterFinalRender. Не поленитесь посмотреть цепь событий, возникающих при открытии формы. |
| Автор: Djinn 6.10.2009, 07:45 | ||
а можно плз ссылочку где можно поконкретнее посмотреть ? |
| Автор: Akina 6.10.2009, 07:50 |
| Ссылочку? F1. Приведёт во встроенную справку. Или MDSN. |
| Автор: bopoha 6.10.2009, 10:49 | ||
События вызваются базовым классом Form при наступлении каких-то событий, которые может обработать программист и сделать то, что ему заблогарусидтся. Откройте свойства формы и перейдите на вкладку События. Каждый визуальный элемент (и не только, но это уже детали) на форме содержит кучу событий. Иницианализцаия формы делается в двух событиях Form_Open или Form_Load. Отличия заключаются в том, что в первом обработчике можно отменить открытие формы. Встроенной справки достаточно. Рекомендую поставить русский Access 97 (в отедльную папку) со справкой. Там справка на русском и более понятно устроена, чем в Access 2003. В Access 2003 нужно нажимать F1 из модуля, чтобы получить справку о программировании. Добавлено через 58 секунд Что бы долго не разглагольствовать, выкладывайте свою бд с формой. |
| Автор: Akina 6.10.2009, 10:52 |
Это не так. Просто надо не контекстную справку использовать, а идти через оглавление. |
| Автор: Djinn 6.10.2009, 22:52 | ||
http://narod.ru/disk/13889514000/db1.mdb.html Форма5 собственно то что надо... Нужно в Поле5 внести данные из Выражение1 (тоже там поле) Спасибо |
| Автор: bopoha 6.10.2009, 23:13 | ||
| Djinn, и в чем проблемма? Укажите поле "Выражение1" в качестве источника данных для поля "Поле5". Если обязательно хочется фукнцию, то: Функция у вас реализована не правильно. Стоит ее писать так:
В качестве источника данных для формы пишите выражение: =grn_to_usd( nz( [Выражение1]; 0 ) ). В результате функция не зависит от формы ни каким образом и может быть использована где угодно. |
| Автор: Djinn 6.10.2009, 23:26 | ||||
Мне нужно сделать источник данных: Выражение1 / 10 (разделить на 10 к примеру)
Чёт не особо понятно как работает... |
| Автор: bopoha 7.10.2009, 11:25 | ||||
А вы попробуйте. nz() - это функция, которая принимает 2а параметра, возвращает первый параметр, если он не Null иначе второй параметр. Что конкретно не понятно?
Ну тогда так:
|
| Автор: Djinn 7.10.2009, 15:25 |
| bopoha, Спасибо большое, те + |