重新绑定我用的这个函数:
Private Sub RefillList()
  rs.Close
  rs.Open "select user_ID from user1", db, adOpenKeyset
  rs.Requery
  With Me.DataList1
   Set .DataSource = rs
   Set .RowSource = rs
   .ListField = rs.Fields(0).Name
   .BoundColumn = rs.Fields(0).Name
   .DataField = rs.Fields(0).Name
  End With
End Sub
 在当前窗口删除一条记录再调用它时没问题,DataList马上更新了.但如果我新增一条记录(通过打开另一个窗口新增),DataList的更新却时好时坏。为啥亚???

解决方案 »

  1.   

    Private Sub RefillList()
      rs.Close
      rs.Open "select user_ID from user1", db, adOpenKeyset
      rs.Requery
      With Me.DataList1
       Set .DataSource = rs
       Set .RowSource = rs
       .ListField = rs.Fields(0).Name
       .BoundColumn = rs.Fields(0).Name
       .DataField = rs.Fields(0).Name
      End With
    End Sub
    代码好像没有什么问题你还是看一下别的吧.看有没有写入数据库?
      

  2.   

    3ks先
    写入了,因为如果我关了窗口再打开,就能在DataList1中看到新增的项(Form_Load事件里,DataList1要跟数据库绑定)
      

  3.   

    Private Sub Timer1_Timer()
      If add = 1 Then
      RefillList
      add = 0
      End If
    End Sub
    add是全局变量,当通过打开另一个窗口新增成功时add=1
      

  4.   

    你可以RefillList这里设一断点,看你新增记录后,程序能否执行到这里
      

  5.   

    数据库重新刷新一下,试试看 (requery)
      

  6.   

    up
    问题仍然在!是不是只要数据库是在另一个窗口更新的DataList就不能更新啊?
      

  7.   

    又有新的发现与不解:如果我连续调用RefillList函数10几次,一般在调用了5-8次的时候DataList就更新了。
      谁还有别的意见吗?
      

  8.   

    你把rs的打开放在模块里并把rs设成全局变量,然后你通过调用这个打开函数,例如:
    Public ss As New ADODB.Connection
    Dim rs As New ADODB.Recordset
    Public UserName As StringPublic Sub Main()
    ss.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\message.mdb;Persist Security Info=False"
    loginForm.Show
    End Sub
    Public Function UseRs(ByVal txtsql As String) As ADODB.Recordset
    With rs
      .CursorLocation = adUseClient
      .CursorType = adOpenKeyset
      .LockType = adLockOptimistic
      .Open txtsql, ss
    End With
    Set UseRs = rs
    End Function然后你调用这个函数
    如果你就要求一个DataCombo1更新你可以写个函数
    Private Sub abc()
    If IsNull(rs1) Then
        MsgBox "recordset is nothing"
    Else
        MsgBox "recordset is open"
        rs2.Close
    End If
    Set rs2 = UseRs("select user_ID from user1")
    Set DataCombo1.RowSource = rs2
    DataCombo1.ListField = "roomID"
    DataCombo1.Refresh
    End Sub每次Form_Load或其他需要更新的事件触发时都调用它
      

  9.   

    不好意识打错了
    DataCombo1.ListField = "user_ID"
      

  10.   

    这个也错了
    If IsNull(rs2) Then