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

Вниз

Проблема со 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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.029 c
8-1071742003
VasRog
2003-12-18 13:06
2004.04.11
CopyRect и фон


1-1080210217
SergP
2004-03-25 13:23
2004.04.11
Как запретить запуск нового процесса?


4-1075884333
Islander
2004-02-04 11:45
2004.04.11
keybd_event, SendInput и русские буквы


1-1079963769
Layner
2004-03-22 16:56
2004.04.11
Как после инсталяции сервиса, сразу же запустить его?


6-1079517703
NetMan2
2004-03-17 13:01
2004.04.11
Обновление списка клиентов ClientSocket