Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Левая дата в dbf  [new]
Гурант
Member

Откуда:
Сообщений: 129
всем HI!
Вопрос. Ни у кого небыло такой ситуации:
Есть dbf с полем date. Там стоит "20.02.2007". По независящим от нас причинам (не из фокса) файл бъется и в поле теперь там "30.02.2007".

Как отреагирует фокс если попытаться открыть этот файл? Откажется вообще или в поле покажет звездочки (как в случае числового поля в аналогичной ситуации)?

Сейчас разбираюсь с таким случаем, но там битых дат нет вроде. А надо на перспективу...
17 май 07, 12:46    [4149357]     Ответить | Цитировать Сообщить модератору
 Re: Левая дата в dbf  [new]
-=AlexiS=-
Member

Откуда: Одесса
Сообщений: 712
Ну так открой dbf любым текстовым редактором и исправь дату.
Лично у меня после таких издевательств - показывает пустую дату
17 май 07, 12:56    [4149451]     Ответить | Цитировать Сообщить модератору
 Re: Левая дата в dbf  [new]
Гурант
Member

Откуда:
Сообщений: 129
залезть то можно, но интересно найти программно и обезвредить :)
17 май 07, 13:01    [4149495]     Ответить | Цитировать Сообщить модератору
 Re: Левая дата в dbf  [new]
Burn
Member

Откуда: Днепропетровск, Украина
Сообщений: 1167
Интересно как такое могло получится - насколько я помню поле типа Date содержит количесво секунд с какого начального момента. Так что в нем по определению неправильной даты быть не может. А если поле символьное то можно писать и править как захочется Фокс и слова не скажет
17 май 07, 13:32    [4149725]     Ответить | Цитировать Сообщить модератору
 Re: Левая дата в dbf  [new]
Sergey Sizov.
Guest
Количество секунд хранится для поля типа DateTime, а для поля типа Date хранится строка в формате YYYYMMDD.
17 май 07, 13:49    [4149866]     Ответить | Цитировать Сообщить модератору
 Re: Левая дата в dbf  [new]
Станислав С
Guest
Burn
Интересно как такое могло получится - насколько я помню поле типа Date содержит количесво секунд с какого начального момента. Так что в нем по определению неправильной даты быть не может. А если поле символьное то можно писать и править как захочется Фокс и слова не скажет

Неправильно помните... То, что Вы сказали - справедливо для DateTime поля.
Стандартное же поле Data в DBF-файле содержит символьные данные в виде строки вида YYYYMMDD. Так что, можно (при соответствующем желании) подправить дату и в текстовом редакторе... Только надо быть осторожным, чтобы лишним символом не произвести смещение остальных данных, так как данные различных полей следуют друг за другом без разделителей...
17 май 07, 13:57    [4149921]     Ответить | Цитировать Сообщить модератору
 Re: Левая дата в dbf  [new]
Burn
Member

Откуда: Днепропетровск, Украина
Сообщений: 1167
Точно. Запамятовал:(
17 май 07, 13:58    [4149937]     Ответить | Цитировать Сообщить модератору
 Re: Левая дата в dbf  [new]
Гурант
Member

Откуда:
Сообщений: 129
Как-бы там данные не хранились, вирь или еще что может их запортить...
Так как програмно отловить невалидную дату?
17 май 07, 14:12    [4150052]     Ответить | Цитировать Сообщить модератору
 Re: Левая дата в dbf  [new]
-=AlexiS=-
Member

Откуда: Одесса
Сообщений: 712
стандартными средствами - думаю никак
можно конечно написать свою прогу для разбора "внутренностей" и сравнивать данные полученные 2 способами.
Кстати - случай замены на "левую" дату не так страшен , как вариант замены например "20.02.2007" на "21.02.2007" - тут уже никак не выловить ...
17 май 07, 14:26    [4150182]     Ответить | Цитировать Сообщить модератору
 Re: Левая дата в dbf  [new]
Dima T
Member

Откуда:
Сообщений: 15281
Гурант
залезть то можно, но интересно найти программно и обезвредить :)

Дак уже обезврежено. фокс такую дату пустой показывает и обрабатывает как пустую
А если тебе для другого софта надо пустую, то
repl for empty(dDate) dDate with {}
17 май 07, 17:39    [4151586]     Ответить | Цитировать Сообщить модератору
 Re: Левая дата в dbf  [new]
Dima T
Member

Откуда:
Сообщений: 15281
Проскочил этот пост
Гурант
Как-бы там данные не хранились, вирь или еще что может их запортить...
Так как програмно отловить невалидную дату?

Структура DBF (тынц) довольно простая, читай DBF как файл и если прочитанное в число через CTOD() не преобразуется в дату, то значит дата "нереальная"
17 май 07, 17:45    [4151639]     Ответить | Цитировать Сообщить модератору
 Re: Левая дата в dbf  [new]
Гурант
Member

Откуда:
Сообщений: 129
Всем спасибо за ответы
18 май 07, 10:08    [4153413]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить