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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выполнить дейсвие после создания формы 
V
    Опции темы
Djinn
Дата 5.10.2009, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 250
Регистрация: 18.5.2007

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



Здравствуйте.
Вопрос вот в чем:
есть у меня поле для ввода денег (тип денежный) собственно мне нужно чтобы в другом поле выводилось какое-то число в другое такое-же поле.
В общем поле с одним именем приблизительно в 5-ти вариантах может быть (создаются по выборке из запроса), то есть присвоить просто полю то или иное значение нельзя.
Есть модуль в котором ф-я делает такое (к примеру)
Код

Public Function Func()
    If IsNull(Form_Form5.Input1.Value) Then
        Exit Function
    End If
    Form_Form5.Input2.Value = Form_Form5.Input1.Value
End Function


Мне нужно обязательно чтобы во время создания input2 выполнялась эта функция (или во время создания ipput2). В данные ф-ю нельзя впихнуть потому как тогда одно из полей не будет создано, остальные все действия уже относятся к пользователю :(

Надеюсь описал более-менее понятно. заранее благодарен smile

Это сообщение отредактировал(а) Akina - 5.10.2009, 18:55
PM MAIL   Вверх
bopoha
Дата 5.10.2009, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



1. Реализоываете фукнцию в модуле.
2.а Используете ее в качестве источника данных для поля формы, в атрибут данные записывая выражение: =Фукнция()
2.б Релаизовываете обработчик события открытие формы и выполняете Me.Pole.Value = Фeнкция()

P.S. К чему вы обращаетесь посредствам Form_Form5?
В модуле класса, в частности формы, можно использовать ключевое слово Me для доступа к атрибутам и методам текущего класса.
Если вы во внежней фнукции хотите обрабатываеть форму, то лучше делать так:
Код

Public Function Func(ByRef frm As Form_Form5)
    If IsNull(frm.Input1.Value) Then
        Exit Function
    End If
    frm.Input2.Value = frm.Input1.Value
End Function


Вместо "ByRef frm As Form_Form5" можно использовать объявление "ByRef frm As Form", если не известно для какой формы будет вызывана функция.
PM MAIL WWW ICQ Skype GTalk   Вверх
Akina
Дата 5.10.2009, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Модератор: Используя тег кода, смотрите внимательнее, какой именно тип кода задаёте.


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

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


Опытный
**


Профиль
Группа: Участник
Сообщений: 250
Регистрация: 18.5.2007

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



Дело в том что, если указать функцию в источник данных - то:

Код

Поле5.Value

Есть ошибочным... :( типа не обьявлено еще... :(

Цитата(bopoha @  5.10.2009,  17:43 Найти цитируемый пост)
2.б Релаизовываете обработчик события открытие формы и выполняете Me.Pole.Value = Фeнкция()

это не понятно smile


Цитата(bopoha @  5.10.2009,  17:43 Найти цитируемый пост)
1. Реализоываете фукнцию в модуле.

И это тоже smile


Цитата(bopoha @  5.10.2009,  17:43 Найти цитируемый пост)
P.S. К чему вы обращаетесь посредствам Form_Form5?

Я думаю это не важно smile и у меня не модуль типа: Class
PM MAIL   Вверх
bopoha
Дата 5.10.2009, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Djinn, 

Цитата(Djinn @  5.10.2009,  19:23 Найти цитируемый пост)
Есть ошибочным... :( типа не обьявлено еще... :(

Выражения записываются по другому. Воспользуйтесь мастером (кнопка с многоточием в окне Свойств напротив Свойства). Я вообще-то предполагал, что туда будет записана фукнция.

Цитата(Djinn @  5.10.2009,  19:23 Найти цитируемый пост)
это не понятно smile

См. книжку. Темы события форм и обработчики событий.

Цитата(Djinn @  5.10.2009,  19:23 Найти цитируемый пост)
И это тоже smile

Опять, читайте книгу. Любую о программировании Access. Рекомендую "Разработка настольных приложений в MS Access 2003".

P.S.
Цитата(Djinn @  5.10.2009,  19:23 Найти цитируемый пост)
Я думаю это не важно smile и у меня не модуль типа: Class 

Форма это и есть класс.

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


Опытный
**


Профиль
Группа: Участник
Сообщений: 250
Регистрация: 18.5.2007

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



Цитата(bopoha @  5.10.2009,  23:02 Найти цитируемый пост)
См. книжку. Темы события форм и обработчики событий.

Нет событий которые исполняются сами... все Events исполняются с помощью пользователя... например фокус мышки...


Цитата(bopoha @  5.10.2009,  23:02 Найти цитируемый пост)
Выражения записываются по другому. Воспользуйтесь мастером (кнопка с многоточием в окне Свойств напротив Свойства). Я вообще-то предполагал, что туда будет записана фукнция.

Если в данные Поле2(Input2.Value, в которое надо присвоить данные) вписать функцию, то будет ошибка:
Код

Поле5.Value 'недоступно

В Поле1(Input1.Value, которое записываем) данные уже заняты, ибо там стоить поле из запроса (которое собственно и заполняет эти поля). Вот в чем дело :( поэтому и ищу чтобы в выражение еще какой-то Events найти smile кторые выполняется после "Днные" но также автоматически при создании поля smile


bopoha, Сенкс что помогаешь smile
PM MAIL   Вверх
Akina
Дата 6.10.2009, 07:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Нет такого события как создание поля. Вообще нет!
Все необходимые действия по настройке начального вида формы делаются в Form_Load().
Индивидуализация вида контролов выполняется в AfterLayout, BeforeRender, AfterRender или AfterFinalRender.

Не поленитесь посмотреть цепь событий, возникающих при открытии формы.


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

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


Опытный
**


Профиль
Группа: Участник
Сообщений: 250
Регистрация: 18.5.2007

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



Цитата(Akina @  6.10.2009,  07:34 Найти цитируемый пост)
Индивидуализация вида контролов выполняется в AfterLayout, BeforeRender, AfterRender или AfterFinalRender.

Не поленитесь посмотреть цепь событий, возникающих при открытии формы. 


а можно плз ссылочку где можно поконкретнее посмотреть ?
PM MAIL   Вверх
Akina
Дата 6.10.2009, 07:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Ссылочку? F1. Приведёт во встроенную справку. 
Или MDSN.


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

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


Эксперт
***


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

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



Цитата(Djinn @  6.10.2009,  00:34 Найти цитируемый пост)
Нет событий которые исполняются сами... все Events исполняются с помощью пользователя... например фокус мышки...

События вызваются базовым классом Form при наступлении каких-то событий, которые может обработать программист и сделать то, что ему заблогарусидтся. Откройте свойства формы и перейдите на вкладку События. Каждый визуальный элемент (и не только, но это уже детали) на форме содержит кучу событий.

Иницианализцаия формы делается в двух событиях Form_Open или Form_Load. Отличия заключаются в том, что в первом обработчике можно отменить открытие формы.

Цитата(Djinn @  6.10.2009,  07:45 Найти цитируемый пост)
а можно плз ссылочку где можно поконкретнее посмотреть ? 

Встроенной справки достаточно. Рекомендую поставить русский Access 97 (в отедльную папку) со справкой. Там справка на русском и более понятно устроена, чем в Access 2003.

В Access 2003 нужно нажимать F1 из модуля, чтобы получить справку о программировании.

Добавлено через 58 секунд
Что бы долго не разглагольствовать, выкладывайте свою бд с формой.

Это сообщение отредактировал(а) bopoha - 6.10.2009, 10:50
PM MAIL WWW ICQ Skype GTalk   Вверх
Akina
Дата 6.10.2009, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(bopoha @  6.10.2009,  11:49 Найти цитируемый пост)
более понятно устроена, чем в Access 2003.

Это не так. Просто надо не контекстную справку использовать, а идти через оглавление.


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

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


Опытный
**


Профиль
Группа: Участник
Сообщений: 250
Регистрация: 18.5.2007

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



Цитата(bopoha @  6.10.2009,  10:49 Найти цитируемый пост)
Что бы долго не разглагольствовать, выкладывайте свою бд с формой.

http://narod.ru/disk/13889514000/db1.mdb.html Форма5 собственно то что надо... Нужно в Поле5 внести данные из Выражение1 (тоже там поле)

Спасибо smile
PM MAIL   Вверх
bopoha
Дата 6.10.2009, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Djinn, и в чем проблемма?
Укажите поле "Выражение1" в качестве источника данных для поля "Поле5".

Если обязательно хочется фукнцию, то:
Функция у вас реализована не правильно. Стоит ее писать так:
Код

Public Function grn_to_usd(byval value as integer) as integer
      '-- обработка value
      grn_to_usd = 123123 '-- результат обработки
End Function


В качестве источника данных для формы пишите выражение: =grn_to_usd( nz( [Выражение1]; 0 ) ).

В результате функция не зависит от формы ни каким образом и может быть использована где угодно.
PM MAIL WWW ICQ Skype GTalk   Вверх
Djinn
Дата 6.10.2009, 23:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 250
Регистрация: 18.5.2007

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



Мне нужно сделать источник данных: Выражение1 / 10 (разделить на 10 к примеру)


Цитата(bopoha @  6.10.2009,  23:13 Найти цитируемый пост)

Код

Public Function grn_to_usd(byval value as integer) as integer
      '-- обработка value
      grn_to_usd = 123123 '-- результат обработки
End Function



В качестве источника данных для формы пишите выражение: =grn_to_usd( nz( [Выражение1]; 0 ) ).


Чёт не особо понятно как работает...

Это сообщение отредактировал(а) Djinn - 6.10.2009, 23:45
PM MAIL   Вверх
bopoha
Дата 7.10.2009, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(Djinn @  6.10.2009,  23:26 Найти цитируемый пост)
Чёт не особо понятно как работает...

А вы попробуйте. smile

nz() - это функция, которая принимает 2а параметра, возвращает первый параметр, если он не Null иначе второй параметр. 

Что конкретно не понятно?

Цитата(Djinn @  6.10.2009,  23:26 Найти цитируемый пост)
Мне нужно сделать источник данных: Выражение1 / 10 (разделить на 10 к примеру)

Ну тогда так:
Код

Public Function grn_to_usd(byval value as integer) as integer
      '-- обработка value
      grn_to_usd = value / 10 '-- результат обработки
End Function

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

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

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

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


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

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


 




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


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

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