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

Вниз

не соответствие типа поля и данных (Asdatetime)   Найти похожие ветки 

 
redlord   (2005-08-14 00:09) [0]

всем привет
народ подскажите где ошибка
у меня не получается в в поле тавлицы занести значение времени
(во время выполнения происходит исключение с текстом что поле не соответствует данным)
создается таблица вот таким запросом

begin
shareresurs="create table sharedresurs("+
"ip char(15) not null,"+
"path char(3500) not null,"+
"filename char(3500) not null,"+
"ext char(254) not null,"+
"size int not null,"+
"atribute int not null,"+
"createtime datetime not null,"+
"protokol int not null)";

form1.sqlDataSet1.CommandText:=shareresurs;
form1.sqlDataSet1.ExecSQL(false);
end;

а записывается значение так

s:=datetimetostr(now);
form1.Caption:=s; //exit;
sql:="insert into sharedresurs (ip,path,filename,ext,size,atribute,createtime,protokol) values (:ip,:path,:filename,:ext,:size,:atribute,:createtime,:protokol)";
form1.sqlDataSet1.CommandText:=sql;
...
...
form1.sqlDataSet1.Params.Parambyname("createtime").Asdatetime:= strtodatetime(s);
...

form1.sqlDataSet1.ExecSQL(false);


 
Anatoly Podgoretsky ©   (2005-08-14 00:50) [1]

Ты что БДЕ используешь? Очень плохо.


 
Киря   (2005-08-14 05:18) [2]

попробуй так:
form1.sqlDataSet1.Params.Parambyname("createtime").value:= date;


 
sniknik ©   (2005-08-14 11:21) [3]

> попробуй так:
> ...
и возможно это не поможет...
показанный код совершенно верный (кроме пары мелочей ;) должно работать (в ADO бы сработало и так)
но если там BDE... не поручусь... сменить срочно! ;о)) а не получится сменить (не ранняя стадия узучения/начинания проекта а конец, причем проект такой на который тебе наплевать... добить и бросить (курсовой)) замени параметр даты строковым, строку формируй в формате "yyyymmdd hh:nn:ss" (это и для нормального проекта пойдет, не то что BDE+MSSQL).

(откуда уверенность, что это именно от datetime поля? проверь остальные параметры на соответствие с типами полей, может ты строку в число пихаеш)

мелочи ;о), пара ;о) :
1 в структуре таблици нет ключа...(!!!) а это очень важно, нет поля под "естественный" ключ, введи "искуственный".

2 не то что ключа, индексов нет. может они после и создаются но судя по вопросу нет. значит поиск и т.д. не предусмотрен в этой таблице?

3 > ip char(15) not null IP? лучше представить типом int а строковое представление сделать вычисляемым полем (на клиенте). (будет 4 байта вместо 15. по числовым полям быстрее поиск, сортировки, обьеденения)

4 > path char(3500) not null 3500 символов и во всех записях они полностью заполнены (нехилый путь ;)? не верю. наверняка заполняется меньшее количество, максимальное будет редко. т.что сделай path VarChar(3500) not null
и остальные также.

5 все поля обязательны для заполнения? перебор. имхо. но тут конечно надо по задаче смотреть. (ext это расширение файла? не бывает файлов без расширения? не вообще, вообще бывают ;), у тебя)


 
AlexWlad ©   (2005-08-14 11:54) [4]

А откуда уверенность в том, что текущий формат системы и БД совпадают?
Например в системе - dd.mm.yyyy (German/Russian)
MSSQL - mm/dd/yyyy (English)

Соответственно, если число <=12, то все нормально, а например 24 марта 2005 -> "24.03.2005" для сервера выглядит как 3-е "чего-то" 2005, даже если он примет точку за слэш.

Вариант решения: SET DATEFORMAT "dmy" - для MSSQL или меняй в программе ShortDateFormat.


 
sniknik ©   (2005-08-14 12:12) [5]

> А откуда уверенность в том, что текущий формат системы и БД совпадают?
передается параметром как дататайм
> form1.sqlDataSet1.Params.Parambyname("createtime").Asdatetime:= strtodatetime(s);
тип дататайм это число, от форматов не зависит, т.е. 100% совпадают. (если не считать маленького недоразумения в 2 дня ;о)))

предложенный в sniknik ©   (14.08.05 11:21) [3] строковый формат представления даты -> "yyyymmdd hh:nn:ss" не зависит от локализации, воспринимается mssql сервером однозначно на любой.

нет. если здесь чтото не то, то это только изза BDE. (но еще больше вероятность что там еще чтото в программе глючит/перепутано... ну к примеру строка в 3500 символов это для BDE как нормально? это же строка,а не мемо не блоб...)


 
AlexWlad ©   (2005-08-14 12:42) [6]

Кстати, неплохо-бы привести точное сообщение об ошибке. А то действительно, здесь не телепаты.


 
Anatoly Podgoretsky ©   (2005-08-14 12:45) [7]

sniknik ©   (14.08.05 12:12) [5]
Это для БДЕ не возможно, это не АДО


 
sniknik ©   (2005-08-14 13:22) [8]

Anatoly Podgoretsky ©   (14.08.05 12:45) [7]
ну вот он и глюк а вовсе не дататайм.

(хорошо хоть он структуру таблици привел, полностью. хотя "грешил" именно на передачу дататайма.)


 
redlord   (2005-08-14 22:13) [9]

TO anatoly
чтото я не понял ето чтож получается возможность у компонента есть но пользоватся ей нельзя так чтоли ?


 
Anatoly Podgoretsky ©   (2005-08-14 22:57) [10]

БДЕ не поддерживает все возможности всех серверов.



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

Текущий архив: 2005.09.25;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.055 c
14-1125469229
syte_ser78
2005-08-31 10:20
2005.09.25
Совместимость фирменной эпсоновской краски с другими.


3-1123674484
yk
2005-08-10 15:48
2005.09.25
как сортировать ?


2-1124113351
Novice
2005-08-15 17:42
2005.09.25
Вопрос по TreeView


14-1125250066
Ксардас
2005-08-28 21:27
2005.09.25
Что это за сетевая атака такая Helkern?


1-1125478629
leonidus
2005-08-31 12:57
2005.09.25
Прожорливый TStringList