Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.10;
Скачать: CL | DM;

Вниз

Itnvalid variant type conversion   Найти похожие ветки 

 
The X ©   (2004-01-13 15:52) [0]

Проблема вот в чем.
Запускается программа. На форме расположены Edit-ы и DateTimePicker-ы. При запуске эти компоненты обращаются вручную к соответствующим полям в БД, которые имеют соответствующий формат. DateTimePicker установлен в длинный формат отображения даты. Если БД пуста, то при запуске все поля для ввода будут пустыми, а DateTimePicker будет отображать текущую дату. На некоторых компах при запуске вылазит ошибка см. заголовок ветки. Я думаю, что причина - в региональных настройках отображения даты - "дд.мм.гг" "дд.мм.гггг". Поправьте меня, пожалуйста, если я не прав.
СПАСИБО!


 
Johnmen ©   (2004-01-13 15:54) [1]

Как дата загоняется в DateTimePicker ?


 
The X ©   (2004-01-13 16:01) [2]

DateTimePicker1.DAte := datetostr(now)


 
Sandman25 ©   (2004-01-13 16:02) [3]

А надо DateTimePicker1.DAte := Date


 
Johnmen ©   (2004-01-13 16:03) [4]

:)

А из поля как ?


 
The X ©   (2004-01-13 16:22) [5]

Sandman25 ©
Т.е. если у меня не так написано, как Вы даете, можно ли исправить ситуацию изменением региональных настроек?

Johnmen ©
База ж пустая при возникновении ошибки! Т.е. ошибка - при пустой базе, когда DateTimePicker-у присваивается текущая дата.


 
Ega23 ©   (2004-01-13 16:26) [6]

DateTimePicker1.DAte - это TDateTime. А почему ты ему String присваиваешь?


 
Sandman25 ©   (2004-01-13 16:33) [7]

[5] The X © (13.01.04 16:22)

Нет. И даже если было бы можно, все равно надо исправить, чтобы не зависеть от настроек.


 
The X ©   (2004-01-13 16:49) [8]

Приношу свои искренние извинения за ввод Вас всех в заблуждение.
Я пересмотрел проект. У меня:
DateTimePicker1.Date := Date

Здесь ошибка - 100% (во взаимодействии с регион. настройками). Как Вы теперь считаете?


 
Sandman25 ©   (2004-01-13 16:51) [9]

[8] The X © (13.01.04 16:49)

Там у Вас with никакого нет? Укажите явно DateTimePicker1.Date := SysUtils.date


 
The X ©   (2004-01-13 16:54) [10]

НЕТ!
У меня явно задается:
if Table1.IsEmpty thent
begin
Edit1.Text := "";
......
DateTimePicker1.Date := Date;
end;

И ВСЕ!!


 
Johnmen ©   (2004-01-13 16:56) [11]

или просто Now


 
Vlad ©   (2004-01-13 17:04) [12]


> The X © (13.01.04 16:54) [10]

Ты уверен что у тебя Table1.IsEmpty = true ?


 
The X ©   (2004-01-13 17:05) [13]

Vlad ©
ДА! В противном случае я бы не начинал сию ветку.

Johnmen ©
??? Куда его впарить?


 
Alex_Bredin ©   (2004-01-13 17:06) [14]

что-то недоговаривается, имхо

скорее всего, ошибка возникает при неправильной попытке инициализировать пикеры значениями из таблицы


 
Johnmen ©   (2004-01-13 17:08) [15]

>The X ©
>??? Куда его впарить?

Куда сочтёшь нужным. :)


 
The X ©   (2004-01-13 17:12) [16]

Хорошо!
На одних машинах (большинство) - все нормально, а на нкоторых глюк! СИТУАЦИЯ АНАЛОГИЧНА, А РЕЗУЛЬТАТЫ - РАЗНЫЕ!
Это с настройками на компе че-то. Что Вы по этому поводу думаете?е


 
sniknik ©   (2004-01-13 17:12) [17]

The X © (13.01.04 16:54) [10]
поставь так, во избежание разных там сомоопределенных переменных ...
DateTimePicker1.Date:= SysUtils.Date();
поможет (если только правду сказал и ошибка сдесь
DateTimePicker1.Date := Date;)


 
sniknik ©   (2004-01-13 17:13) [18]

> Это с настройками на компе че-то. Что Вы по этому поводу думаете?е
быть того не может (в этом месте) это не строка, число от настроек не зависит.


 
Johnmen ©   (2004-01-13 17:14) [19]

Лично я думаю почти как Alex_Bredin ©.
Т.е. чего-то не договариваешь...или вводишь в заблуждение (ненарочно, естественно)


 
The X ©   (2004-01-13 17:22) [20]

А не может такого быть, что в региональных настройках стоит короткий год, а в DateTimePicker - длинный?


 
Vlad ©   (2004-01-13 17:26) [21]


> The X © (13.01.04 17:22) [20]
> А не может такого быть, что в региональных настройках стоит
> короткий год, а в DateTimePicker - длинный?

Это как же такого добиться то ? :-)


 
Ega23 ©   (2004-01-13 17:26) [22]


> А не может такого быть, что в региональных настройках стоит
> короткий год, а в DateTimePicker - длинный?

Это же строковое представление типа TDateTime Целая его часть - количество дней, прошедших с 01.01.1900, дробная - часы, минуты, секуды и сколько-то милисекунд (это как-то по битам разбивается, если мне память не изменяет). Поэтому единственное, что может быть (хотя не должно) это то, что Date - Целое число.
Если ты напишешь DateTimePicker1.Date:=Trunc(Now) - ошибки быть не может.


 
Johnmen ©   (2004-01-13 17:27) [23]

