Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / DOS-VFP-EXCEL дата / 13 сообщений из 13, страница 1 из 1
16.04.2008, 11:28
    #35258199
Guest1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DOS-VFP-EXCEL дата
0. dos-база имеет 2 поля даты d1 и d2 в них стоит одинаковое значение 01.04.08
1. открываю dos-базу в vfp9 ... при наведении курсора на d1 вижу значение 11.04.1908, на d2 - 11.04.2008 почему они вдруг стали разными ?
2. COPY TO file.xls TYPE XL5 переносит в Excel дату так же: в d1 - 11.04.1908 и в d2 - 11.04.2008
Как перенести в Excel поля даты правильно ?
Спасибо
...
Рейтинг: 0 / 0
16.04.2008, 11:32
    #35258216
DOS-VFP-EXCEL дата
http://www.sql.ru/forum/actualthread.aspx?tid=462862&hl=rollover
...
Рейтинг: 0 / 0
16.04.2008, 11:40
    #35258251
Galyamov Rinat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DOS-VFP-EXCEL дата
> 0. dos-база имеет 2 поля даты d1 и d2 в них стоит одинаковое значение
> 01.04.08
> 1. открываю dos-базу в vfp9 ... при наведении курсора на d1 вижу
> значение 11.04.1908, на d2 - 11.04.2008 почему они вдруг стали разными ?

Наверное они там разные занесены!

Сделать set centure on и убедиться глазами!

Про остальное - ссылка предыдущего оратора выше.


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
16.04.2008, 11:40
    #35258252
DOS-VFP-EXCEL дата
Guest10. dos-база имеет 2 поля даты d1 и d2 в них стоит одинаковое значение 01.04.08
1. открываю dos-базу в vfp9 ... при наведении курсора на d1 вижу значение 11.04.1908, на d2 - 11.04.2008 почему они вдруг стали разными ?
2. COPY TO file.xls TYPE XL5 переносит в Excel дату так же: в d1 - 11.04.1908 и в d2 - 11.04.2008
Как перенести в Excel поля даты правильно ?
Спасибо
Все началось в ДОСе: не было включено Set Century On.
Поэтому FPD ПО УМОЛЧАНИЮ воспринял значение в d1 01.04.08 как 01.04.1908
В поле d2 было введено (или преобразовано при помощи valid'а) корректно: 01.04.2008; так и было сохранено в таблице...
Соответственно надо перекодировать даты (поле d1):
Код: plaintext
1.
replace d1 with Date(iif(Year(d1)< 10 , 2008 ,Year(d1)),Month(d1),Day(d1)) all
После этого повторить преобразование в файл Экселя...
...
Рейтинг: 0 / 0
16.04.2008, 11:44
    #35258270
DOS-VFP-EXCEL дата
Станислав С...кий Guest10. dos-база имеет 2 поля даты d1 и d2 в них стоит одинаковое значение 01.04.08
1. открываю dos-базу в vfp9 ... при наведении курсора на d1 вижу значение 11.04.1908, на d2 - 11.04.2008 почему они вдруг стали разными ?
2. COPY TO file.xls TYPE XL5 переносит в Excel дату так же: в d1 - 11.04.1908 и в d2 - 11.04.2008
Как перенести в Excel поля даты правильно ?
Спасибо
Все началось в ДОСе: не было включено Set Century On.
Поэтому FPD ПО УМОЛЧАНИЮ воспринял значение в d1 01.04.08 как 01.04.1908
В поле d2 было введено (или преобразовано при помощи valid'а) корректно: 01.04.2008; так и было сохранено в таблице...
Соответственно надо перекодировать даты (поле d1):
Код: plaintext
1.
replace d1 with Date(iif(Year(d1)< 10 , 2008 ,Year(d1)),Month(d1),Day(d1)) all
После этого повторить преобразование в файл Экселя...
Извините, надо так:
Код: plaintext
1.
replace d1 with Date(iif((Year(d1)/ 100 )-int(Year(d1)/ 100 )< 0 . 1 , 2008 ,Year(d1)),Month(d1),Day(d1)) all
...
Рейтинг: 0 / 0
16.04.2008, 11:44
    #35258271
Guest1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DOS-VFP-EXCEL дата
12345вышелзайчикпогулятьhttp://www.sql.ru/forum/actualthread.aspx?tid=462862&hl=rollover12345ужезайчикпогулял? благодарю за ответ.
...
Рейтинг: 0 / 0
16.04.2008, 11:44
    #35258272
Galyamov Rinat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DOS-VFP-EXCEL дата
"Станислав С...кий" <nospam@sql.ru>; сообщил/сообщила в новостях следующее:
news:5553219@sql.ru...
> replace d1 with Date(iif(Year(d1)<10,2008,Year(d1)),Month(d1),Day(d1)) all

Year(d1)<10 ???

Может быть Year(d1)<1910 ?


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
16.04.2008, 11:46
    #35258284
Galyamov Rinat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DOS-VFP-EXCEL дата
> Year(d1)/100)-int(Year(d1)/100)<0.1

:)

