各位大虾:
   您们好
   我刚学习delphi一个月
   然后做了一个登录和修改密码,是用数据库SQL Server做的
   结果修改密码不成功
   代码如下:
   登录的是
   Talogo = class(TForm)
    ComboBox1: TComboBox;
    Edit1: TEdit;
    Button1: TButton;
    Button2: TButton;
    ADOConnection1: TADOConnection;
    ADOQuery1: TADOQuery;
...
with adoquery1 do
    begin //1
      close;
      sql.clear;
      sql.add('select * from admins where n=:n and p=:p ');
      parameters.ParamByName('n').Value:=trim(combobox1.Text);
      parameters.ParamByName('p').Value:=trim(edit1.Text);
       OPEN;
    if combobox1.Text ='' then
        begin //2
          application.MessageBox('请输入用户名','提示信息',64);
          combobox1.SetFocus;
          exit;
        end;  //2
      if edit1.Text ='' then
        begin //3
          application.MessageBox('请输入密码','提示信息',64);
          edit1.SetFocus;
          exit;
        end;  //3      end; //1
      if adoquery1.RecordCount<>0 then
        begin  //4
          username:=combobox1.Text;
          password:=edit1.Text;
          amain.show;//登录正确后显示的窗体
          self.Hide;
          if adoquery1.FieldByName('q').AsString='管理' then
              id :='管理'
          else id :='操作';
          username :=adoquery1.fieldbyname('n').asstring;
          password :=adoquery1.fieldbyname('p').asstring;
         
          end  //4
      else
        application.MessageBox('输入的用户名或密码错误','提示信息',64);
  except
    application.MessageBox('登陆失败','提示信息',64);
   修改密码窗体组件简单 
   Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Button1: TButton;
    Button2: TButton;
    ADOQuery1: TADOQuery;
    ADOConnection1: TADOConnection;
   ..
   with adoquery1 do
 begin
  close;
  sql.Clear;
  sql.Add('select * from admins ');
  parameters.parambyname('p').value:=UserOldPass  ;
  parameters.parambyname('n').value:=username  ;
  open;
 if(Edit1.Text <> '') and (Edit2.Text <> '') and (Edit3.Text <> '') then
    begin//0
      if(UserOldPass <> Edit1.Text)  then
           begin //3
           ShowMessage('原密码错误');
           Edit1.text:='';
           Edit1.SetFocus;
           end; //3
         if(Edit2.Text <> Edit3.Text) then
           begin //4
           ShowMessage('两次输入密码不同');
           edit2.text:='';
           edit3.text:='';
           Edit2.SetFocus;
           end;  //4
         if(UserOldPass = Edit1.Text) and (Edit2.Text = Edit3.Text) then
           begin //5
            ADOQuery1.Close;
            ADOQuery1.SQL.Clear;
            ADOQuery1.SQL.Add('update admins set p ="'+Edit2.Text+'" where  n ="'+username+'" ');
            ADOQuery1.ExecSQL;
            ShowMessage('修改密码成功');
            form11.Close;
            end;
         end //1
      else                             
      ShowMessage('您没有填写密码');
  总是不成功
 说什么定义空的
 不明白说的是什么
也 看不懂什么意思 
 求各位帮我一下

解决方案 »

  1.   

    update admins set p ="'+Edit2.Text+'" where  n ="'+username+'"这写的不对吧
    update admins set p ='''+Edit2.Text+''' where  n ='''+username+''''
    改一下试试
      

  2.   

    n是管理员表中的姓名列
    p是表中的密码列提示是p无效
    或者'edit1.text'无效
      

  3.   

    怎么能用密码作为修改条件。万一有多个密码一样的呢??
    你p姓名列和n密码列是不通义张表的。还是在n密码那张表里面只有一个员工TD而没有姓名??