Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблема со smallDateTime [D6, MSSQL]


_sulent ©   (2004-03-11 09:57:00) 

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


Nikolay M.   (2004-03-11 13:15:00) [1]


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

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


sniknik   (2004-03-11 12:35:00) [2]

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


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

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


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

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


sniknik   (2004-03-11 12:14:00) [5]

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

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


_sulent   (2004-03-11 12:08:00) [6]

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


sniknik   (2004-03-11 11:19:00) [7]

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

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)


sniknik   (2004-03-11 11:01:00) [8]

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


_sulent   (2004-03-11 10:49:00) [9]

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


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

Дата какая ?

smalldatetime

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


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

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


_sulent   (2004-03-11 10:27:00) [12]

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


_sulent   (2004-03-11 10:05:00) [13]

Так я передаю параметр:
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


stone   (2004-03-11 10:01:00) [14]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо