powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / как проверить вводимые данные на пустые значения
10 сообщений из 10, страница 1 из 1
как проверить вводимые данные на пустые значения
    #37357166
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Написала пока вот так:
Код: plaintext
1.
2.
3.
4.
5.
6.
IF (.edit1.value='' OR infoz.value='' OR .olecontrol3.value='' OR edit1.value='' OR .selectdoctor.value='' OR .edit3.value='' OR .daten.value='' OR .datec.value='' OR .dateh.value='')
return.f.

else
return .t.
endif 

Либо в Valid() каждого контрола:

Код: plaintext
1.
2.
3.
4.
5.
IF empty (this.value)
	=messagebox(" Ïðîâåðüòå êîððåêòíîñòü ââåäåííûõ äàííûõ!"),  0  +  16  +  0 , _SCREEN.CAPTION)	
	RETURN .f.
else
	RETURN .t.
endif

Как проверить более корректно?
Можно как-то в одном месте кода, например при сохранении данных и обратиться не к каждому полю по отдельности, а ко всем текстовым объектам сразу?
...
Рейтинг: 0 / 0
как проверить вводимые данные на пустые значения
    #37357184
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Циклом for each можно перебрать все объекты формы.
...
Рейтинг: 0 / 0
как проверить вводимые данные на пустые значения
    #37357247
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НадеждаМКак проверить более корректно?
Можно как-то в одном месте кода, например при сохранении данных и обратиться не к каждому полю по отдельности, а ко всем текстовым объектам сразу?

1. Данные попадают в таблички, поэтому надо проверять не значение Value контролов, а значения полей.

2. Что бы "пустые/левые" данные не попадали в таблицы, для таблиц устанавливаются правила полей-записи/ограничения/дефолты итд.
...
Рейтинг: 0 / 0
как проверить вводимые данные на пустые значения
    #37357268
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НадеждаММожно как-то в одном месте кода, например при сохранении данных и обратиться не к каждому полю по отдельности, а ко всем текстовым объектам сразу?
Нет. Нельзя.

Вам в любом случае придется анализировать содержимое каждого объекта в отдельности. Можно лишь до некоторой степени упростить программный код подобного анализа, например, так, как и предложил Dima T перебрав все объекты контейнера

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
local loObject, isFull
for each loObject in ThisForm.Objects
    if type("loObject.Value") <> "U" and empty(loObject.Value)
        isFull = .T.
        exit
    endif
endfor

if isFull
    * Есть не пустой объект
else
    * Все объекты пустые
endif

Разумеется, следует понимать, что цикл пройдет только по объектам первого уровня. Если в форме есть контейры внутри которых есть свои объекты, то следует организовать дополнительный цикл по объектам этих контейнеров

Если же объекты формы привязаны к полям таблицы (указано Object.ControlSource), то проще проверить (перебрать) значение полей таблицы. Нет проблемы с уровнем вложенности.
...
Рейтинг: 0 / 0
как проверить вводимые данные на пустые значения
    #37357342
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
необходимо создать класс-контрол,
у которого задумать к примеру св-во, отвечающее за проверку пустоты.

например lCheckEmpty.

в валиде контрола возможен такой код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
with this 
   IF .lCheckEmpty
       local llEmpty
       llEmpty = empty (this.value)
       if llEmpty
	=messagebox("Караул")	
       endif
       RETURN !llEmpty
   ENDIF
endwith

тогда достаточно разложить контролы по форме и у нужных, те которые проверять на пустоту,
включить св-во lCheckEmpty (установить равное .T.)

также св-во признак пустоты можно обработать перебором
в каком-то хитром методе сохр-я результатов формы ввода и ред-я.
...
Рейтинг: 0 / 0
как проверить вводимые данные на пустые значения
    #37357425
Banditos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
НадеждаМ,

Я бы таки разделил понятия:
Первое: правильность заполнения элементов.
Второе: дальнейшая работа с элементами.