Не зря говорят, что в фоксе есть как минимум три пути решения задач!


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
16.04.2008, 11:51
    #35258303
DOS-VFP-EXCEL дата
Galyamov Rinat
"Станислав С...кий" <nospam@sql.ru>; сообщил/сообщила в новостях следующее:
news:5553219@sql.ru...
> replace d1 with Date(iif(Year(d1)<10,2008,Year(d1)),Month(d1),Day(d1)) all

Year(d1)<10 ???

Может быть Year(d1)<1910 ?


Posted via ActualForum NNTP Server 1.4
Эх, как давно уже была "проблема 2000", когда такие проблемы щелкал "как орешки"....
на самом деле, надо (хорошая мысль приходит слишком поздно ):
Код: plaintext
1.
2.
3.
replace d1 with date(;
iif( val(substr(str(Year(d1), 4 ), 3 , 2 ))< 10 , val('20'+substr(str(Year(d1), 4 ), 3 , 2 )), year(d1)),;
month(d1),Day(d1))
...
Рейтинг: 0 / 0
16.04.2008, 12:23
    #35258468
Guest1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DOS-VFP-EXCEL дата
самое интересное что в d1 чередуются и правильно-просматривающиеся даты и нет, то есть здесь есть есть и год 1908 и 2008. А в d2 - всё нормально. Ввод данных в базу через карточку, то есть непосредственного доступа к базе у юзера нет.
...
Рейтинг: 0 / 0
16.04.2008, 12:23
    #35258472
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DOS-VFP-EXCEL дата
Станислав С...кий

Вообще-то, нет смысла в таких сложных конструкциях. Ведь очевидно же, что дата может либо начинаться на 19..., либо на 20... Т.е. все решается более простыми средствами

Код: plaintext
REPLACE FOR between(d1,  1900 ,  1910 ) d1 WITH GoMonth(d1, 100 * 12 )

А если так уж хочется сравнивать первые 2 цифры и последние 2 цифры, то это можно сделать при помощи функций

Код: plaintext
1.
2.
INT(YEAR(d1)/ 100 )  && первые  2  цифры
MOD(YEAR(d1), 100 )  && последние  2  цифры

Без необходимости конвертации в строку
...
Рейтинг: 0 / 0
16.04.2008, 14:58
    #35259136
Galyamov Rinat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DOS-VFP-EXCEL дата
Господа ВладимирМ , Станислав С...кий! Сейчас парня совсем запутаем!!!!
)

Он до сих пор считает, что "корявое" отображение даты - это косяк фокса!!!!
:)


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
16.04.2008, 15:23
    #35259258
Guest1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DOS-VFP-EXCEL дата
Galyamov Rinat
Господа ВладимирМ , Станислав С...кий! Сейчас парня совсем запутаем!!!!
)

Он до сих пор считает, что "корявое" отображение даты - это косяк фокса!!!!
:)


Posted via ActualForum NNTP Server 1.4

- Не парень я ... Ж )
- Не считаю я, что это фокс виноват. Фокс вообще молодец, выручает меня каждый день.
- вот, с вашей помощью командой
iif( val(substr(str(Year(d1),4),3,2))<10, val('20'+substr(str(Year(d1),4),3,2)), year(d1)),;
month(d1),Day(d1))
поправила поле d1. Просто база старинная попалась, с 1991 года ! )
Спасибо за помощь.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / DOS-VFP-EXCEL дата / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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