今天用参数化SQL时运行死活过不去,报告异常说edatabaseerror parameter 'table' not found,就是说参数table在SQL中找不到了.但死活查代码都看不出任何问题.
历一小时,最后才查出原因,动态加入tadoquery.sql的参数化SQL语句在调用参数前先解析下SQL,如下:
再执行就OK!代码例下:
历一小时,最后才查出原因,动态加入tadoquery.sql的参数化SQL语句在调用参数前先解析下SQL,如下:
- Parameters.ParseSQL(SQL.Text, True);
- with self.qryMain do begin
- try
- SQL.Clear();
- Parameters.Clear();
- Close();
- Prepared := False;
- SQL.Text := 'SELECT [CurrentNO], [Mask], [CurrentDate] FROM [CurrentID]' +
- ' WHERE [TabName]= :TabName AND [KeyField]=:KeyField;';
- Parameters.ParseSQL(SQL.Text, True); //一定要加
- Parameters.ParamByName('TabName').Value := Table;
- Parameters.ParamByName('KeyField').Value := KeyField;
- Prepared := True;
- Open();
参考网址:
http://www.delphi32.com/info_facts/faq/faq_932.asp
http://delphi.ktop.com.tw/board.php?fid=66&tid=27744
希望和我出同样错误的同道能看到本文!一小时的代价啊.....