我想做一个象QQ密码修改的界面试写下面代码
if (Edit2.text=query1.FieldByName('密码').asstring) and (Edit3.text=edit4.text) then
 begin
 if (edit3.Text='') or (edit4.Text='') then
 Application.MessageBox('请输入新密码!','重要提示!', 0)
 else
 begin
 query1.edit;
 query1.FieldByName('用户名').asstring:=Edit1.Text;
 query1.FieldByName('密码').asstring:=Edit2.Text;
 query1.post;
 query1.Refresh;
 Application.MessageBox('★密码已修改★※','重要提示!', 0);
 query1.Active:=false;
//close;
 end;
 end
else
Application.MessageBox('用户名或密码错误!','错误信息提示', 0);
但是有错
请教高手帮忙
(query1.FindKey([Edit1.text]))这一句写在哪啊?

解决方案 »

  1.   

    query1.fieldbyname('password').asstring:=edit1.text;
    ...
      

  2.   

    'select * from passtable where pass=:p';
    ...
    根据用户名称查询密码,无记录就说明无这个用户,或者密码错误等等
      

  3.   

    // 判断旧密码..
    with TempQuery do
    begin
    close;
    sql.clear;
    sql.add('select 1 from passtable where user=:user,pass=:pwd');
    fieldbyname('user').asstring:=trim(edit1.text);
    fieldbyname('pwd').asstring:=trim(edit2.text);
    open;
    if isEmpty then
     begin
      showmessage('密码错误');
      edit2.clear;
      edit2.setfoucs;
    end
    else
     if (edit3.Text='') or (edit4.Text='') then
      Application.MessageBox('请输入新密码!','重要提示!', 0);
       if Trim(edit3.text)<>Trim(edit4.text) then
       Application.MessageBox('新密码不同!','重要提示!', 0);
    end;
     with Query1 do
    begin
      close;
      sql.clear;
    sql.add(Update table set 用户名=:username,密码=:PWD);
    FieldByName('username').asstring:=Trim(Edit1.Text);
    FieldByName('pwd').asstring:=Trim(Edit3.Text);
    Exec;
    end;
      

  4.   

    如果只是改密码的话,用户名也可以用DBLookUpCombobox连接数据库字段自动获得,