代码
y:=strtoint(Edit1.Text);
dm.ADOQuery1.SQL.Add('select * from ttt1 where month=:y');
dm.ADOQuery1.Open;
返回是空的。另一段代码不能编译,说是
dm.ADOQuery1.SQL.Add('select * from ttt1 where month="'+StrtoInt(Edit1.Text)+'"');
dm.ADOQuery1.Open;
[Error] Unit1.pas(180): Incompatible types: 'String' and 'Integer'

解决方案 »

  1.   

    dm.ADOQuery1.SQL.Add('select * from ttt1 where month=:month');
    dm.ADOQuery1.Parameters.ParamByName('month').Value := y;
    dm.ADOQuery1.Open;或
    dm.ADOQuery1.SQL.Add('select * from ttt1 where month='+Edit1.Text);
      

  2.   

    dm.adoquery1.sql.clear;
    dm.adoquery1.sql.add('select * from ttt1 where month='+''''+trim(edit1.text)+'''');
    或者
    dm.adoquery1.sql.clear;
    dm.adoquery1.sql.add('select * from ttt1 where month='+''''+strtoint(trim(edit1.text))+'''');
    dm.adoquery1.open;
      

  3.   

    你的month是不是一个单独的字段啊
      

  4.   

    应该这样赋值dm.ADOQuery1.Parameters.ParamByName('month').Value := y;
      

  5.   

    dm.adoquery1.sql.clear;
    dm.adoquery1.sql.add('select * from ttt1 where month='+''''+trim(edit1.text)+'''');
    或者
    dm.adoquery1.sql.clear;
    dm.adoquery1.sql.add('select * from ttt1 where month='+''''+strtoint(trim(edit1.text))+'''');
    dm.adoquery1.open;
    请问以上代码中,where month='+''''+trim(edit1.text)+'''');,为什么在month=后要加上'+''''+trim()+''''呢,直接用month=trim()是否可以,我刚学DELPHI对此符号不熟悉,请大侠解释一下,谢谢!
      

  6.   

    ''''表示一个右引号,你可以在Open之前显示一下SQL语句,看看其效果。
    如果对字符型字段作限定条件,则需要在条件的前面和后面各加上一个引号。
    你这里的month是整型,则不需要加这个引号,
    虽然SQL也接受这种写法,但从语法上讲,这是错误的,
    编程需要讲究一个好的习惯。