我程序里设计了两个窗体,其中一个是纪录展示窗体f1,另一个是添加纪录的窗体f2,有没有办法在我添加完j纪录,关闭f2后,怎样实现f1中的dataggrid控件自动更新,显示出我刚刚添加的纪录呢?下面的程序是f1的,f2的程序很简单,最简单的那种向数据库中添加纪录的程序。Option ExplicitDim conn As ADODB.ConnectionDim lCurrentPage As LongDim adoPrimaryRS As ADODB.Recordset Dim lPageCount As Long Dim nPageSize As IntegerDim lCount As Long
Private Sub C1_Click()
lCurrentPage = C1.Text
Call Loadcontrol(lCurrentPage)
End SubPrivate Sub cmdNext_Click() lCurrentPage = lCurrentPage + 1 Call Loadcontrol(lCurrentPage)End Sub
 Private Sub cmdPrevious_Click() If lCurrentPage > 1 Then lCurrentPage = lCurrentPage - 1 Call Loadcontrol(lCurrentPage)End IfEnd Sub Private Sub first_Click()
lCurrentPage = 1
Call Loadcontrol(lCurrentPage)
End SubPrivate Sub Form_Load() 
Dim i As Integer
 Set conn = New ADODB.Connectionconn.CursorLocation = adUseClient conn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\net1.mdb;" lCurrentPage = 1
nPageSize = 30 Set adoPrimaryRS = New ADODB.Recordset adoPrimaryRS.Open "select * from ask", conn, 1, 1
  
  adoPrimaryRS.PageSize = nPageSize '页数 lPageCount = adoPrimaryRS.PageCount If lCurrentPage > lPageCount Then lCurrentPage = lPageCount End IfFor i = 1 To lPageCount
 C1.AddItem i
 Next
 Call Loadcontrol(lCurrentPage) End SubPrivate Sub Loadcontrol(lPage As Long)
 
 adoPrimaryRS.AbsolutePage = lCurrentPage '定义另一个记录集Dim objrs As New ADODB.Recordset '添加字段名称For lCount = 0 To adoPrimaryRS.Fields.Count - 1 objrs.Fields.Append adoPrimaryRS.Fields(lCount).Name, adVarChar, adoPrimaryRS.Fields(lCount).DefinedSize Next '打开记录集objrs.Open '将指定记录数循环添加到objrs中
  For lCount = 1 To nPageSize
If adoPrimaryRS.EOF Or adoPrimaryRS.BOF Then
Exit For
Else
 objrs.AddNew objrs!姓名 = adoPrimaryRS!姓名 objrs!密码 = adoPrimaryRS!密码 & "" adoPrimaryRS.MoveNext
End If
 Next '绑定 Set DataGrid1.DataSource = objrs  '在文本框显示页数 txtPage = lPage & "/" & adoPrimaryRS.PageCountEnd Sub Private Sub Form_Unload(Cancel As Integer)If Not conn Is Nothing Then conn.CloseEnd If Set conn = NothingEnd SubPrivate Sub last_Click()
lCurrentPage = adoPrimaryRS.PageCount
Call Loadcontrol(lCurrentPage)
End SubPrivate Sub txtPage_KeyDown(KeyCode As Integer, Shift As Integer) lCurrentPage = Val(txtPage.Text) Call Loadcontrol(lCurrentPage)End Sub

解决方案 »

  1.   

    adoPrimaryRS.MoveNext
    adoPrimaryRS.Update
      

  2.   

    不好意思,发太快。顺序错了
    adoPrimaryRS.Update
    adoPrimaryRS.MoveNext
      

  3.   

    If adoPrimaryRS.EOF Or adoPrimaryRS.BOF Then
    Exit For
    Else
     objrs.AddNew objrs!姓名 = adoPrimaryRS!姓名 objrs!密码 = adoPrimaryRS!密码 & "" adoPrimaryRS.Update
     adoPrimaryRS.MoveNext
    End If
      

  4.   

    你说的方法不行啊,有没有别的方法,加入adoPrimaryRS.Update直接没有办法运行了
      

  5.   

    f1只是个数据的输出,关键点我认为应该在与如何控制datagrid控件如何输出
      

  6.   

    利用全局函数将添加的数据从f2传到f1,然后就可以在f1中显示了
      

  7.   

    这个全局函数应该怎么写呢,给我贴出来好吗,麻烦你了!
    这里是f2程序的内容:
    Dim conn As Connection
    Dim rs As Recordset
    Dim sql As String
    Dim db As StringPrivate Sub Command1_Click()rs.AddNew
    rs!姓名 = T1.Text
    rs!密码 = T2.Text
    rs!经验值 = T3.Text
    rs.Update
    t = MsgBox("提交成功!", , "标题")
    End SubPrivate Sub Form_Load()
    Set conn = New Connection
    Set rs = New Recordset
    db = App.Path + "\net1.mdb"
    sql = "select * from ask"
    conn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;data source=" & db & ";"
    rs.Open sql, conn, 1, 3
    End Sub