Обсуждение:Преобразование из 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)Может кто - нибудь помочь по коду, который написан здесь в примере?
>> ОтветитьА чем именно нужно помочь? ( Волшебник 16.11.2009 10:52 )
0(0)Not specified
>> Ответить
Еще вариант - проверка корректности даты ( 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.
**************************/
>> Ответить