Может. Но это не влияет на работоспособность...:)


 
The X ©   (2004-01-13 17:27) [24]

Может задать вместо "дд.мм.гг" ---> "дд.мм.гггг" ?


 
Johnmen ©   (2004-01-13 17:33) [25]

>Ega23 © (13.01.04 17:26)

Мягко говоря, не совсем верно...:)


 
Vlad ©   (2004-01-13 17:34) [26]


> Johnmen © (13.01.04 17:27) [23]
> Может.

Как ?


 
Johnmen ©   (2004-01-13 17:38) [27]

>Vlad © (13.01.04 17:34)
>Как ?

Странный вопрос... Или я чего не понял ? А понял я так, что он про формат отображения имел в виду...


 
sniknik ©   (2004-01-13 17:44) [28]

The X © (13.01.04 17:27) [24]
ничем не поможет (если конечно у тебя гдето преобразований нет) в показаном коде точно
посмотри в модуле System - TDateTime = type Double; т.е. одно число присвоилось другому, причем сдесь настройки где месяц при выводе стоит?


 
sniknik ©   (2004-01-13 17:48) [29]

Ega23 © (13.01.04 17:26) [22]
> что Date - Целое число.
не
TDate = type TDateTime;


 
Vlad ©   (2004-01-13 17:53) [30]


> Johnmen © (13.01.04 17:38) [27]

Формат отображения в DateTimePicker у него стоит длинный, т.е. dfLong. Допустим настройки в RegionalSettings стоят следующие:
Long Date Style = d MMMM yyyy "г." с длинным годом.
Как в DateTimePicker сделать тоже самое только с коротким годом при указанных Regional Settings ?


 
Johnmen ©   (2004-01-13 17:57) [31]

>Vlad © (13.01.04 17:53)

Там есть Format. Он перекрывает DateFormat.


 
roottim   (2004-01-13 18:01) [32]

ну вставь в главный модуль этот код и проверь действуют ли рег.настроики или нет... а потом перечитай все сообщения снова.
initialization
SysUtils.DateSeparator := ".";
SysUtils.ShortDateFormat := "dd.MM.yyyy";
end;


 
Johnmen ©   (2004-01-13 18:02) [33]

>roottim

Ты ошибся комнатой :)))


 
Vlad ©   (2004-01-13 18:08) [34]


> Johnmen © (13.01.04 17:57) [31]
> >Vlad © (13.01.04 17:53)
>
> Там есть Format. Он перекрывает DateFormat.

"Там" - это в DateTimePicker ? Я что-то такого не вижу (D5)


 
roottim   (2004-01-13 18:21) [35]

2Johnmen © (13.01.04 18:02) [33]
ты это к чему... к SysUtils.LongDateFormat ?... ну забыл...
и вообще ошибка явно не здесь...
[32] - совет.. не зависеть на ввод -вывод от рег-х настроек
- что мешает выставить рег-е настройки на той машине где не работает, и посмотреть.. в них-ли глюк или нет... наверно просто лень..
- скорее всего где-то есть строчка такого рода
DateTimePicker1.Date := qury1["DATE_1"];
где идет преобразование variant.. и на значение NULL происходит оный exception


 
Johnmen ©   (2004-01-13 18:25) [36]

>roottim

Это последействие взгюка форума...:)


 
The X ©   (2004-01-13 18:54) [37]

Что я вам всем хочу сказать:
1) Никто так и не выдвинул предположений - почему на некоторых машинах работает, а на некоторых - нет?
2) Там, где не работает, пока нет возможности поиграться регион. настройками - так получилось, пока решаем без этого.
3) Никаких DateTimePicker1.Date := qury1["DATE_1"];
там и близко нет.
4) Есть мысль - а может там на глючной машине стоят в регион. настройках разделитель года - "/" ??????? (!!!!!!!!) (подтверждает мою мысль № 1).


 
Sandman25 ©   (2004-01-13 18:58) [38]

Только что попробовал. И . ставил, и /, и длинный формат, и короткий. Все работает. Win2000, D3.


 
Vlad ©   (2004-01-13 18:59) [39]

Если у тебя нет возможности отладить проект на "глючных" машинах, то как же ты узнал, что ошибка происходит именно в этом месте, т.е. конкретно в этой строчке:
DateTimePicker1.Date := Date;
P.S. твой 4-й пукт отпадает.


 
The X ©   (2004-01-13 19:09) [40]

Vlad ©
Потому что звонят и говорят - такая вот ошибка. Я спрашиваю - база пустая? Да, они говорят, что база путая и ошибка возникает при запуске. А я знаю, что при запуске происходит проверка на пустоту базы. Если пустая - в Пикеры подставляется текущая дата.

Ко всем.
Еще звонили из другого места :)) и говорили, что там запускается нормально, но при сохранении любой записи в базе вылетает тот же EVariant. Поля с датой пишутся в базовые поля типа DATE Paradox. А к третьим сторонам я уже звонил *))) и сам спрашивал - у них все нормально.
8)



Страницы: 1 2 вся ветка

Текущий архив: 2004.02.10;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.024 c
14-29545
Alexander666
2004-01-21 11:46
2004.02.10
Американские деньжата


6-29507
Elik
2003-12-05 10:51
2004.02.10
Как загрузить в IdHTTP вторую половину странички


1-29422
olookin
2004-01-31 16:05
2004.02.10
Ответ на OnMinimize главной формы


14-29558
VID
2004-01-18 23:45
2004.02.10
Плавное появление формы


14-29590
Ega23
2004-01-19 10:57
2004.02.10
Вчера кино по ОРТ показывали