我的查询语句是:SELECT * FROM sms_user WHERE user_no = :no AND  user_code = :code
运行代码为:ADOQueryUser.Parameters.ParamByName('no').Value := Trim(EditBh.Text);
         ADOQueryUser.Parameters.ParamByName('code').Value := Trim(Editkl.Text);
         ADOQueryUser.Open;
下面判断是否有记录。
运行时,在Editkl中输入不正确值时可以执行下面的判断,
          错误在不输入时报“Parameter对象被不正确地定义,提供了不一致或不完整的信息”
         而不执行下面的判断部分。字段都是varchar
请问可能错在哪,执行语句有问题,还是什么地方概念有问题

解决方案 »

  1.   

    with ADOQueryUser do
    begin
     close;
     sql.clear;
     sql.text:='SELECT * FROM sms_user WHERE user_no = :no  AND  user_code = :code';
     Parameters.ParamByName('no').Value := Trim(EditBh.Text);
     Parameters.ParamByName('code').Value := Trim(Editkl.Text);
     prepared;
     Open;
     if isempty then
       begin
         close;
         exit;   end;
    end;
      

  2.   

    错误在不输入时报“Parameter对象被不正确地定义
    ----------
    文本内容为空,应该用null代替吧 
      

  3.   

    这样确实可以,我的查询语句是写死在ADOquery里的,能告诉我为什么出这样的错吗
      

  4.   

    with ADOQueryUser do
    begin
     close;
     sql.clear;
     sql.text:='SELECT * FROM sms_user WHERE user_no = :no  AND  user_code = :code';
     Parameters.ParamByName('no').Value := '"'+Trim(EditBh.Text)+'"';
     Parameters.ParamByName('code').Value := '"'+Trim(Editkl.Text)+'"';
     prepared;
     Open;
     if isempty then
       begin
         close;
         exit;   end;
    end;加俩引号试一下
      

  5.   

    数据库中原来是null就不行,后来改为空也还是出这个问题,这里动态加入语句和写死在里面有什么区别吗