Поскольку значение элемента - пустое или нет - это относится к самому элементу, то и проверять его "правильность" нужно непосредственно в том месте, где этот элемент заполняется, вводится.
Также я бы ввел некое понятие "статуса" элементов. Например, двумерный массив. И инициировал бы его значениями для всех элементов, например, "1".
В ходе работы, например, элемент заполнен правильно - изменение соответствующего значения в массиве на "0" (нуль).

Что нам это дает.
Первое.
Все проверки делаются непосредственно при вводе каждого элемента. Причем это могут быть самые разнообразные проверки, и они могут отличаться для разных элементов: правильные они или нет. Красивые ли они, красные ли они, теплые ли они - и прочая куча вероятных проверок. У Вас ведь приведена лишь одна - на "пустое" значение. Но в ходе пути аппетит может вырасти до проверки значений на "все подряд" - и это не есть плохо. Главное, что каждые элемент проверяется по своим персональным условиям. Т.е. изменение (добавление) условий проверки для одного элемента не помешает нормально жить остальным элементам.
Второе.
При попытке работать дальше с неким нашим набором элементов - мы не думаем о том, нулевые это элементы или нет. Это не наше дело. Когда мы пытаемся работать дальше, мы должны знать, что "НАМ МОЖНО РАБОТАТЬ ДАЛЬШЕ". А не то, что второй элемент вместо суммы ввели "абвгд" и мы не должны дальше работать.
И, собственно, для дальнейшей работы мы просто складываем нужный нам столбец массива - и получаем "0" (нуль) - значит все правильно, можно дальше работать. Если не "0", т.е. ">0" - значит кой-чего не так заполнено.
Данный механизм действует и при редактировании. Просто массив со статусами заполняется где "0", где "1" - в зависимости от правильности неких условий.

ЗЫ. Вариант статусов с массивом - просто пример. Решений здесь много, зависит от непосредственной реализации...
...
Рейтинг: 0 / 0
как проверить вводимые данные на пустые значения
    #37358102
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем за дельные советы.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
как проверить вводимые данные на пустые значения
    #38172823
Фотография MaestroEv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спрошу тут , потому что вопрос мой звучит также: "Как проверить вводимые данные", но только пользователь введя буквы, не нажал еще клавишу Enter или TAB и из поля не вышел, но нажал сочетание клавиш CTRL+ENTER для сохранения всей формы как есть и в принципе все необходимое для сохранния есть на экране. Так вот поле это, где стоит курсор пустое остается. Как избежать?

Спасибо.
...
Рейтинг: 0 / 0
как проверить вводимые данные на пустые значения
    #38172825
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У вас Ctrl+Enter - это дефолтное действие для сохранения-закрытия формы, причем разрешенное пользователю? Привяжите Ctrl+Enter на контрол (например, кнопку "ОК"). Тогда он будет активизирован, что приведет к потере фокуса последнего поля ввода, и, соответственно, задействует все обработки проверок ввода...
...
Рейтинг: 0 / 0
как проверить вводимые данные на пустые значения
    #38172976
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМНадеждаММожно как-то в одном месте кода, например при сохранении данных и обратиться не к каждому полю по отдельности, а ко всем текстовым объектам сразу?
Нет. Нельзя.

Вам в любом случае придется анализировать содержимое каждого объекта в отдельности. Можно лишь до некоторой степени упростить программный код подобного анализа, например, так, как и предложил Dima T перебрав все объекты контейнера

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
local loObject, isFull
for each loObject in ThisForm.Objects
    if type("loObject.Value") <> "U" and empty(loObject.Value)
        isFull = .T.
        exit
    endif
endfor

if isFull
    * Есть не пустой объект
else
    * Все объекты пустые
endif



Разумеется, следует понимать, что цикл пройдет только по объектам первого уровня. Если в форме есть контейры внутри которых есть свои объекты, то следует организовать дополнительный цикл по объектам этих контейнеров

Если же объекты формы привязаны к полям таблицы (указано Object.ControlSource), то проще проверить (перебрать) значение полей таблицы. Нет проблемы с уровнем вложенности.

Заведите соответствующие классы, и ничего не надо будет перебирать.
И заодно, ошибки при наборе данных не будут "попадать в таблички".
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / как проверить вводимые данные на пустые значения
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]