Форум: "Базы";
Текущий архив: 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.036 c