procedure TForm10.Button1Click(Sender: TObject);
 var e1,e2,e3,e4:string;
begin
  e1:=edit1.Text;
  e2:=edit2.Text;
  e3:=edit3.Text;
  e4:=edit4.Text;
  if e3=e4 then
   begin
     adoquery1.Close;
     adoquery1.SQL.Clear;
     adoquery1.SQL.Add('select * from login.db where user='+''''+e1+''''+'and password='+''''+e2+'''');
     adoquery1.Open;
     adoquery1.Edit;
     adoquery1.FieldByName('password').AsString:='';
     adoquery1.FieldByName('password').AsString:=e3;
     adoquery1.Post;
     Application.MessageBox('修改成功!','提示',mb_ok);
     close;
   end
  else
   begin
   Application.MessageBox('新密码两次输入不相同,请重新输入','提示',mb_ok);
          edit3.SetFocus;
          edit4.SetFocus;
   end
end;这是整个代码,在四个edit中输好内容点击button1后就会出现以下提示:
Project Project.exe raised exception class EOleException with message'[Microsoft][ODBC Paradox Driver]操作必须实用一个可更新的查询。‘
而且在以前是可以实现的,但不知道出什么问题了,也没有修改什么,现在就会出现这样的提示。还请高手们帮好好想想办法,太感谢了!!!

解决方案 »

  1.   

    用的Paradox数据库?
    看一下程序运行时,是不是用DatabaseDesktop或其他程序打开了login.db,数据库被独占了。
    注销一下系统。不建议继续使用Paradox了。换数据库吧。
      

  2.   

    赞成二楼。另外,“看一下程序运行时,是不是用DatabaseDesktop或其他程序打开了login.db,数据库被独占了。”除检查这个之外,你还可以再打开任务管理器,检查一下进程中是不是程序的其他实例没有完全退出。
      

  3.   


    我的其他功能都是用ADO做的,要换BDE太麻烦了。应该没有其他程序打开login吧,就跟刚编好这个代码后运行一样进行的,但过了几天重新来用这个功能时就出现这样的问题了,也没手动修改过什么,把界面和数据库表拷到其他电脑上连接数据库后也是这个情况。
    但开始运用login数据库表登陆是没有问题的,可以正常登陆。问题到底出在哪呢?
      

  4.   

    看看这样行不
      with ADOQurery1 do 
      begin 
        Close; 
        Sql.Text := 'update login.db set password=:b where user=:a';
        Paramters.ParamterByName('a').Value := e1;
        Paramters.ParamterByName('b').Value := e2;
        ExecSql;
      end;
      Application.MessageBox('修改成功!','提示',mb_ok); 
      Close;  
      

  5.   

    赞成用6楼的,直接用update语句去更新
      

  6.   

    [Microsoft][ODBC Paradox Driver]操作必须实用一个可更新的查询。
    从错误信息可以看出,当前表被锁定了。看看你是不是其他地方也用到这个库了
    另外,把这段程序放到一个单独的工程中测试下,想想问题到底出在哪
      

  7.   


    现在密码可以修改了,虽然不是你直接帮弄好的,但给了我最大的启示。
    不得不承认你挺聪明的,把一段程序放到一个单独的工程中测试,确实是个好方法,
    加上你前段所讲的,我就确定了问题是在数据库表格里,重建login数据库表就好了。是不是delphi自带的数据库问题比较大?可能也有其他好的解决方法,我想我这重建相当于电脑重启了吧,比较低级的
    办法。