Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проверка заполнения обязательного поля
 
 автор: Stanislav   (15.04.2011 в 14:44)   личное сообщение
 
 

Как ее сделать в форме, чтобы акс не выдавал ошибку с требованием заполнить поле?
Пытаюсь вот так:

Private Sub Form_BeforeUpdate(Cancel As Integer)
On Error GoTo Err_
If IsNull(Me.StorageOwnerID) Then
Cancel = True
    If MsgBox("Пожалуйста, укажите владельца склада"), vbExclamation + vbOKCancel) = vbCancel Then
    Me.Undo
    DoCmd.Close
    End If
End If

Exit Sub
Err_:
End Sub


но акс все равно выдает ошибку.

  Ответить  
 
 автор: osmor   (15.04.2011 в 14:56)   личное сообщение
 
 

установите условие на значение и сообщение на уровне таблиц

перечитал вопрос.
Я не использую обязательность полей (т.е. у меня все не обязательные кроме ключа который обычно счетчик)
но у тех полей которые нужно обязательно заполнить я указываю значение по умолчанию равным
null или ""
А в условии на значение пишу
not is null and <> ""

ну и соответвенно сообщение "Укажите ....."

Все это на уровне таблиц

  Ответить  
 
 автор: Гоблин   (15.04.2011 в 21:16)   личное сообщение
 
 

А я просто блокирую поля. Никто ничего не введет до тех пор, покуда в обязательном поле не будет инфы.
При получении фокуса в следующее поле:
If Me.Обязательное<> "" Then
Me.Следующее.Locked = False
Else
Me.Следующее.Locked = True
MsgBox ("Проверь заполнение обязательного поля")
End If

И работает уже не первый год

  Ответить  
 
 автор: Stanislav   (16.04.2011 в 15:22)   личное сообщение
 
 

Сделал вот так. Форма типа SingleForm. Открывается в режиме добавления записи. На форме есть кнопка Exit. Пользователь заносит данные и жмет exit.


Private Sub ExitButton_Click()
On Error GoTo Err_
Me.Refresh 'по этой команде Access попытается обновить форму и сработает обработчик события BeforeUpdate
DoCmd.Close
Exit Sub
Err_:
'
End Sub



Private Sub Form_BeforeUpdate(Cancel As Integer)
'если указаны какие-то данные по складу, но не указан владелец:
If Not IsNull(Me.StorageID) And IsNull(Me.StorageOwnerID) Then
    If MsgBox("Пожалуйста, укажите владельца склада!"), vbExclamation + vbOKCancel) = vbCancel Then
    'юзер отказался указать владельца склада: отменяем сделанные юзером изменения
    Me.Undo
    Else
    'юзер согласился указать владельца склада: останавливаем исполнение кода, не давая Access обновить данные, 
    'сохранить запись, в которой не указан владелец и закрыть форму.
    Cancel = True
    End If
End If
End Sub


Пока не додумал, как обработать ошибку стандартного крестика, закрывающего форму, поэтому его пришлось отключить.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList