SQL SERVER 数据库,其中DAY1为DATETIME类型,长度为8,编译时的错误为:
[Error] Unit1.pas(49): Incompatible types: 'String' and 'TDateTime'
附:
Adoquery1.SQL.Clear 
Adoquery1.SQL.Add('select * from data where  cast(day1 as datetime)     < '''+DateTimePicker1.datetime+''' ');
Adoquery1.open;
另一种办法:
Adoquery1.SQL.Clear 
Adoquery1.SQL.Add('select * from data where  day1 〈 '''+DateTimePicker1.datetime+''' ');
Adoquery1.open;
错误提示依旧,问题出在哪儿?  

解决方案 »

  1.   

    try:
    Adoquery1.SQL.Clear 
    Adoquery1.SQL.Add('select * from data where  convert(char(10),day1 ,120)〈 '''+DateTimePicker1.datetime+''' ');
    Adoquery1.open;
      

  2.   

    你这样试试:
    with AdoQuery1 do
    begin
      Close;
      SQL.Clear;
      SQL.Add('select * from data where day1<:xDate);
      Parameters[0].Value:=DateTimePicker1.datetime;
      Open;
    end;
      

  3.   

    TO hnhb(不死鸟):
    执行结果如下:
    [Error] Unit1.pas(52): Missing operator or semicolonTo txlicenhe(马可) :
    Error] Unit1.pas(49): Incompatible types: 'String' and 'TDateTime'
      

  4.   

    hnhb(不死鸟)的代码中第五行
    SQL.Add('select * from data where day1<:xDate);
    应该为
    SQL.Add('select * from data where day1<:xDate');
    漏了个单引号
      

  5.   

    TDateTime是双精度浮点数用DateTimeToStr类型转换
      

  6.   

    TO  gdwyh(神州大侠) :
       我也加了单引号的。
       我连这么简单的问题都搞不掂!我真觉得DELPHI的格式好复杂,具体算法我倒不怕,就这些小问题搞得我总不能很快上手!
     TO ehom(?!) :
          DAY1为DATETIME,不是字符型啊?
      

  7.   

    我测试过hnhb(不死鸟)的代码了,没问题呀,是不是你的ADOQUERY1的设置有问题?如果方便的话请MAIL至[email protected]给我看看.
      

  8.   

    "DAY1为DATETIME,不是字符型啊?"这有关系吗?Incompatible types: 'String' and 'TDateTime'可以先找本字典翻译下,这句话什么意思?数据字段类型和解决这里的问题没有任何关系?SQL总是是一段字符串吧?''+123.321能正确?
      

  9.   

    TO ehom(?!) :
       '''+DateTimeToStr(DateTimePicker1.datetime)+''' ');
     
      编译没错误,但执行没结果,条件已符合,应该有结果得。
      

  10.   

    '''+DateTimeToStr(DateTimePicker1.datetime)+'''');
      

  11.   

    Adoquery1.SQL.Clear 
    Adoquery1.SQL.Add('select * from data where day1 〈 '''+datetimetostr(DateTimePicker1.datetime)+'''');
    Adoquery1.open;
      

  12.   

    试一下:Adoquery1.SQL.Clear 
    Adoquery1.SQL.Add('select * from data where  day1 < '''+strToDateTime(DateTimeToStr(DateTimePicker1.datetime))+''' ');
    Adoquery1.open;//***************************************SQL SERVER 数据库,其中DAY1为DATETIME类型,长度为8,编译时的错误为:
    [Error] Unit1.pas(49): Incompatible types: 'String' and 'TDateTime'
    附:
    Adoquery1.SQL.Clear 
    Adoquery1.SQL.Add('select * from data where  cast(day1 as datetime)     < '''+DateTimePicker1.datetime+''' ');
    Adoquery1.open;
    另一种办法:
    Adoquery1.SQL.Clear 
    Adoquery1.SQL.Add('select * from data where  day1 〈 '''+DateTimePicker1.datetime+''' ');
    Adoquery1.open;
    错误提示依旧,问题出在哪儿?  
      

  13.   

    不要把Delphi中的数据类型和SQL中的混为一谈,其实这问题真的很简单要加DateTimeToStr是为什么,因为浮点数不能和字浮串进行运算,这是常识,一定要牢记,Delphi是强类型语言中.不管怎么改这点是基础.而''又是什么意思?这表示字符串中的'.按上面代码的意思,在SQL语句中不就是一日期和一个日期字符串比较?这能不错?
      

  14.   

    ehom(?!) 兄不要动肝火啊^o^
      

  15.   

    with AdoQuery1 do
    begin
      Close;
      SQL.Clear;
      SQL.Add('select * from data where day1<:xDate);
      Parameters[0].aastring:=datatimetostr(DateTimePicker1.datetime);
      Open;
    end;
      

  16.   

    49: Parameters[0].asstring:=datetimetostr(DateTimePicker1.datetime);[Error] Unit1.pas(49): Undeclared identifier: 'asstring'还不行啊,请继续帮忙
      

  17.   

    Adoquery1.SQL.Clear 
    Adoquery1.SQL.Add('select * from data where cast(day1 as datetime) < '''+DateTimeToStr(DateTimePicker1.datetime)+'''');
    Adoquery1.open;
    这样应该是得。或:
    Adoquery1.SQL.Clear 
    Adoquery1.SQL.Add('select * from data where cast(day1 as datetime) < '''+DateToStr(DateTimePicker1.datetime)+'''');
    Adoquery1.open;试试。
      

  18.   

    这样写肯定行:
    如果DateTimePicker1包含年,月,日,时,分,秒,这样写Adoquery1.SQL.Clear 
    Adoquery1.SQL.Text:='select * form data where day1<'''+DateTimeToStr(DateTimePicker1.datetime)+'''';
    Adoquery1.open;如果只包含年,月,日,就这样写:
    Adoquery1.SQL.Clear 
    Adoquery1.SQL.Text:='select * form data where day1<'''+DateToStr(DateTimePicker1.datetime)+'''';
    Adoquery1.open;结帖吧
      

  19.   

    非常感谢大家的帮忙!我都不好意思了,这么简单的问题,哎!
    可是还是没有结果,编译没错误,按理应该有结果,数据库里面有符合条件的记录,问题出在哪呢?(pengdali(大力 V3.0) 、 ball2424(ball_2424),你们的意见也试了,也是这样)