DataModule1.SQ_Temp.SQL.Add('delete from log  where otime='''+DataModule1.SQ_View.Fieldbyname('otime').AsString+'''');以时间otime为条件删除结果报错,并能不能删除。换成其它列可以删除,但是不唯一。现在数据库里没有主键列,不增加主键列,有什么办法吗?

解决方案 »

  1.   


    比如出错:No value for parameter'17:58'17:58是要删除时间的分和秒。
      

  2.   

    如果otime 是日期型字段,可以這樣試一下
    DataModule1.SQ_Temp.SQL.Add('delete from log  where otime='''+datetostr(DataModule1.SQ_View.Fieldbyname('otime').AsString)+''''); 
      

  3.   

    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'')');
      

  4.   

    '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;
      

  5.   

    DataModule1.SQ_Temp.SQL.Add('delete from log  where otime=:otime';
    DataModule1.SQ_Temp.parameters.parambyname('otime').value :=DataModule1.SQ_View.Fieldbyname('otime').AsString;试试这样
      

  6.   

    你最好设置断点,把SQL截出来,在查询分析器中执行一下看是不是可以
      

  7.   

    SQL SERVER 的话不因该出现这样的问题,你在查询分析器里面试验一下你的SQL,看是否出错,如果出错,把错误信息贴出来'delete from log  where otime='日期'
    -----日期是你从log表里面选一个日期出来
      

  8.   

    delete from log  where otime='日期'
    delete from log  where otime='日期'
      

  9.   

    设个断点把SQL语句SHOW出来,看一下是不是日期格式错了,可能是系统日期格式不对.
    如"2008-11-12 中午 11:30"