DataModule1.SQ_Temp.SQL.Add('delete from log where otime='''+DataModule1.SQ_View.Fieldbyname('otime').AsString+'''');以时间otime为条件删除结果报错,并能不能删除。换成其它列可以删除,但是不唯一。现在数据库里没有主键列,不增加主键列,有什么办法吗?
比如出错:No value for parameter'17:58'17:58是要删除时间的分和秒。
如果otime 是日期型字段,可以這樣試一下 DataModule1.SQ_Temp.SQL.Add('delete from log where otime='''+datetostr(DataModule1.SQ_View.Fieldbyname('otime').AsString)+'''');
ORACLE 还是SQL SERVER? 如果是ORACLE : DataModule1.SQ_Temp.SQL.Add('delete from log where otime=to_date('''+DataModule1.SQ_View.Fieldbyname('otime').AsString+''',''yyyy-mm-dd hh24:mi:ss'')');
'delete from log where otime='''+DataModule1.SQ_View.Fieldbyname('otime').AsString+'''' 如果:otime在数据库里定义的时间类型, 这样试下 var strsql:string; begin strsql:='delete from log where otime=' +quotedstr(FormatDateTime('HH:SS', DataModule1.SQ_View.Fieldbyname('otime').AsDateTime));.... end;
DataModule1.SQ_Temp.SQL.Add('delete from log where otime=:otime'; DataModule1.SQ_Temp.parameters.parambyname('otime').value :=DataModule1.SQ_View.Fieldbyname('otime').AsString;试试这样
你最好设置断点,把SQL截出来,在查询分析器中执行一下看是不是可以
SQL SERVER 的话不因该出现这样的问题,你在查询分析器里面试验一下你的SQL,看是否出错,如果出错,把错误信息贴出来'delete from log where otime='日期' -----日期是你从log表里面选一个日期出来
delete from log where otime='日期' delete from log where otime='日期'
比如出错:No value for parameter'17:58'17:58是要删除时间的分和秒。
DataModule1.SQ_Temp.SQL.Add('delete from log where otime='''+datetostr(DataModule1.SQ_View.Fieldbyname('otime').AsString)+'''');
如果是ORACLE :
DataModule1.SQ_Temp.SQL.Add('delete from log where otime=to_date('''+DataModule1.SQ_View.Fieldbyname('otime').AsString+''',''yyyy-mm-dd hh24:mi:ss'')');
如果:otime在数据库里定义的时间类型,
这样试下
var
strsql:string;
begin
strsql:='delete from log where otime='
+quotedstr(FormatDateTime('HH:SS', DataModule1.SQ_View.Fieldbyname('otime').AsDateTime));....
end;
DataModule1.SQ_Temp.parameters.parambyname('otime').value :=DataModule1.SQ_View.Fieldbyname('otime').AsString;试试这样
-----日期是你从log表里面选一个日期出来
delete from log where otime='日期'
如"2008-11-12 中午 11:30"