![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Глюк с конвертацией [D5, IB5.x, IB6.x]
VaZ © (2003-01-16 10:36:00)День добрый мастера...
направьте пожалста меня...что то торможу
есть вот такой ввод даты
Dat:=InputBox("Введите дату проведения ревизии","Дата ревизии:","1.05.2001");
Затем это преобразуется и загоняется в StoredProc
RevisionDate:=StrToDate( Dat );
dm.spRevB.ParamByName("REVISION_DATE").AsDate := RevisionDate;
В процедуре идет обновление постоянной
UPDATE CONSTS
SET VALUE_B = CAST(:REVISION_DATE AS VARCHAR(255))
WHERE LABEL="SV_LAST_REV_DATE";
Проблема вот в чем... передается дата как 1.01.03
а в базе отображается как 01-JAN-03.. В связи с чем все глючит..
Вот код считывания даты из базы
LR_DATE:=#39+FormatDateTime("dd.mm.yyyy",StrToDate(dm.qWork.FieldByName("VALUE_B").AsString))+#39
Дату в виде 01-JAN-03 он не может привести ук нормальному выходу...Я смотрел настройки БДЕ, ничего странного там не обнаружил ..мож есть какой выход?
Big_Rom (2003-01-20 06:24:00) [1]в Квикдеска
там тоже формат даты утанавливается мож там утебя проблема ?
VaZ (2003-01-20 05:48:00) [2]спасибо Максу....теперь осталось понять а там ли глюк был...хи хи
Max Zyuzin (2003-01-17 12:51:00) [3]>VaZ © (17.01.03 12:07)
Ууу.. А что у тебя возвращается в результате dm.qWork.FieldByName("VALUE_B").AsString??
VaZ (2003-01-17 12:07:00) [4]тип varchar(75)
Max Zyuzin (2003-01-17 11:53:00) [5]>VaZ © (17.01.03 11:41)
VALUE_B - какой тип у этого поля?
VaZ (2003-01-17 11:41:00) [6]2 Max Zyuzin
вываливает приведенную ошибку не код а попытка изменить вручную поле в базе с помощью Квикдеска.
UPDATE CONSTS
SET VALUE_B = CAST(:REVISION_DATE AS VARCHAR(255))
WHERE LABEL="SV_LAST_REV_DATE";
это код до которого все идет Ок...то есть даты заносят ся в таблицу и эта в том числе...Попытка в обход записать ее строковым значением не удалась...вручную тож
LR_DATE:=#39+FormatDateTime("dd.mm.yyyy",StrToDate(dm.qWork.FieldByName("VALUE_B").AsString))+#39
А это код запроса значения из базы...ругающийся на формат даты текстовый
Max Zyuzin (2003-01-17 10:58:00) [7]Дата в таблице хранится в виде ЧИСЛА. (просто дата - целого, дата+время - с плавающей точкой). А то, что ты написал, это она так отображается...
Приведи код который у тебя вываливает ошибку...
VaZ (2003-01-17 10:45:00) [8]Так вот работаю с датой как с датой...на промежуточных этапах все идет нормально...будь это единственная дата, ее можно было б заменить...а так смысла нет поскольку идут операции с датами...
Все остальное заносится... и появляется в таблице а вот при апдейте константы проходит глюк какой то...поскольку я знаю что сервера хранят дату в таком формате...но я то настройки изменил чтоб он хранил как 01.01.03 а не 01-JAN-03...и несмотря на это (изменения системных стандартов и БДЕ) все идет по прежнему...мож в чем еще загвоздка?
Просто VarChar приходится держать для констант...так как там разные данные встречаются...и дату в запрос проще передать как дату...чтоб прошли операции с ней
Max Zyuzin (2003-01-16 11:33:00) [9]Выход есть... с датой работать как с датой, а не со строкой... запросы делать через параметры, а дату получать из DateTimePicker-а
Johnmen (2003-01-16 11:10:00) [10]Ну так и вставляй строковое значение "01.01.99", а не датное !
Где здесь проблема ?!
VaZ (2003-01-16 11:06:00) [11]Просто остальные то даты как то в этом поле умудрились встать как 01.01.99 ...то есть в таком виде
VaZ (2003-01-16 11:04:00) [12]Всяко извращение но не я прогу писал...я тока модифицирую...
а вручную исправить не удается пишет-
arithmetic overflow or division by zero has occured
arithmetic exception, numeric overflow or string truncation
Cannot transliterate character between character sets.
А как вытянуть то..намекните команду то?
Johnmen (2003-01-16 10:54:00) [13]...И вообще, хранить дату в символьном поле - извращение еще то...
Alexandr (2003-01-16 10:52:00) [14]сервер всегда дату выводит как 01-JAN-03
хочешь по-другому - используй или UDF или вытягивай дату себе в программу как AsDateTime, и уже сам форматируй как тебе надо.