为了方便修改查询语句我把一些查询的语句比如  SELECT * FROM ZD_RY WHERE BM='''+EDIT_RY.Text+''' 写到了数据库的表里。EDIT_RY.Text这个控件是已经有的
DELPHI里面执行是这样写的
SQL_TXT.Close;
SQL_TXT.SQL.Clear;
SQL_TXT.SQL.TEXT:=ADO_TJB.FieldByName('TEXTSQL').AsString;
SQL_TXT.Open;
-----------------------------------------------------------------
但是在数据库中跟踪发现 DELPHI 把 '''+EDIT_RY.Text+''' 根本就没看做变量跟踪结果是
SELECT * FROM ZD_RY WHERE BM='''+EDIT_RY.Text+''' 这个肯定不是我想要的结果
---------------------------------------------------------------
怎样才能告诉DELPHI执行语句其实是
SQL_TXT.Close;
SQL_TXT.SQL.Clear;
SQL_TXT.SQL.TEXT:='SELECT * FROM ZD_RY WHERE BM='''+EDIT_RY.Text+''' ';
SQL_TXT.Open;

解决方案 »

  1.   

    1.
    数据库里保存:SELECT * FROM ZD_RY WHERE BM=%s
     SQL_TXT.SQL.TEXT:=Format(ADO_TJB.FieldByName('TEXTSQL').AsString,[EDIT_RY.Text]);
    2.
    数据库里保存:SELECT * FROM ZD_RY WHERE BM=:bm
     SQL_TXT.SQL.TEXT:=ADO_TJB.FieldByName('TEXTSQL').AsString;
     SQL_TXT.Parameters.ParamByName('bm').Value := EDIT_RY.Text;
      

  2.   

    写数据库里时用参数去做,
    SELECT * FROM ZD_RY WHERE BM=:#bm
    然后程序中对这个#bm赋值。。不过我个人觉得,这样做,你还不如把sql语句写道配置文件中,从文件读取。并且最好不要把变量直接写成EDIT_RY.Text(无论最终是否可行),因为这样的程序将非常难于维护。不过这样的想法是好的。