qry.Close;
                       qry.SQL.Clear;
                        qry.SQL.Add('select mainno from gpre where year(dateadd(month,premonth,paydate))> :years');//运行时此处报错
                          qry.ParamByName('years').AsInteger:=strtoint(trimleft(cb1.Text));
                            qry.Open;
                            qry.ExecSQL;

解决方案 »

  1.   

    错误代码多少?
    或者将你sql语句放到后台执行,做一检查。
      

  2.   

    qry.Open;
    qry.ExecSQL;
    你为什么要这么写,一个open 不就行了吗?
    要返回结果集时就用open
    ExecSQL是不返回结果集的
      

  3.   

    qry.SQL.Add('select mainno from gpre where year(dateadd(month,premonth,paydate))> :years');//运行时此处报错如果是本地数据库这样写好象有问题,不支持year(dateadd(month,premonth,paydate))
    你最好先把结果放在一个变量里
      

  4.   

    是year(dateadd(month,premonth,paydate))的问题
      

  5.   

    qry.Close;
      qry.SQL.Clear;
      qry.SQL.Add('select mainno from gpre where year(dateadd(month,premonth,paydate))>'+trimleft(cb1.Text));
      qry.Open;
      你再试一下是不是参数的问题 
      

  6.   

    谢谢各位的帮助
    问题解决了,是year(dateadd(month,premonth,paydate))的问题
    最后用一个存储过程解决了问题在后台这个语句可以顺利的执行
    但是,用query却不能将这个语句传递过去