我用msflexgrid显示数据,然后界面上有单独的按钮来控制显示,删除记录的代码如下:Dim db As Database
Dim rs As Recordset
      strMysql = "DELETE 某个记录 FROM 某个表 WHERE 条件"
   Set db = DBEngine.OpenDatabase(x.mdb)
       db.Execute strMysql
       db.Close
   Set db = Nothing
上边的删除完成后,就点击按钮用“SELECT * FROM 某个表”来显示剩下的记录,   
Dim db As Database
Dim rs As Recordset
      strMysql = "SELECT * FROM 某个表"
   Set db = DBEngine.OpenDatabase(x.mdb)
   Set rs = db.OpenRecordset(strMysql)
       msflexgrid.textmatrix(1,1)=rs.fileds(0).value
       .....
       rs.Close
   Set rs = Nothing
       db.Close
   Set db = Nothing
   可是会发现,刚才删除的那条记录有时候会还在,需要再点击一次或者几次这个按钮才能刷新过来,可有的时候一次就刷新过来了,不知道这是怎么回事?是我在删除以后哪里没有刷新么?
   删除是这种情况,如果用语句修改某个记录以后也会有这种情况,需要点按钮刷新几次才能看到更改后的结果,可有的时候只刷新一次就看到了,不清楚怎么回事?
   希望有高手可以指教一下啊,我在北京,方便的话我可以去找您当面请教,不胜感谢。

解决方案 »

  1.   

    Dim db As Database
    Dim rs As Recordset
          strMysql = "DELETE 某个记录 FROM 某个表 WHERE 条件"
       Set db = DBEngine.OpenDatabase(x.mdb)
           db.Execute strMysql
           db.Close
       Set db = Nothingmsflexgrid.Clear上边的删除完成后,就点击按钮用“SELECT * FROM 某个表”来显示剩下的记录,   
    Dim db As Database
    Dim rs As Recordset
          strMysql = "SELECT * FROM 某个表"
       Set db = DBEngine.OpenDatabase(x.mdb)
       Set rs = db.OpenRecordset(strMysql)
           msflexgrid.textmatrix(1,1)=rs.fileds(0).value
           .....
           rs.Close
       Set rs = Nothing
           db.Close
       Set db = Nothing
    添加msflexgrid.Clear
    先清空msflexgrid
      

  2.   

    楼上的,我试了还是不行啊。你怀疑是msflexgrid的显示问题么?我觉得好像不是这个问题,我感觉像是我向access发出修改指令后,access执行完毕需要一段时间,可又觉得这样解释不通。
      

  3.   

    楼上的楼上,在哪里refresh阿?我删除完了后使用db.Recordsets.Refresh也还是不行啊
      

  4.   

    '换ADO方式试试
    '引用Micrsoft Active Data Object 2.6 Library'删除记录
    Dim cnn As New ADODB.Connection
    Dim rs As New ADODB.Recordset
    cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    "Persist Security Info=False;" & "Data Source = E:\db1.mdb;" & _
    "mode=ReadWrite"
    cnn.Open
    strMysql = "DELETE 某个记录 FROM 某个表 WHERE 条件"
    cnn.Execute strMysql
    cnn.Close'刷新记录
    Dim cnn As New ADODB.Connection
      Dim rs As New ADODB.Recordset
      cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
      "Persist Security Info=False;" & "Data Source = E:\db1.mdb;" & _
      "mode=ReadWrite"
      cnn.Open
      strMysql = "SELECT * FROM 某个表"
      rs.Open strMysql, cnn, adOpenKeyset, adLockOptimistic
      MSFlexGrid1.TextMatrix(1, 1) = rs(0)
      

  5.   

    不要总是从磁盘中读取文件数据,磁盘缓存会有延迟。Dim db As Database
    Dim rs As RecordsetPrivate Sub Form_Load()
       Set db = DBEngine.OpenDatabase(x.mdb)
    End SubPrivate Sub Form_Unload()
       db.Close
       Set db = Nothing
    End SubPrivate Sub cmdDel_Cllick()
       strMysql = "DELETE 某个记录 FROM 某个表 WHERE 条件"
       db.Execute strMysql
    End IfPrivate Sub cmdSelect_Click()   
       strMysql = "SELECT * FROM 某个表"
       Set rs = db.OpenRecordset(strMysql)
           msflexgrid.textmatrix(1,1)=rs.fileds(0).value
           .....
       rs.Close
       Set rs = Nothing
    End Sub这样就会从内存缓冲区直接读数据了。
      

  6.   

    好像不是这个的问题,我试试用ADO做吧,看怎么样
      

  7.   

    ado好像可以,抱歉这么久才结贴