保存按钮:
procedure TFrm_ManageUser.Button1Click(Sender: TObject);
begin
   If (Edit1.Text<>'') And (Edit2.Text<>'') Then
     begin
        with ADOQuery1 do
          begin
            Close;
            SQL.Clear;
            SQL.Add('SELECT * FROM userinfo where name='+''''+Edit1.Text+'''');
            Open;
            If ADOQuery1.RecordCount>0 Then
               begin
                 showmessage('该信息已经存在!请重新输入!');
                 Edit1.Clear;
                 Edit2.Clear;
                 Exit;
               end;
               If X=1 then
                 begin
                   Insert;
                 end
                 else IF x=2 Then
                   begin
                      Edit;
                   end
                   Else
                     begin
                       Exit;
                     end;
              FieldByName('Name').AsString:=Edit1.Text;
              FieldByName('pass').AsVariant:=Edit2.Text;
              Post;
               end;
            ADOQuery1.Active:=False;
            ADOQuery1.Active:=True;
     end;
end;
添加按钮:
procedure TFrm_ManageUser.Button3Click(Sender: TObject);
begin
  X:=1;
  ADOQuery1.Insert;
end;
为什么我点了保存按钮之后只显示我当前添加的内容,其他信息就不显示了呢?

解决方案 »

  1.   

    1、其他什么信息?代码中没有发现
    2、Button3Click中的ADOQuery1.Insert和Button1Click中的似乎重复了
    3、从代码看,Button1Click中有意义的操作就是调置了一个标志值(X:=1),完成的不是“添加”功能,这种录入界面风格一般这个按钮是定义为“清空界面”或叫“刷新界面”什么的
    4、注意一下代码排版
      

  2.   

    比如我要添加一条信息,首先点击Button3然后在Edit1,Edit2中输入信息,之后点击Button1来保存,现在是DBGrid1只显示我刚刚输入的信息,而以前的信息就不显示了,又要重新进去才会显示出来,我用过刷新,还是一样的。
      

  3.   

    因为你:
    ADOQuery1.Active:=False;
      ADOQuery1.Active:=True;
    重新搜索了。但没有重新写SQL。执行的以前的那句:
    SQL.Add('SELECT * FROM userinfo where name='+''''+Edit1.Text+'''');所以搜索的是你添加的这条记录。最后2句修改:
    ADOQuery1.SQL.text := 'SELECT * FROM userinfo;
    ADOQuery1.open;
      

  4.   

    谢谢yangjing41 我已经知道了