Форум: "Базы";
Текущий архив: 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)
← →
Vlad (2004-01-13 19:12) [41]
> The X © (13.01.04 19:09) [40]
Дружеский совет: никогда не верь пользователю.
Если он говорит - база пустая - это не всегда значит что Table1.IsEmpty = true;
Так что не забивай мозги ни себе ни народу, оттестируй как будет возможность на "глючной" машине или приведи код программы сюда.
← →
The X (2004-01-13 19:14) [42]Vlad ©
Ладно, наверное до лучших времен...
Хотя сейчас более подробно узнаю. Звонить надо за сотни км...
)))
Спасибо всем!
← →
Anatoly Podgoretsky (2004-01-13 19:17) [43]The X © (13.01.04 19:09) [40]
Ну насчет ошибок то не врут!
← →
sniknik (2004-01-13 23:46) [44]сколько раз уже говорили о пользе логов? еще раз в 10001, веди лог. все общение с пользователем выльется "была ошибка? высылайте лог". в 98% случаев все по нему решается. а в оставшихся 2% сильно помогает.
← →
The X (2004-01-18 16:30) [45]Итак, я решил остановится на автоматической отсылке с помощью e-mail необходимых данных на удаленный ящик. Будет приходит письмо с определенной темой. Далее необходимо автоматически проверять ящик и при приходе письма автоматически читать его жестко структурированное содержимое с последующим использованием пришедших данных. Что можете посоветовать по поводу оных средств автоматического приема и обработки?
← →
The X (2004-01-18 16:31) [46]Извините ошибся веткой :))
Страницы: 1 2 вся ветка
Форум: "Базы";
Текущий архив: 2004.02.10;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.008 c