本帖最后由 wmsyzx 于 2014-02-10 10:51:21 编辑

解决方案 »

  1.   

    关闭后打开数据集是比较慢的,如果只是添加记录,只需要DBGrid.DataSource.DataSet.Refresh;
      

  2.   

    我试过refresh 和requery,都会有延迟....
      

  3.   

    数据库字段里面没有图片诶,数据库的字段为:
    ID,NAME(用户名),CODE(用户编码),ISADM(是否是管理员),PWD(密码)
    点击确定按钮后的操作:
    procedure TsetUserFrm_add.BitBtn_saveClick(Sender: TObject);
    var
    code:String;
    name:String;
    pwd:String;
    sql2add:String;
    sql2check:String;
    begin
    code:=Edit_code.Text;
    name:=Edit_name.Text;
    pwd:=Edit_pwd.Text;
    sql2check:='select * from logininfo where Code='+QuotedStr(code)+' and Name='+QuotedStr(name)+'';
    setuseraddADOQuery.SQL.Clear;
    setuseraddADOQuery.SQL.Add(sql2check);
    showMessage(setuseraddADOQuery.SQL.Text);
    setuseraddADOQuery.Open;
    if setuseraddADOQuery.Eof then
     begin
     sql2add:='insert into logininfo(Code,Name,PWD) values ('+QuotedStr(code)+','+QuotedStr(name)+','+QuotedStr(pwd)+')';
     setuseraddADOQuery.SQL.Clear;
     setuseraddADOQuery.SQL.Add(sql2add);
     showMessage(setuseraddADOQuery.SQL.Text);
     setuseraddADOQuery.ExecSQL;
     setUserFrm_add.Close;
     setUserFrm.Enabled:=True;
     setUserFrm.setuserfrmADOQuery.Requery();
     end
    else
     begin
     Form_userexit.Show;
     setUserFrm_add.Enabled:=False;
     end;
    end;在setUserFrm中:
    procedure TsetUserFrm.FormActivate(Sender: TObject);
    //action when the current form activate
    begin
    //refresh the DBGrid
    DBGrid_setuser.DataSource.DataSet.Close;
    DBGrid_setuser.DataSource.DataSet.Open;
    //DBGrid_setuser.DataSource.DataSet.Refresh;
    //DBGrid_setuser.Refresh;
    end;
      

  4.   

    sql2add:='insert into logininfo(Code,Name,PWD) values ('+QuotedStr(code)+','+QuotedStr(name)+','+QuotedStr(pwd)+')';
     setuseraddADOQuery.SQL.Clear;
     setuseraddADOQuery.SQL.Add(sql2add);
     setuseraddADOQuery.ExecSQL;
     setUserFrm_add.Close;
     setUserFrm.Enabled:=True;
    这一段时插入数据库操作,然后在setUserFrm的onActivate中进行
    DBGrid_setuser.DataSource.DataSet.Close;
    DBGrid_setuser.DataSource.DataSet.Open;操作,
    每次操作都会有延迟....
      

  5.   


    DBGrid并不立刻显示新记录,延迟三四秒后重新打开这个form才会显示。
    确定dataset 只用作DBgrid 这个数据集, 中间没有做其他动作?
      

  6.   


    恩恩,dataset只是DBgrid 里面用了,没有任何其他的操作
      

  7.   

    问题出在你重新打开的代码中,不要在onactivate中执行。直接放在上面的代码中执行就可以了。
      

  8.   

     setuseraddADOQuery.SQL.Clear;
     setuseraddADOQuery.SQL.Add(sql2add);
     setuseraddADOQuery.ExecSQL;
    DBGrid_setuser.DataSource.DataSet.Close;
    DBGrid_setuser.DataSource.DataSet.Open;

    或直接把上面两句换成DBGrid_setuser.DataSource.DataSet.requery;