在设计mdi登录窗体时:点“确定”按钮提示错误:ADOQuery1: Parameter 'name' not found.
大家帮帮我。
下面是FormLogin的代码:
unit Unit7;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DB, ADODB;type
  TFormLogin = class(TForm)
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    EditName: TEdit;
    EditPassword: TEdit;
    Button1: TButton;
    Button2: TButton;
    ADOQuery1: TADOQuery;
    ADOConnection1: TADOConnection;
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  FormLogin: TFormLogin;implementationuses Main;
{$R *.dfm}
procedure TFormLogin.Button1Click(Sender: TObject);
  Var
     AQuery:TADOQuery;
     sResult,sPw: string;
begin
        adoquery1.Close;
        adoquery1.SQL.Clear;
        adoquery1.SQL.Add('select * from pubyhmcb where useno=:name');
        adoquery1.Parameters.ParamByName('name').Value:=editname.Text;
        adoquery1.Open;
     if adoquery1.RecordCount<>0 then
        begin
          sPw:=trim(adoquery1.FieldByName('password').AsString);
          AQuery := TADOQuery.Create(nil);
          AQuery.Connection :=adoquery1.connection;
          try
             AQuery.Close;
             AQuery.SQL.Text := 'exec pr_cims_Encry'''+trim(editname.Text)+''','''+sPw+''',1';
             AQuery.Open;
             sResult:= AQuery.Fieldbyname('pw').AsString;
           finally
             AQuery.Close;
             AQuery.Free;
        end;
        if sResult=trim(editpassword.Text) then
             begin showmessage('成功登录');
                   formlogin.Hide ;
                   formmain.Show;
             end else
                   showmessage('登录失败');
                   exit;
             end
     else begin
          messagedlg('用户不存在!',mtinformation,[mbOK],0)  ;
     exit;
     end;
     end;procedure TFormLogin.Button2Click(Sender: TObject);
begin
close;    //退出
end;procedure TFormLogin.FormKeyPress(Sender: TObject; var Key: Char);
begin
 if (key=#13) and (activecontrol is Tedit) then
   begin
     key:=#0;
     perform(wm_nextdlgctl,0,0);
   end;
end;
end.

解决方案 »

  1.   

      adoquery1.SQL.Clear;
      adoquery1.SQL.Add('select * from pubyhmcb where useno= '''+editname.Text+'''');
      adoquery1.Open;这样不就行了??
      

  2.   

    没有name这个参数,你看看是在哪句处的错,最好不用name,换个名
      

  3.   

    然后看看你的adoquery的ParamCheck 是什么
      

  4.   

    procedure TFormLogin.Button1Click(Sender: TObject);
      Var
      AQuery:TADOQuery;
      sResult,sPw: string;
    begin
      adoquery1.Close;
      adoquery1.SQL.Clear;
      adoquery1.SQL.Add('select * from pubyhmcb where useno=:name');//看看是不是这个?