Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Проверка Record's Fields На правильность типов


Автор: Olia-Chainik 26.10.2004, 02:16
Как , просматривая Циклом поля записи DB, определить, что с такое-то поле пользователь ввел данние, не соотв-е типу етого поля? (Эту проверку мне нужно сделать при сохранении)

Автор: boevik 26.10.2004, 07:54
Olia-Chainik, подробнее о том как связываешься с базой? При помощи DAO или ADO или ещё каким либо способом?

Автор: Akina 26.10.2004, 08:25
Неясно, что имеется в виду. Уже занесенные в базу данные? но ить скажем в чисельное поле текст не внесешь по дефолту - чего проверять? Или речь о проверке ПЕРЕД внесением в базу? Validate. Или речь о соответствии введенных данных некоему шаблону? наложить шаблон на поле и опять-таки Validate... в общем вопрос совершенно непонятен...

Автор: Guest 26.10.2004, 21:02
Люди добрые!

Простите за некорректно сформулированние вопросы.
Я ведь чаиник - стало быть в теории у меня - сплошные пробелы, впрочем, как и в практике... :stena

Ситуация такая:
VB+Access. Юзаю Я DAO!
Пользователь в форме редактирует (или вводит новые) данные.
Перед сохранением каждои Записи должна производиться проверка на соответствие новых (введенных Юзером данних)типам соотв. полеи.
(Запись должна сохранятся напр. при обращении к кнопкам Навигации или Form_QueryUnload)

К примеру: Юзер ввел в поле типа DATA текст : "Иванов". ОШИБКА. И VB сам укажет на нее:
“MS VB: Run-time error “524”: Data type conversion error”

Моя задача: такую ошибку перехватить и заменить на более понятное Юзеру сообшение типа:
“Re-enter Date Of Birth. Example: 12/29/1978”

И еше мне очень Хочется в Массиве TextBox-ov: запоминать Индексы полеи с ошибками. ведь сообшения нужно разные выдавать (в завис-ти от поля).

Вот такая история

Я уже много чего перепробовала. Не помогает. :(
Не поиму даже с какого конца копать : из VB, или из Access...
Буду Благодарна за ответ
Оля

Автор: boevik 26.10.2004, 23:58
Olia, у тебя есть форма и форма, видимо, логически привязана к таблице.
Ты знаешь, какой тип данных ожидается в каждом поле.
Сделай проверку значений на каждом контроле в событии Validate.
Код
Private Sub Text1_Validate(Cancel As Boolean)
   If Not IsDate(Text1) Then
       MsgBox "Re-enter Date Of Birth. Example: 12/29/1978"
       Cancel = True       'оставить фокус в контроле
   End If
End Sub



Дополнительно, можешь использовать Microsoft Masked Edit Control, для создания маски.

Автор: Olia_Chainik 27.10.2004, 20:10
Заработало!!!!!

Теперь такая проблема:
Когда Юзер ввел данные в произвольное поле, а потом сразу решил закрыть Форму Form_QueryUnload, то проверки txtText_Validate содержимого ЭТОГО поля не произоидет. Как быть в этом случае?

Очень Вам Благодарна
Оля

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)