用sql的delete语句删除某条记录后,再用select语句显示,可是有时删除掉的那条记录还在,需要几次select语句才能更新显示,不知道是怎么回事?删除完后用Recordset.refresh也还是这样的情况,请高手指教

解决方案 »

  1.   

    删除完之后提交一下!!你是用什么方式删除的~?Option Explicit'工程->引用->Microsoft ActiveX Data Objects 2.0 Library (后面为版本号)
    Dim rs As New ADODB.Recordset'在MSHFLEXGRID表格控件中显示查询到的内容
    Private Sub Command1_Click()
        If rs.State = adStateOpen Then rs.Close
        rs.Open "SELECT * FROM USERPASSWORD", cn, adOpenDynamic, adLockOptimistic
        Set MSHFlexGrid1.DataSource = rs
    End Sub'向数据库中添加数据
    Private Sub Command2_Click()
        If rs.State = adStateOpen Then rs.Close
        rs.Open "SELECT * FROM USERPASSWORD", cn, adOpenDynamic, adLockOptimistic
        rs.AddNew
        rs!UID = txtUid.Text
        rs!PWD = txtPwd.Text
        rs!TRUENAME = txtName.Text
        rs!CREATEDATE = Format(Now, "YYYY/MM/DD")
        rs.Update
        
        Command1.Value = True
    End Sub'从数据库中删除数据
    Private Sub Command3_Click()
        cn.Execute "DELETE FROM USERPASSWORD WHERE UID = '" & txtUid.Text & "'"
        Command1.Value = True
    End SubPrivate Sub Form_Load()
        cn.ConnectionString = "DBQ=" & App.Path & "\TelePhone.mdb;DefaultDir=" & _
            App.Path & ";Driver={Microsoft Access Driver (*.mdb)};" & _
            "DriverId=25;FIL=MS Access;ImplicitCommitSync=Yes;" & _
            "MaxBufferSize=512;MaxScanRows=8;PageTimeout=5;SafeTransactions=0;" & _
            "Threads=3;UID=ADMIN;UserCommitSync=Yes;PWD=admind1234;"
        cn.Open
        '查询字符串可以上这里查
        'http://www.connectionstrings.com/
    End SubPrivate Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    On Error Resume Next
        rs.Close
        Set rs = Nothing
        cn.Close
        Set cn = Nothing
    End Sub我已经测试了,删除之后不会出现你说的问题~~~~
      

  2.   

    大概的代码如下
    sub command1_click()   '删除按钮
       Dim db As Database
       Dim rs As Recordset
            
       Set db = DBEngine.OpenDatabase(App.Path & "\data\UserReport.bhp")
                    
       strMysqlSecondary = "DELETE * FROM MeasureResultSecondary WHERE MainID=1"
       db.Execute strMysqlSecondary
                                    
       db.Close
       Set db = Nothing
    end sub
    然后在command2_click中添加查询语句,往往需要点击几次command2才能更新显示,不知道是因为什么
      

  3.   

    打错了,刚才的数据库后缀为mdb
      

  4.   

    你上面的代码没有任何问题 除了 "DELETE * FROM MeasureResultSecondary WHERE MainID=1"
    删除“*”
      

  5.   

    把你的查询及删除的全部代码粘上来 我给你看看
    也可发到  [email protected]
      

  6.   

    可能程序把命令提交给DBMS后就返回了,DBMS执行命令有一点延迟。
      

  7.   

    删除和查询的代码就是这些了,查询大概也就是"select * from MeasureResultSecondary",就是这样的查询要点击几次后才能更新显示
      

  8.   

    针对ORACLE象在数据库中删除记录以后,确定删除内容后要COMMIT提交RALLBACK撤回上次操作,如果不提交会有个时间的限制,牵涉到这样的问题,不知道你用的库是否牵涉到这些。
    不懂就要顶
      

  9.   

    我用access,不知道是不是需要这样的操作。
      

  10.   

    你的表如果很大的话会发生这样的事
    而且你用的不是ado的Recordset,建议声明时标准写adodb.Recordset
    最好不要用数据库对象操作删除这样的命令建议用command对象
    具体代码在http://community.csdn.net/Expert/topic/3194/3194714.xml?temp=.3209803
      

  11.   

    db.Close
       Set db = Nothing去掉.
      

  12.   

    恩?去掉db.Close
       Set db = Nothing
    后就没有问题了,能不能解释一下啊?
      

  13.   

    db.Close
       Set db = Nothing
    这样每次操作要重新连接数据库啊,当然慢.应该是:
      rs.Close
       Set rs = Nothing
      

  14.   

    樓主,請你試一下
    請你試用一個API函數sleep(1),
    刪除記錄之后用下面兩個語句
    sleep(1)
    DoEvents
    然後再顯示記錄。