:: Visual Foxpro, Foxpro for DOS
Проверка даты при вводе и просадить фильтр в таблице
Sergeynizamov
Автор

Сообщений: 76
Дата регистрации: 21.09.2018
Доброе время суток!
Подскажите пожалуйста, как проверить ввод даты на правильность ввод,т.е пользователь начинает вводить дату 21.11.2018 (соответственно первые 2 цифры от даты 21) т.е надо проверить 21 , потом месяц проверить, и далее год.
проверка нужна для того, что бы пользователь к примеру начал набирать 55.11.2018, то соответственно на первые две цифры должно выйти предупреждение об ошибке. ну и соответственно в базе тоже должна быть проверка на первые 2 цифры, т.е. начал вводить 22, значит и должно выйти 22 число.

есть небольшой кусок кода, то что пробовал до делать
** проверка на правильность введения даты

d_vvoda = Alltrim(Thisform.text1.text)
if !empty(d_vvoda)
dd=val(substr(d_vvoda,1,2))
mm=val(substr(d_vvoda,4,2))
yy=val(substr(d_vvoda,7,4))
val=.f.
do case
case mm = 4 .or. mm = 6 .or. mm = 9 .or. mm = 11
if dd > 0 .and. dd => 30
val = .t.
endif

case mm = 1 .or. mm = 3 .or. mm = 5 .or. mm = 7 .or. mm = 8 .or. mm = 10 .or. mm = 12
if dd > 0 .and. dd => 32
val = .t.
endif

case mm = 2
if mod(yy,4) = 0
if dd > 0 .and. dd => 30
*if dd<=29
val = .t.
endif
else
if dd > 0 .and. dd => 31
val = .t.
endif
endif

endcase

if val = .t.
messageb('Неверно введена дата',16,'Ошибка ввода')
return 0
endif
Ratings: 0 negative/0 positive
Re: Проверка даты при вводе и просадить фильтр в таблице
of63

Сообщений: 25256
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Проверять-то можно тест "NN.NN.NNNN", но почему бы не сделать свойство ThisForm.Text1.value = {} (сразу тип дата), тогда фокс сам будет проверять...
Ratings: 0 negative/0 positive
Re: Проверка даты при вводе и просадить фильтр в таблице
ssa

Сообщений: 13008
Откуда: Москва
Дата регистрации: 23.03.2005
В общем-то, правильная установка свойств Format и Value поля ввода полностью избавляет от необходимости изобретать очередной велосипед.


------------------
Лень - это неосознанная мудрость.




Исправлено 1 раз(а). Последнее : ssa, 22.11.18 12:17
Ratings: 0 negative/0 positive
Re: Проверка даты при вводе и просадить фильтр в таблице
AndyNigmatec

Сообщений: 1574
Откуда: Волгоград
Дата регистрации: 28.06.2015
А еще (кстати тут на форуме есть в решениях) весьма удобные датапикер-ы ... причем на нативном фоксе без всяких активиксов ...

[attachment 30339 dt.png]
Ratings: 0 negative/0 positive
Re: Проверка даты при вводе и просадить фильтр в таблице
of63

Сообщений: 25256
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Если проверять текст на изображение даты, то не обязательно воспроизводить календарь вручную. Можно, воспользоваться, например (для SET DATE GERMAN):
? CTOD("1.1.18") && возвращает дату 01.01.2018
? CTOD("100.1.18") && возвращает пустую дату (исправил)
? CTOD("28.2.18") && возвращает дату
? CTOD("29.2.18") && возвращает пустую дату



Исправлено 1 раз(а). Последнее : of63, 22.11.18 14:46
Ratings: 0 negative/0 positive
Re: Проверка даты при вводе и просадить фильтр в таблице
vnkor

Сообщений: 324
Дата регистрации: 04.10.2007
of63
? CTOD("10.1.18") && возвращает пустую дату
Почему здесь то пустую?
Ratings: 0 negative/0 positive
Re: Проверка даты при вводе и просадить фильтр в таблице
of63

Сообщений: 25256
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Исправил. То букву не ту напишу, то цифру...
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 23 (Гостей: 23)

© 2000-2024 Fox Club 
Яндекс.Метрика