Обсуждение:Преобразование из V_STRING в V_DATE - корректна ли дата в тексте?

0 (0)
  • Развернуть Обсуждение:Преобразование из V_STRING в V_DATE - корректна ли дата в тексте? ( Обсуждение примера  11.04.2005 01:02 )
    0(0)
    При экспорте значения из "V_STRING" в "V_DATE", необходимо знать,
    действительно ли в тексте стоит дата и корректна ли она.
    Если в тексте стоит дата, функция возвращает "True", иначе - "False".

    История:
    Мне нужно было проверить около тысячи полей с текстом,
    куда операционисты понабивали даты и перенести их в поля
    с типом "V_DATE". Выяснилось, что у операционистов, не только
    кривые ручки, но ещё и 31 день в апреле: Вот так родился этот макрос.

    Параметры:
    1. "Строка" - Исходный текст даты;
    2. "РазделительДаты" - символ-разделитель даты, участвующий в задаче (по умолчанию точка);
    3. "УчитыватьНулевые" - учитывать или нет те значения, что не забиты или нулевые в исходном тексте даты.

    Примеры:

    1. Переменная "Quest" примет значение "False" в случае, когда:
    Ошибка написания даты:
    Quest = ЗначениеИмеетТип_Дата ("31.04.2005"); // В апреле не бывает 31 день
    Quest = ЗначениеИмеетТип_Дата ("O1.04.2005");
    Quest = ЗначениеИмеетТип_Дата ("01-04.2005");
    Quest = ЗначениеИмеетТип_Дата ("01.04.00"); // Так уж работает функция Date, что нулевой год - ошибка:
    // Обрабатывать нулевые. Иногда нужно для контроля:
    Quest = ЗначениеИмеетТип_Дата ("00.00.00", Null, True);
    Quest = ЗначениеИмеетТип_Дата (Null, Null, True);

    2. Переменная "Quest" примет значение "True" в случае:
    Quest = ЗначениеИмеетТип_Дата ("01.01.2001");
    Quest = ЗначениеИмеетТип_Дата ("11.11.99");
    Quest = ЗначениеИмеетТип_Дата ("11.11.1");
    Quest = ЗначениеИмеетТип_Дата (); // Даты нет, не обрабатывать нулевые
    Посмотреть пример
    >> Ответить
    • Развернуть Объсните ( maxim4ik  12.11.2009 20:37 )
      0(0)
      Может кто - нибудь помочь по коду, который написан здесь в примере?
      >> Ответить
    • Развернуть Еще вариант - проверка корректности даты ( Izmajlov  19.11.2009 08:32 )
      0(0)
      Import rslx, lgxs;
      if(IsStandAlone())
      obj=ActiveX("MSScriptControl.ScriptControl");
      else
      obj=TlgActiveX("MSScriptControl.ScriptControl",true);
      end;
      MyDate= "19-10-1962";
      /* Можно так */
      MyDate= "October 19, 1962";

      obj.language = "VBscript";
      arg = "IsDate(\x22"+MyDate+"\x22)";
      println(arg);
      println(obj.eval(arg));


      /***************************
      IsDate(expression)
      The expression argument can be any date expression or string expression recognizable as a date or time.

      Remarks
      IsDate returns True if the expression is a date or can be converted to a valid date; otherwise, it returns False. In Microsoft Windows, the range of valid dates is January 1, 100 A.D. through December 31, 9999 A.D.; the ranges vary among operating systems.

      **************************/
      >> Ответить