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;
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;
或者将你sql语句放到后台执行,做一检查。
qry.ExecSQL;
你为什么要这么写,一个open 不就行了吗?
要返回结果集时就用open
ExecSQL是不返回结果集的
你最好先把结果放在一个变量里
qry.SQL.Clear;
qry.SQL.Add('select mainno from gpre where year(dateadd(month,premonth,paydate))>'+trimleft(cb1.Text));
qry.Open;
你再试一下是不是参数的问题
问题解决了,是year(dateadd(month,premonth,paydate))的问题
最后用一个存储过程解决了问题在后台这个语句可以顺利的执行
但是,用query却不能将这个语句传递过去