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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> MasEdBox, Критерии на контроль 
:(
    Опции темы
Flotskiy
Дата 4.2.2005, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 15.11.2004
Где: г. Омск

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



Всем добрый день!
Прошу помощи:
На форме есть MaskEdBox, которым в БД заносится номер паспорта абитуриента (ответственные данные), поставил критерии на контроль за правильностью ввода
Код

Private Sub Data1_Validate(Action As Integer, Save As Integer)
Dim iResponse As Integer

If (Action = vbDataActionUpdate) Then
If (Len(MaskEdBox1.Text) < 13) Then 'задать критерии  на контроль
    iResponse = MsgBox("Неверное заполнение № паспорта.", _
              vbInformation + vbOKOnly, progname)
        MaskEdBox1.SetFocus
     Save = 0
    Action = 0
  End If
End If

End Sub

При таком ограничении (<13 и большее число) при полностью введенном номере (10 знаков) выдает MsgBox, а при (<12 и менее)- принимает любое количество (1-10) и ошибки не выдает.
Здесь что-то связано с маской ввода, которая задана так: ## ## ######
Примерно таким кодом контролирую ввод в TextBox'е - там все норматьно.
Поправьте данный код, если возможно.
Всего доброго всем.

--------------------
FlotskiySk k
PM MAIL   Вверх
boevik
Дата 4.2.2005, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Flotskiy, что должно быть? Все позиции должны быть заполнены?
Тогда просто проверяй или длина текста равна 12.

Или я чего то не допонял smile


--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
Akina
Дата 4.2.2005, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Flotskiy @ 4.2.2005, 12:49)
Здесь что-то связано с маской ввода, которая задана так: ## ## ######

С алгоритмом проверки оно связано, а не с маской.

Код

' extremely draft code - check & optimize needed
num = mid(MaskEdBox1.Text, 1, 2) & mid(MaskEdBox1.Text, 4, 2) & mid(MaskEdBox1.Text, 7, 6)
NotValid = False
if (len(num) <> 10) then
  NotValid=True
else
  if num <> right("0" & trim(str(val(num))),10) then
     NotValid=True
  end if
end if
if NotValid then
  iResponse = MsgBox ...
.............

Добавлено @ 14:51
Примечания:
1) Использование mid вместо left/right оправдано - последние валятся за границами строки
2) Не подумал сразу - юзер же дурак, может ввести и что-то типа "00 00 000000" - с точки зрения маски это валидно, а второй if обвалится (как раз потому что строка коротковата получится в аргументе)



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

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


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 15.11.2004
Где: г. Омск

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



Привет, boevik.
Нужно, чтобы были все 10 цифр. Все испробовал, ставлю длину =12, ввожу все цифры- выдает "Неверное заполнение № паспорта.", ставлю длину =13, ввожу 1 или 2 и т.д цифр -
принимает без предупреждения.
Добавлено @ 14:58
Привет, Akina!только что получил твою подсказку,благодарю.
Возьму твой код, осмыслю, т.е. испробую и отвечу.
Всего доброго!

Это сообщение отредактировал(а) Flotskiy - 4.2.2005, 15:00
--------------------
FlotskiySk k
PM MAIL   Вверх
Flotskiy
Дата 4.2.2005, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 15.11.2004
Где: г. Омск

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



Akina,
NotValid - не понимает, пишет - Variabled not defined.
На сегодня я закругляюсь, До завтра.
Всего доброго

Это сообщение отредактировал(а) Flotskiy - 4.2.2005, 15:13
--------------------
FlotskiySk k
PM MAIL   Вверх
boevik
Дата 4.2.2005, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Flotskiy, привет.

Попробуй так
Код

   If Len(MaskEdBox1.ClipText) <> 12 Then
       MsgBox "Error"
   End If




--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
Akina
Дата 4.2.2005, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Flotskiy @ 4.2.2005, 16:11)
NotValid - не понимает, пишет - Variabled not defined.

а вверху поставить что-нить типа
Код
Dim NotValid As Boolean
не пробовал? smile


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

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


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 15.11.2004
Где: г. Омск

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



Всем добрый день!
С вашей помощью решен мой вопрос:
Код

Private Sub Data1_Validate(Action As Integer, Save As Integer)

  Dim iResponse As Integer
  Dim NotValid As Boolean
  Dim num
If (Action = vbDataActionUpdate) Then
    num = Mid(MaskEdBox1.Text, 1, 2) & Mid(MaskEdBox1.Text, 4, 2) & Mid(MaskEdBox1.Text, 7, 6)
    NotValid = False
        If (Len(num) <> 10) Then
          NotValid = True
           Else
           If num <> Right("0" & Trim(Str(Val(num))), 10) Then
               NotValid = True
           End If
       End If
   If NotValid Then
     iResponse = MsgBox("Неверное заполнение № паспорта.", _
                   vbInformation + vbOKOnly, progname)
      MaskEdBox1.SetFocus
      Save = 0
      Action = 0
   End If
End If

End Sub


Работает как нодо. Только подскажите
Цитата
Dim num  As ...

Благодарю всех за помощь.
Всего доброго.



Это сообщение отредактировал(а) Flotskiy - 5.2.2005, 10:24
--------------------
FlotskiySk k
PM MAIL   Вверх
boevik
Дата 6.2.2005, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(Flotskiy @ 5.2.2005, 10:16)
num = Mid(MaskEdBox1.Text, 1, 2) & Mid(MaskEdBox1.Text, 4, 2) & Mid(MaskEdBox1.Text, 7, 6)

Этот код можно заменить на:
Код

num = MaskEdBox1.ClipText



--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
Flotskiy
Дата 7.2.2005, 06:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 15.11.2004
Где: г. Омск

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



Доброе утро всем!
Boevik, твой код
Цитата
num = MaskEdBox1.ClipText

тоже работает, благодарю за помощь.
Всего доброго всем.

Это сообщение отредактировал(а) Flotskiy - 7.2.2005, 06:20
--------------------
FlotskiySk k
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

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

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

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

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


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

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


 




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


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

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