一个程序,两个窗口,一个用来更改access表数据(Form1),另一个窗口有个combo1用来显示数据(Form2)。form2有一个按钮(command1)用来打开form1。现在我先打开form2,combo1读取出数据,点击command1打开form1,更改数据(添加或修改或删除)并关闭form1后,让combo1重新读取表中数据,发现还是更新前的数据,这怎么回事啊?当我再次更改数据后,发现这时读取的数据是第一次更改后的数据。
form2中command1代码如下:
Private Sub Command1_Click()
    form1.Show
    combo1.Clear
     '****************信息填充***************
    print1.ConnectionString = GetDatabaseConnectionString()
    print1.RecordSource = "select * from kind "
    print1.Refresh     If print1.RecordSet.EOF = False Then
         print1.RecordSet.MoveFirst
     End If
     Do While print1.RecordSet.EOF = False
         combo1.AddItem print1.RecordSet.Fields(2).Value
          print1.RecordSet.MoveNext
     Loop   
End Sub
照理说,我成功更改了表中的数据后,再次读取应该是更新后的数据,为什么不行呢?

解决方案 »

  1.   

    print1.close
    关闭一次重新打开可能就好了
      

  2.   

    print1.close有这个方法吗????
      

  3.   

    我发现我犯了一个错误:
    我以为form1.show出来以后,程序会停在那里,现在发现不是这样
      

  4.   


    Private Sub Form_Load()
        Timer1.Interval = 100
    End SubPrivate Sub Timer1_Timer()
        print1.Refresh
    End Sub

      

  5.   

    form1.show 1
    这样的话程序就停在那里了,但是就不能同时打开form2了
      

  6.   


    刚刚看了主贴,我来纠正我自己Private Sub Command1_Click()
        form1.Show 1  'form1打开,然后更改你的数据
        combo1.Clear
        '****************信息填充***************
        print1.ConnectionString = GetDatabaseConnectionString()
        print1.RecordSource = "select * from kind "
        print1.Refresh    If print1.RecordSet.EOF = False Then
            print1.RecordSet.MoveFirst
        End If
        Do While print1.RecordSet.EOF = False
            combo1.AddItem print1.RecordSet.Fields(2).Value
              print1.RecordSet.MoveNext
        Loop 
    End Sub 
      

  7.   

    有米有一个方法就是在form1出来时程序暂停,就像msgbox一样,然后等form1关闭后,再接下来执行程序?
      

  8.   

    不支持用Timer,占用系统资源