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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> отловить событие перед вставкой новой записи, событие перед вставкой новой записи 
V
    Опции темы
Perun
Дата 27.3.2008, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Нашёл похожую тему, но там не было того что мне надо.
Мне просто перед добаавлением записи(стнадартной кнопкой перехода на форме)
надо проверить все ли поля заполнены - это выпадающие списки и поля ввода. 
Я взял событие Private Sub Form_BeforeInsert(Cancel As Integer)
В нём написал код: 

Код

Private Sub Form_BeforeInsert(Cancel As Integer)
  If IsNull(Me.КодПодкарМат) Then
     MsgBox "Заполните поле 'Подкарантинный материал'"
     Me.КодПодкарМат.SetFocus
     Exit Sub
  End If
  If IsNull(Me.КодЕдИзм) Then
     MsgBox "Заполните поле 'Единица измерения'"
     Me.КодЕдИзм.SetFocus
     Exit Sub
  End If
  If IsNull(Me.Количество) Then
     MsgBox "Заполните поле 'Количество'"
     'Me.Количество.SetFocus
     Exit Sub
  End If
  If IsNull(Me.Страна) Then
     MsgBox "Заполните поле 'Страна происхождения'"
     Me.Страна.SetFocus
     Exit Sub
  End If
  If IsNull(Me.ПринМеры) Then
     MsgBox "Заполните поле 'Принятые меры'"
     Me.ПринМеры.SetFocus
     Exit Sub
  End If
  If IsNull(Me.ОТчётныйПериод) Then
     MsgBox "Заполните поле 'ОтчётныйПериод'"
     Me.ОТчётныйПериод.SetFocus
     Exit Sub
  End If
    DoCmd.GoToRecord , , acNewRec
End Sub


не пойму на какое соытие надо поставиьт код или в коде проблема??
PM MAIL ICQ   Вверх
Akina
Дата 27.3.2008, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



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

  If IsNull(Me.Контрол) Then
     MsgBox "Заполните поле 'Что-то-там'"
     Me.Контрол.SetFocus
     Exit Sub
  End If

а
Код

  Me.Контрол.SetFocus
  If IsNull(Me.Контрол) Then
     MsgBox "Заполните поле 'Что-то-там'"
     Exit Sub
  End If




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

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


Бывалый
*


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

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



Ну и что? Поставил breakpoint
на событие - оно срабатывает ещё до выбора объекта из списка!
А надо - при нажатии кнопки перехода(вставка текущей записи и переход к новой) 
отловить событие и проверить заполнение всех полей формы.
??????

Добавлено через 11 минут и 24 секунды
и ещё, как на поле ввода переместить фокус - на SetFocus ругается - нет такого метода

PM MAIL ICQ   Вверх
Akina
Дата 27.3.2008, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Ну правильно... справка так и говорит:
Цитата

The BeforeInsert event occurs when the user types the first character in a new record, but before the record is actually created. 

Соответственно надо использовать 
Цитата

The BeforeUpdate event occurs before changed data in a control or record is updated.

Но я бы оторвал форму от таблицы и сделал занесение (и проверку) данных по нажатию спецовой кнопки.



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

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


Бывалый
*


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

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



Да, так действительно лучше! Убрать кнопки перехода и создать свои кнопки?
Это так называемый "хороший стиль программирования"
PM MAIL ICQ   Вверх
Akina
Дата 27.3.2008, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



А у тебя вообще не будет кнопок перехода - у тебя же форма не будет иметь источника данных, все поля отвязаны от таблиц.


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

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


Бывалый
*


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

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



не понял - я форме в данных же задал таблицу и убрал 
отображение стандартных кнопок перехода
PM MAIL ICQ   Вверх
Akina
Дата 28.3.2008, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Не, внешний вид ты строй как хочешь. Я о сути.


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

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


Бывалый
*


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

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



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

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

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

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


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

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


 




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


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

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