日期型怎样以动态的参数形式写入数据库(100分)

  • 主题发起人 主题发起人 fangyongchun
  • 开始时间 开始时间
F

fangyongchun

Unregistered / Unconfirmed
GUEST, unregistred user!
想将日期插入到SQL数据库里,其中yeam是日期型的

sql.add('insert ttime(yeam) values(''2002-9-18'')');//ok

如果用参数形式
sql.add('insert ttime(yeam) values(:yeam)');
parameters.parambyname('yeam').value:=strtodatetime('2002-9-18');//error

(2) parameters.parambyname('yeam').value:=strtodate('2002-9-18');//error

如果是用到了变量stryr 年,strmonth 月份, strday 日子又该怎么样用参数些到数据库里呢.

我在大富翁上看到了同样的问题,据说是ADO的问题,可是我把它升级了还是通不过,不知道是什么原因
 
你是什么数据库?
 
sql.parambyname('yeam').asdatetime:=strtodatetime('2002-9-18');
 
我用的SQL7数据库
相关文章在http://richsearch.com/displ.jsp?lid=484284上
另,Nadoto你的办法我也已经试过了,不能解决.
据GEMINII所说,'这个问题早已解决,是Ado自身的问题,运行一下Ado升级包就行了。'
可是我升级了ADO却还不能解决问题,为什么?

 
日期型数据处理起来确实麻烦一些
 
insert into ttable1(t1) values (:t1)
parambyname('t1').value=strtodatetime('2002-9-18');
 
你的这个ado 还用于查询吗?
如果用于查询,就另用一个ado来做insert等修改数据库的操作。
另外可以用存储过程来写入数据库时间,用adostoredproc。
 
sql.parambyname('yeam').datatype := ftstring;
sql.parambyname('yeam').asstring:='2002-9-18';
 
这个是sql service自身的问题
可能用转换函数解决
在sql语句中加入convert(datatime,'2002/12/10',109)就可以转换了
 
用datetimepicker控件,如果是编程,就要看你系统的时间格式是不是2002-9-18这种格式
 
在delphi的数据集控件中,好像日期类型就是ftFixedChar
所以,只要sql.parambyname('yeam').value:=''2002-9-18'';就行了
 
to tomzhao 你的方法我已经试过了,通不过的
to yoking 你的方法也不成的
to ydysn 你能不能写具体些,代不进去啊
现在我的头巨大无比,日期格式的就是写不进去,而且我还想动态的来写入呢,用变量来代入更麻烦的
 
with ADOQuery1 do
begin
close;
sql.Text := 'select * from orders where saledate =:a';
Parameters.ParamByName('a').Value := now;
open;
end;
用ado这么弄比较麻烦,同时,需要在IDE环境中设置好 Parameters 中添加一个参数,name为 a
所以,通常俺是拼写sql来搞定,很少用参数的形式
 
终于自己把它搞定了,多谢大家,互相学习[:D][:D][:D]

var
start:string;
yr:string;
m:string;
day:string;
begin
yr:='1998';
m:='6';
day:='1';
start:=datetostr(encodedate(strtoint(yr),strtoint(m),strtoint(day)));
showmessage(start) ;
with query1 do
begin
close;
sql.Clear ;
sql.Add('insert into ttime(yeam) values(:yeam)');
parambyname('yeam').asdatetime:=strtodatetime(start);
execsql;

 
原来错误出在这了:

原先我的ADO连接的选择都是用Miscrosoft Ole DB Porvider For ODBC drivers.

所以凡是日期格式做参数就一直都是出错的,选 Miscrosoft Ole DB Porvider For Sql Server 就行了。

 
后退
顶部