关于query的一个菜鸟级问题(50分)

  • 主题发起人 主题发起人 avay
  • 开始时间 开始时间
A

avay

Unregistered / Unconfirmed
GUEST, unregistred user!
写了以下一段代码,执行后day_temp表中没有填加任何记录,不明所以,特请教各位大虾

procedure Tshjdform.BitBtn2Click(Sender: TObject);
var
tt:string;
begin
tt:=formatdatetime('mm/dd/yyyy',datetimepicker1.datetime);
query3.DataSource:=dbmo.daytemp_so;
query3.SQL.Clear;
query3.SQL.Add('insert into day_temp select * from day where tradedate=:dd');
query3.ParamByName('dd').value:=copy(tt,1,2)+'/'+copy(tt,4,2)+'/'+copy(tt,7,4);
query3.Prepare;
query3.ExecSQL;
end;
 
只能说明此语句 select * from day where tradedate=:dd 执行结果为空,
可能是, dd 的值和你的数据表里的字段值,类型不一样。你应该先做做试验,比如要
不要'/'啊,是不是要转换成数值等,主要看你的表中取的什么字段类型,跟用什么数据
库也有一定关系。
 

>> query3.DataSource:=dbmo.daytemp_so;
是否有主表?
>>执行后day_temp表中没有填加任何记录
只能说明主表中无相应的记录
 
dd的参数类型datatime类型就完了,免得那么麻烦
 
顺便向<font color=blue>郭镇松</font>老弟问好!
 
首先看tradedate是什么类型的字段,再设一个字符变量,STR:=copy(tt,1,2)+'/'+copy(tt,4,2)+'/'+copy(tt,7,4);
跟踪看其值,然后query3.ParamByName('dd').asstring:=STR或query3.ParamByName('dd').asdate:=strtodate(STR)
 
多人接受答案了。
 
如果tradedate的类型是Date
then
用decodedate&amp;format比较好
用参数的话,处理不好空格的
 
看看DD的类型是不是日期型的
 
后退
顶部