Текущий архив: 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.47 MB
Время: 0.034 c