Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.02.10;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.53 MB
Время: 0.008 c
1-29446
frost
2004-01-30 11:42
2004.02.10
Отрисовка TreeNode на TreeView.


14-29529
Билл Гейтс
2004-01-21 11:31
2004.02.10
БЛОКИРОВКИ


14-29567
HermitAlex
2004-01-20 13:36
2004.02.10
Обучение игры в бильярд


14-29588
Ig
2004-01-20 00:20
2004.02.10
Как в строковом массиве определить длину?


6-29515
ruffest
2003-12-02 22:09
2004.02.10
Wake On Lan





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский