|
как проверить вводимые данные на пустые значения
|
|||
---|---|---|---|
#18+
Написала пока вот так: Код: plaintext 1. 2. 3. 4. 5. 6.
Либо в Valid() каждого контрола: Код: plaintext 1. 2. 3. 4. 5.
Как проверить более корректно? Можно как-то в одном месте кода, например при сохранении данных и обратиться не к каждому полю по отдельности, а ко всем текстовым объектам сразу? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2011, 10:47 |
|
как проверить вводимые данные на пустые значения
|
|||
---|---|---|---|
#18+
Циклом for each можно перебрать все объекты формы. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2011, 10:55 |
|
как проверить вводимые данные на пустые значения
|
|||
---|---|---|---|
#18+
НадеждаМКак проверить более корректно? Можно как-то в одном месте кода, например при сохранении данных и обратиться не к каждому полю по отдельности, а ко всем текстовым объектам сразу? 1. Данные попадают в таблички, поэтому надо проверять не значение Value контролов, а значения полей. 2. Что бы "пустые/левые" данные не попадали в таблицы, для таблиц устанавливаются правила полей-записи/ограничения/дефолты итд. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2011, 11:24 |
|
как проверить вводимые данные на пустые значения
|
|||
---|---|---|---|
#18+
НадеждаММожно как-то в одном месте кода, например при сохранении данных и обратиться не к каждому полю по отдельности, а ко всем текстовым объектам сразу? Нет. Нельзя. Вам в любом случае придется анализировать содержимое каждого объекта в отдельности. Можно лишь до некоторой степени упростить программный код подобного анализа, например, так, как и предложил Dima T перебрав все объекты контейнера Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Разумеется, следует понимать, что цикл пройдет только по объектам первого уровня. Если в форме есть контейры внутри которых есть свои объекты, то следует организовать дополнительный цикл по объектам этих контейнеров Если же объекты формы привязаны к полям таблицы (указано Object.ControlSource), то проще проверить (перебрать) значение полей таблицы. Нет проблемы с уровнем вложенности. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2011, 11:32 |
|
как проверить вводимые данные на пустые значения
|
|||
---|---|---|---|
#18+
необходимо создать класс-контрол, у которого задумать к примеру св-во, отвечающее за проверку пустоты. например lCheckEmpty. в валиде контрола возможен такой код Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
тогда достаточно разложить контролы по форме и у нужных, те которые проверять на пустоту, включить св-во lCheckEmpty (установить равное .T.) также св-во признак пустоты можно обработать перебором в каком-то хитром методе сохр-я результатов формы ввода и ред-я. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2011, 11:57 |
|
как проверить вводимые данные на пустые значения
|
|||
---|---|---|---|
#18+
НадеждаМ, Я бы таки разделил понятия: Первое: правильность заполнения элементов. Второе: дальнейшая работа с элементами. Поскольку значение элемента - пустое или нет - это относится к самому элементу, то и проверять его "правильность" нужно непосредственно в том месте, где этот элемент заполняется, вводится. Также я бы ввел некое понятие "статуса" элементов. Например, двумерный массив. И инициировал бы его значениями для всех элементов, например, "1". В ходе работы, например, элемент заполнен правильно - изменение соответствующего значения в массиве на "0" (нуль). Что нам это дает. Первое. Все проверки делаются непосредственно при вводе каждого элемента. Причем это могут быть самые разнообразные проверки, и они могут отличаться для разных элементов: правильные они или нет. Красивые ли они, красные ли они, теплые ли они - и прочая куча вероятных проверок. У Вас ведь приведена лишь одна - на "пустое" значение. Но в ходе пути аппетит может вырасти до проверки значений на "все подряд" - и это не есть плохо. Главное, что каждые элемент проверяется по своим персональным условиям. Т.е. изменение (добавление) условий проверки для одного элемента не помешает нормально жить остальным элементам. Второе. При попытке работать дальше с неким нашим набором элементов - мы не думаем о том, нулевые это элементы или нет. Это не наше дело. Когда мы пытаемся работать дальше, мы должны знать, что "НАМ МОЖНО РАБОТАТЬ ДАЛЬШЕ". А не то, что второй элемент вместо суммы ввели "абвгд" и мы не должны дальше работать. И, собственно, для дальнейшей работы мы просто складываем нужный нам столбец массива - и получаем "0" (нуль) - значит все правильно, можно дальше работать. Если не "0", т.е. ">0" - значит кой-чего не так заполнено. Данный механизм действует и при редактировании. Просто массив со статусами заполняется где "0", где "1" - в зависимости от правильности неких условий. ЗЫ. Вариант статусов с массивом - просто пример. Решений здесь много, зависит от непосредственной реализации... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2011, 12:20 |
|
как проверить вводимые данные на пустые значения
|
|||
---|---|---|---|
#18+
Спасибо всем за дельные советы. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2011, 16:47 |
|
как проверить вводимые данные на пустые значения
|
|||
---|---|---|---|
#18+
Спрошу тут , потому что вопрос мой звучит также: "Как проверить вводимые данные", но только пользователь введя буквы, не нажал еще клавишу Enter или TAB и из поля не вышел, но нажал сочетание клавиш CTRL+ENTER для сохранения всей формы как есть и в принципе все необходимое для сохранния есть на экране. Так вот поле это, где стоит курсор пустое остается. Как избежать? Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2013, 04:03 |
|
как проверить вводимые данные на пустые значения
|
|||
---|---|---|---|
#18+
У вас Ctrl+Enter - это дефолтное действие для сохранения-закрытия формы, причем разрешенное пользователю? Привяжите Ctrl+Enter на контрол (например, кнопку "ОК"). Тогда он будет активизирован, что приведет к потере фокуса последнего поля ввода, и, соответственно, задействует все обработки проверок ввода... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2013, 04:25 |
|
как проверить вводимые данные на пустые значения
|
|||
---|---|---|---|
#18+
ВладимирМНадеждаММожно как-то в одном месте кода, например при сохранении данных и обратиться не к каждому полю по отдельности, а ко всем текстовым объектам сразу? Нет. Нельзя. Вам в любом случае придется анализировать содержимое каждого объекта в отдельности. Можно лишь до некоторой степени упростить программный код подобного анализа, например, так, как и предложил Dima T перебрав все объекты контейнера Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Разумеется, следует понимать, что цикл пройдет только по объектам первого уровня. Если в форме есть контейры внутри которых есть свои объекты, то следует организовать дополнительный цикл по объектам этих контейнеров Если же объекты формы привязаны к полям таблицы (указано Object.ControlSource), то проще проверить (перебрать) значение полей таблицы. Нет проблемы с уровнем вложенности. Заведите соответствующие классы, и ничего не надо будет перебирать. И заодно, ошибки при наборе данных не будут "попадать в таблички". ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2013, 10:33 |
|
|
start [/forum/topic.php?fid=41&gotonew=1&tid=1583134]: |
0ms |
get settings: |
12ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
11ms |
get first new msg: |
8ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 17ms |
total: | 170ms |
0 / 0 |