delphi7+access2000:
 str:='SELECT * FROM Sec_velocity where SecID=6 and GETM= #2004-10-30#';
  adoquery1.Close;
  adoquery1.SQL.Text:= SQL;
  adoquery1.Open;
可以通过。但是
str:='SELECT * FROM Sec_velocity where SecID=6 and GETM= #2004-10-30 1:30:00#';
就不能运行。报错“对象被不正确的定义。提供了不一致或不完整的信息”
请各位大虾指教,不胜感激。

解决方案 »

  1.   

    我觉得date类型的最好format成yymmdd的格式错误会少一些
      

  2.   

    str:='SELECT * FROM Sec_velocity where SecID=6 and GETM= #2004-10-30 1::30::00#';注意:时间是两个冒号。
      

  3.   

    因为你的SQL语句中包含时间字符串,时间字符串中的时分秒使用":"隔开的,而delphi中在SQL语句解析时把“:”及其后面的字符当成了变量,所以你的语句执行有问题。
      

  4.   


    str:='SELECT * FROM Sec_velocity where SecID=6 and GETM='+ Quotedst(2004-10-30 1:30:00);
      

  5.   

    str:='SELECT * FROM Sec_velocity where SecID=6 and GETM=cdate('+ Quotedst(2004-10-30 1:30:00)+')';
      

  6.   

    呵呵,师兄也遇到这样的问题目呀,我也遇到过呀,不过我还是解决了!ADOQuery1.SQL.Text := 'Select From Sec_velocity Where SecID=6 and GETM=:GETM';
    ADOQuery1.Parameters.ParamByName('GETM').Value := StrToDateTime('2004-10-30 1:30:00');
    ADOQuery1.Open;强烈建意:使用传参的形式执行SQL操作,比较反对将值直接赋加到字符串里,这样既显得语句清晰,还容易修改。是不是有过被那种在字符串加了很变量值弄得晕头转向的事呀?!