详细情况是这样的:
  比如说我对应的有5个用户、密码:0、0;1、1;2、2;3、3;4、4;5、5;
  然后我以0、0进去后修改密码可以成功比如改为0、6
  但是我如果以1、1进去后也修改密码但是修改的不是1、1而是上次的,我想请问该怎么修改:代码如下:
   if Table1.Lookup('password',edit1.Text,'password') = Table1.FieldByName('password').AsString then
   begin
      Table1.Edit;
      Table1.FieldByName('password').Value := Edit2.Text;
      Table1.Post;
   end;
2、还有一个问题就是:
  我想往主窗体中添加一条记录:
 我想添加第一条的时候让它的序号自动生成为1,但是老是出错
请帮忙看看!
代码:
  procedure TFda.BitBtn1Click(Sender: TObject);
var
  i:integer;
begin
if Edit1.Text ='' then
    begin
      Application.MessageBox('请输入姓名!','提示',0);
      Edit1.SetFocus ;
      Exit;
end;
begin
   table1.First;
   i:=table1.fieldbyName('BH').AsInteger;
try
   table1.Edit;
  table1.Append;
  table1.fieldbyName('BH').AsInteger:=i+1;//这里出错
  table1.FieldByName('name').AsString:=Edit1.text;
  table1.FieldByName('mobiletel').AsString:=Edit4.text;
  table1.FieldByName('elsetel').AsString:=Edit5.text;
  table1.FieldByName('QQ').AsString:=Edit6.text;
  table1.FieldByName('MSN').AsString:=Edit7.text;
  table1.FieldByName('E_Mail').AsString:=Edit8.text;
  table1.FieldByName('Individualnet').AsString:=Edit9.text;
  table1.FieldByName('CorporationName').AsString:=Edit10.text;
  table1.FieldByName('department').AsString:=Edit11.text;
  table1.FieldByName('post').AsString:=Edit12.text;
  table1.FieldByName('officetel').AsString:=Edit13.text;
  table1.FieldByName('fax').AsString:=Edit14.text;
  table1.FieldByName('Officeddress').AsString:=Edit15.text;
  table1.FieldByName('CorporationE_mail').AsString:=Edit16.text;
  table1.FieldByName('CorporationNet').AsString:=Edit17.text;
  table1.FieldByName('Homeaddress').AsString:=Edit18.text;
  table1.FieldByName('Hometel').AsString:=Edit19.text;
  table1.FieldByName('Postalcode').AsString:=Edit20.text;
  Application.MessageBox('存盘成功!','提示',0);
  Edit1.text:='';
  edit4.text:='';
  edit5.text:='';
  edit6.text:='';
  edit7.text:='';
  edit8.text:='';
  Edit9.text:='';
  Edit10.text:='';
  Edit11.text:='';
  Edit12.text:='';
  edit13.text:='';
  Edit14.text:='';
  Edit15.text:='';
  Edit16.text:='';
  Edit17.text:='';
  Edit18.text:='';
  Edit19.text:='';
  Edit20.text:='';
  finally
  Fmain.DBGrid1.refresh;
  table1.Post;
  table1.refresh;
  Fmain.Table1.Refresh;
end;
end;

解决方案 »

  1.   

    1、首先你要找到要修改的用户那一条记录呀,你的table里的数据是什么?
    2、table1.First;
       i:=table1.fieldbyName('BH').AsInteger;
    --〉
      table.last;
      i:=table1.fieldbyName('BH').AsInteger;
    吧。说句实话,你的系统开发出来可能好要改进好多。
      

  2.   

    BH这个字段定义的是integer类型的吗?请先看一下这个字段定义
      

  3.   

    to
      idilent:还是不行呀!
      我Table里的用户就是上面那几个!
    to:
      smalltager:是integer类型
      

  4.   

    to idilent:
    没关系
    我本来是搞硬件的
    没学过DELPHI是突击学的
    还请多多指教 
    我急用
    分不够再加!
    谢谢!
      

  5.   

    if Table1.Lookup('userid',editUserID.Text,'userid') = Table1.FieldByName('userid').AsString then
       begin
          Table1.Edit;
          Table1.FieldByName('password').Value := Edit2.Text;
          Table1.Post;
       end;
      

  6.   

    第二个:
       是我插入许多条信息,我想在插入第一条的时候让它自动生成序号1
       然后我把插入的信息全部删除后,会抱错!
     i:=table1.fieldbyName('BH').AsInteger;这一句说什么
    is not value ...integer
      

  7.   

    那是因为没有数据,所以报错了,这样
    if(table.first)then begin
    i:=table1.fieldbyName('BH').AsInteger 
    end else begin
     i :=1;
    end;
      

  8.   

    if(table.first)then 这一句出错呀
    说是Type of expression must be Boolean
      

  9.   

    if tableUser.locate('userid',editUserID.text,[loCaseInsensitive])then begin
      tableUser.edit;
      tableUser.fieldbyName('password').asString = editPassword.text;
      tableUser.post;
    end;没有测试
      

  10.   

    if(table.first)then 这一句出错呀
    说是Type of expression must be Boolean
    对不起了,最近一直用java所以写了java的代码,那就这样
    if(table.eof)then begin
    i:=0
    end else begin
    last;
    i:=....
    end;