var
  ASQL: string;
begin 
  ...
  ASQL := 'SELECT * FROM HUZ WHERE STATUS=‘有效’AND TSTATUS=' + Edit1.Text;
  Query1.SQL.Text := ASQL;
  Query1.Open;
  ...
end;

解决方案 »

  1.   

    with query1 do
    begin
      close;
      sql.clear;
      sql.add('select * FROM HUZ WHERE STATUS='''有效'''AND TSTATUS=:EDIT1');
      params[0].asstring:=edit1.text;
      open
    end;
      

  2.   

    可以的。在这里你不妨把SQL语句看成一个普通的字符串,这样所要做的就是字符串的连接而已。
    如:设TSTATUS伟字符串型
      Query1.SQL.Add('SELECT * FROM HUZ WHERE STATUS=''有效''AND TSTATUS '+''''+Edit1.Text +'''';不过我觉得还是用参数比较好。象这样:
    Query1.SQL.Add('SELECT * FROM HUZ WHERE STATUS=''有效''AND TSTATUS=:TSTATUS');
    Qusry1.ParamByName('TSTATUS'):=Edit1.Text;ps:我不是高手
      

  3.   

    Sorry 
    ...
    Query1.ParamByName('TSTATUS').asstring := Edit1.Text;
      

  4.   

    小小说的没错一般我们对TQUERY的用法是这样的:(仅仅是个人意见)
    procedure xxx.xxx();
    var sql_str:string;
    begin
      sql_std:='SELECT * FROM HUZ WHERE STATUS='有效'AND TSTATUS=:TSTATUS';
      Query1.close;
      Query1.sql.clear;
      Query1.sql.add(sql_std);
      Query1.ParamByName('TSTATUS').asstring:=edit1.text;
      try
         Query1.open;//或者是  Query1.execsql;
      except
         //错误处理
      end;
    end;
      

  5.   

      感谢各位的帮助!由于小弟是DELPHI和SQL的初学者,对于TQUERY的参数应该怎么设定不太明白.能不能请哪位大哥给点详细的指导和例子.小弟先谢了!
      对表文件HUZ,以字段PASS_NUM和TSTATUS为关键字段,以这两个字段的内容为条件,条件从两个TEDIT控件中输入.是不是可以像下面这样编写我的SQL语句呢?Query1.SQL.Add('SELECT * FROM HUZ WHERE PASS_NUM=:PASSNUM AND TSTATUS=:TSTATUS');
    Qusry1.ParamByName('TSTATUS'):=Edit1.Text;
    Qusry1.ParamByName('PASS_NUM'):=Edit2.Text;或者是:PROCEDURE XXXX
    var sql_str:string;
    begin
      sql_std:='SELECT * FROM HUZ WHERE PASS_NUM=:PASS_NUM AND TSTATUS=:TSTATUS';
      Query1.close;
      Query1.sql.clear;
      Query1.sql.add(sql_std);
      Query1.ParamByName('TSTATUS').asstring:=edit1.text;
      Query1.ParamByName('PASS_NUM').asstring:=edit2.text;
      Query1.open;//或者是  Query1.execsql;
    end;
      

  6.   

    reight.!!!
    另外:
    sql_std:='SELECT * FROM HUZ WHERE PASS_NUM=:PASS_NUM AND TSTATUS=:TSTATUS';
     中 PASS_NUM=:PASS_NUM --你没必要非要把这两边写成一样,右边的名字你可以随便取啊,如:PASS_NUM=:PASS  也行的。数据库的写代码都是很简单的---最主要就是写多了很烦。向上面几句就在数据库程序中经常甬道。  tquery控件用起来也最灵活。----当然,代价就是多写几句咯!   今天没事做--来放点水~~~~~~~~~~~~~~~`
      

  7.   

    各位仁兄,还是不行呀!!!
    如果在设计时,不对TQUERY的SQL属性中添加带参数的SELECT语句,运行时提示"parameters not found!".如果如果在设计时,对TQUERY的SQL属性中添加带参数的SELECT语句,运行时却提示"can not found object!".这是为什么???!!!我使用的是DELPHI 5 + ORACLE 8I.求救呀!各位.下面的代码是专门用于查询记录的,登录界面运行是完全正常的,ORACLE 8I的数据库也是正常连接的.unit oraquery;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      Db, DBTables, Grids, DBGrids, StdCtrls;type
      TForm2 = class(TForm)
        DBGrid1: TDBGrid;
        DataSource1: TDataSource;
        Query1: TQuery;
        Button1: TButton;
        Button2: TButton;
        Edit1: TEdit;
        Label1: TLabel;
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form2: TForm2;implementation{$R *.DFM}procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
    application.terminate;
    end;procedure TForm2.Button1Click(Sender: TObject);
    begin
    if edit1.text<>'' then
      begin
        query1.close;
        query1.sql.clear;
        query1.sql.add('select * from huz where status=''有效'' and tstatus=:tstatus');
    //    query1.params[0].asstring:=edit1.text;
        query1.parambyname('tstatus').asstring:=edit1.text;
        query1.open;
      end
    else
      showmessage('Invailid value inputted!');
    end;procedure TForm2.Button2Click(Sender: TObject);
    begin
    close;
    application.terminate;
    end;end.
      

  8.   

    : peterluolaw(木瓜) :
    你在open之前,把query1.sql.text打出来看看嘛。
    可能试你那个参数的属性没配好。
    query1.params属性有个小编辑框,可以具体设置某个具体的param,
    你设一下,看看!
      

  9.   

    是PARAMS的属性不对吗?那么PARAMS的属性应该如何设置?运行我的代码时系统提示的是EDBENGINE 有问题,不是参数找不到就是找不到对象.是不是我的DBE有问题?
      

  10.   

    EDBENGINE 这应该是你的bde有问题!
      

  11.   

    请问MISSILE,我使用的 DELPHI 5 是 5.6.2 的.与FOXPRO使用时,SQL语句的动态修改一点问题都没有!只要与 ORACLE 8I 使用,SQL 就绝对有问题?!是不是需要添加 DELPHI 5 或者是 ORACLE 8I 的什么补丁呢?
      

  12.   

    : peterluolaw(木瓜) :
    可能是你的oracle8I于bde之间的联系配置,没配好,
    但这个,不好意思,我不会。没试过
      

  13.   

    那你就用ORACLE8配ODBC把--一样用TQUERY
      

  14.   

    我靠!!!!!你是真的不会还是假的不会!!!!
    SQL和DELPHI还不熟悉,就想用DELPHI+ORACLE 8I????
    还是学习些简单的东西吧,编程不是简单的东西呀!!!!!
      

  15.   

    To: Hicaci,
    用ODBC一定能解决问题吗?
    不好意思,ODBC又该怎么使用呢?