|
|
|
Контроль даты
|
|||
|---|---|---|---|
|
#18+
Есть такая проблема. Пользователи, при вводе даты, иногда ошибаются и вводят вместо "01.01.2012" дату "01.01.0201" и подобное. Проблему частично решил, добавив в домен даты ограничение. Но, так как взял с запасом (считая, что 2015 тоже корректен), то уникумы начала вводить даты 2014, 2015 годов и так далее. Вопрос: как вы у себя решили проблему проверки корректности введенной даты, причем в любом поле? Чтобы сегодня 15 января 2014 года давало ошибку, а в следующем месяце - уже нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2013, 13:48:33 |
|
||
|
Контроль даты
|
|||
|---|---|---|---|
|
#18+
Hello, CyberMax! You wrote on 19 декабря 2013 г. 13:52:07: CyberMax> Есть такая проблема. Пользователи, при вводе даты, иногда ошибаются и > вводят вместо "01.01.2012" дату "01.01.0201" и подобное. Проблему > частично решил, добавив в домен даты ограничение. Но, так как взял с > запасом (считая, что 2015 тоже корректен), то уникумы начала вводить > даты 2014, 2015 годов и так далее. > Вопрос: как вы у себя решили проблему проверки корректности введенной > даты, причем в любом поле? Чтобы сегодня 15 января 2014 года давало > ошибку, а в следующем месяце - уже нет? в таком ТОТАЛЬНОМ контроле смысла нет. это попытка натянуть кондом на отражение луны в осенней луже. контроль нужен на уровне бизнес-правил и бизнес-логики. формализация же оных - весьма нетривиальный процесс. но реализуемый. при соответствующем объеме выделенных человеко-часов. если же бюджет для решения задачи ограничен, то проблема решается исключительно административными методами - штрафами и лишением премии. ну и про волшебный пездюлин тм забывать тоже не стоит. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2013, 13:59:20 |
|
||
|
Контроль даты
|
|||
|---|---|---|---|
|
#18+
CyberMax, В дополнение к сказанному МП - есть диапазон (типично - месяц), внутри которого введенные даты считаются корректными. Все что не попадает в диапазон - выбрасывается тригерами с соответствующим ексепшном. Настройки диапазона задает ответственный человек. Но все это укладывается в фразу МП "контроль на уровне бизнес-правил". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2013, 15:28:11 |
|
||
|
Контроль даты
|
|||
|---|---|---|---|
|
#18+
miwaonlineВсе что не попадает в диапазон - выбрасывается тригерами с соответствующим ексепшном. Тут надо на каждую таблицу с датой триггер делать. А если дат несколько? Навскидку скажу, что проверять надо порядка 500 дат. И хотелось бы делать это из одного места. Причина ошибок в большинстве случаев - клавиатурная опечатка. например, 4 вместо 1, 9 вместо 6, 2 вместо 5... Ну вы поняли. В принципе есть мысль побороть это путем дописывания контрола поля ввода даты. И прямо в нем проверять дату - если она больше текущей, то ошибка. Если предыдущий месяц - предупреждение. Если далеко в прошлом - тоже ошибка. Как-то так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2013, 15:46:27 |
|
||
|
Контроль даты
|
|||
|---|---|---|---|
|
#18+
CyberMaxесть мысль побороть это путем дописывания контрола поля ввода даты. И прямо в нем проверять дату - если она больше текущей, то ошибка.Для договоров один диапазон, для накладнушек другой, для отчетов третий и т.д и т.п. приходим к указанному выше: Мимопроходящийконтроль нужен на уровне бизнес-правил и бизнес-логики. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2013, 16:38:14 |
|
||
|
Контроль даты
|
|||
|---|---|---|---|
|
#18+
Ivan_Pisarevsky, Для реализации сего действа можно завести себе табличку типа: "как контролировать (правило)" + "какие даты (диапазон) контролировать". Потом наваять хранимку с контролем. И звать хранимку из триггеров или хранимок на Insert/Update. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2013, 17:05:31 |
|
||
|
Контроль даты
|
|||
|---|---|---|---|
|
#18+
CyberMax> В принципе есть мысль побороть это путем дописывания контрола поля ввода даты. Я бы именно так и делал, если бы понадобилось. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2013, 18:57:01 |
|
||
|
Контроль даты
|
|||
|---|---|---|---|
|
#18+
Это можно сделать так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. соответственно в хранимке DATE_CHECK можно прописать любую необходимую логику ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2013, 12:02:41 |
|
||
|
Контроль даты
|
|||
|---|---|---|---|
|
#18+
SEYD, Интересное решение! В общем, опыт эксплуатации показал, что тут действительно, наскоком проблему не решить. В частности, на некоторые даты ограничение через домен накладывать нельзя (например, дата окончания срока эксплуатации счетчика - она может быть до 2040 года, а точка отсчета - 2013 год - валидна). Поэтому для даты учета сделаю проверку прямо в контроле, а по остальным - проверки через триггеры, для каждой даты каждого документа - свои. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2013, 06:43:28 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=38506635&tid=1564033]: |
0ms |
get settings: |
5ms |
get forum list: |
19ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
236ms |
get topic data: |
27ms |
get forum data: |
4ms |
get page messages: |
68ms |
get tp. blocked users: |
1ms |
| others: | 200ms |
| total: | 570ms |

| 0 / 0 |
