powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Контроль даты
9 сообщений из 9, страница 1 из 1
Контроль даты
    #38506480
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такая проблема. Пользователи, при вводе даты, иногда ошибаются и вводят вместо "01.01.2012" дату "01.01.0201" и подобное. Проблему частично решил, добавив в домен даты ограничение. Но, так как взял с запасом (считая, что 2015 тоже корректен), то уникумы начала вводить даты 2014, 2015 годов и так далее.
Вопрос: как вы у себя решили проблему проверки корректности введенной даты, причем в любом поле? Чтобы сегодня 15 января 2014 года давало ошибку, а в следующем месяце - уже нет?
...
Рейтинг: 0 / 0
Контроль даты
    #38506494
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Контроль даты
    #38506635
miwaonline
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMax,

В дополнение к сказанному МП - есть диапазон (типично - месяц), внутри которого введенные даты считаются корректными. Все что не попадает в диапазон - выбрасывается тригерами с соответствующим ексепшном. Настройки диапазона задает ответственный человек.

Но все это укладывается в фразу МП "контроль на уровне бизнес-правил".
...
Рейтинг: 0 / 0
Контроль даты
    #38506667
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miwaonlineВсе что не попадает в диапазон - выбрасывается тригерами с соответствующим ексепшном.
Тут надо на каждую таблицу с датой триггер делать. А если дат несколько? Навскидку скажу, что проверять надо порядка 500 дат. И хотелось бы делать это из одного места. Причина ошибок в большинстве случаев - клавиатурная опечатка. например, 4 вместо 1, 9 вместо 6, 2 вместо 5... Ну вы поняли.
В принципе есть мысль побороть это путем дописывания контрола поля ввода даты. И прямо в нем проверять дату - если она больше текущей, то ошибка. Если предыдущий месяц - предупреждение. Если далеко в прошлом - тоже ошибка. Как-то так.
...
Рейтинг: 0 / 0
Контроль даты
    #38506783
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMaxесть мысль побороть это путем дописывания контрола поля ввода даты. И прямо в нем проверять дату - если она больше текущей, то ошибка.Для договоров один диапазон, для накладнушек другой, для отчетов третий и т.д и т.п. приходим к указанному выше:
Мимопроходящийконтроль нужен на уровне бизнес-правил и бизнес-логики.
...
Рейтинг: 0 / 0
Контроль даты
    #38506870
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_Pisarevsky,

Для реализации сего действа можно завести себе табличку типа: "как контролировать (правило)" + "какие даты (диапазон) контролировать". Потом наваять хранимку с контролем. И звать хранимку из триггеров или хранимок на Insert/Update.
...
Рейтинг: 0 / 0
Контроль даты
    #38507052
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMax> В принципе есть мысль побороть это путем дописывания контрола поля ввода даты.

Я бы именно так и делал, если бы понадобилось.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Контроль даты
    #38507659
SEYD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это можно сделать так:


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
SET TERM ^ ;

create or alter procedure DATE_CHECK (
    DATEVALUE date)
returns (
    RESULT integer)
as
begin
  result=0;
  if (datevalue>current_date) then result=-1;

  suspend;
end^

SET TERM ; ^

CREATE DOMAIN TEST AS
DATE
CHECK ((select result from date_check(value))=0);

CREATE TABLE TEST_DATE (NEW_FIELD TEST);



соответственно в хранимке DATE_CHECK можно прописать любую необходимую логику
...
Рейтинг: 0 / 0
Контроль даты
    #38510645
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SEYD,

Интересное решение!

В общем, опыт эксплуатации показал, что тут действительно, наскоком проблему не решить. В частности, на некоторые даты ограничение через домен накладывать нельзя (например, дата окончания срока эксплуатации счетчика - она может быть до 2040 года, а точка отсчета - 2013 год - валидна). Поэтому для даты учета сделаю проверку прямо в контроле, а по остальным - проверки через триггеры, для каждой даты каждого документа - свои.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Контроль даты
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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