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

Вниз

Проблема со smallDateTime   Найти похожие ветки 

 
_sulent ©   (2004-03-11 09:57) [0]

Привет Мастерам!
Проблема возникает такого порадка, я пытаюсь обновить данные из своей программы. Работаю через ADO с MS SQL Server 2000. Так вот, когда присваиваю дату, например поле имеет типа smalldatetime, а параметр у меня как DateTime, то выдает ошибку:
The conversion from datetime data type to smalldatetime data type resulted in a smalldatetime overflow error.
Что может быть, и как выкрутиться из этой ситуации?


 
stone ©   (2004-03-11 10:01) [1]

Параметр где?


 
_sulent ©   (2004-03-11 10:05) [2]

Так я передаю параметр:
ADOQuery.parameters.paramByName("date_opl").value := date_opl.text;
А так он у меня записан в ObjectInspector"e:
DataType = frDateTime
Direction = pdInput
Name =  date_opl
NumericScale=0
Precision=16
Size=16
Value.Type=Unassigned


 
_sulent ©   (2004-03-11 10:27) [3]

ну что, правда никто не знает как это все нужно сделать?


 
SergSuper   (2004-03-11 10:36) [4]

Вы передаёте дату, которая лежит вне пределов допусимых значений для smalldatetime, о чем Вам сервер и говорит. Ну вот и думайте почему это так и где.
Лично я никогда smalldatetime не использую - писать на 5 букв больше.


 
ZrenBy ©   (2004-03-11 10:38) [5]

Дата какая ?

smalldatetime

Date and time data from January 1, 1900, through June 6, 2079,
with an accuracy of one minute.


 
_sulent ©   (2004-03-11 10:49) [6]

дело в том, что нужно использовать именно smalldatetime, иначе будут писаться не верные значения...
то что он за рамки переходит это я понимаю, но только краткую я даже вручную не могу проставить в ObjectInspector"e, он сразу автоматом выдает ftDateTime.
и ничего не получается ему сказать...


 
sniknik ©   (2004-03-11 11:01) [7]

основная проблема в этом date_opl.text; передавай туда дату раз уж тип параметра у тебя frDateTime.


 
sniknik ©   (2004-03-11 11:19) [8]

и тогда можно будет написать примерно такой запрос на вставку, на все случаи  

DECLARE @DAT DateTime
SET @Dat = :date_opl
INSERT INTO ATab (Name,Dat) VALUES ("Test", CASE WHEN @Dat >= "19000101" AND @DAT <= "20790606" THEN @Dat ELSE Null END)


 
_sulent ©   (2004-03-11 12:08) [9]

гм... дело в том что он все равно не хочет понимать то что я пишу, хоть строку ему присваивай, хоть дату, он все равно выдает ошибку... второй случай меня как-то не особенно устраивает, так что нужно на уровне дельфи разруливать как-то... есть еще какие-нить советы?


 
sniknik ©   (2004-03-11 12:14) [10]

> второй случай меня как-то не особенно устраивает

на уровне дельфи сделай алгоритм присвоения байту(0..255) ворда(0..65535), без потерь значений после 255 при обратном переносе, это и будет самое оно.
сделаеш, пользуйся. нет не морочь мозги себе и людям.


 
Nikolay M. ©   (2004-03-11 12:20) [11]

Понимаю, что танец с бубном, но все же: попробуй дату округлить с точностью до секунды (чтобы не было долей секунд) и поиграться с AsDateTime/AsFloat, ftDatetime/ftFloat? Хотя я лично таким никогда не заморачивался.


 
_sulent ©   (2004-03-11 12:25) [12]

хм... ну ладно, попробую что-нить родить! всем спасибо!


 
sniknik ©   (2004-03-11 12:35) [13]

Nikolay M. ©   (11.03.04 12:20) [11]0
если передается не строкой а числом(датой) то ошибки переконвертации исключаются (типа вместо неправильной строки 0 подставит а это 30.12.1899), остается только дата задается сознательно вне пределов типа.
а второй вариант, с отсечением пределов ему не подходит. пусть думает ворд в байт укладывает.


 
Nikolay M. ©   (2004-03-11 13:15) [14]


> sniknik ©   (11.03.04 12:35) [13]

Только не пойму, почему все-таки ХП или datatime не угодили?



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

Форум: "Базы";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.046 c
9-1070788187
Yegor
2003-12-07 12:09
2004.04.11
Как написать тренер?


7-1080203192
ламерламер
2004-03-25 11:26
2004.04.11
динамическое создание формы


14-1079279039
Юрий Зотов
2004-03-14 18:43
2004.04.11
Ну, с новосельем!


1-1082538504
M@X
2004-04-21 13:08
2004.04.11
Адресация порта Longint ?? Как?


3-1081268959
GetIt
2004-04-06 20:29
2004.04.11
Фильтрация





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский