Set db = OpenDatabase(App.Path + "/pt.mdb")
        Set rs = db.OpenRecordset("product")        If rs.EOF Then
        MsgBox "Please Add Someone To The Databse"
        End If
        
        With rs
        rs.Edit
        !address = LCase(frmControl.txtAddress)
        !Date = LCase(frmProduct.txtDate)
        !serial = LCase(frmProduct.txtSerial)
        .Update
        End With
        
        
        MsgBox (frmProduct.txtSerial & " 记录修改成功!")
        '记录修改成功后,删除原来的记录
          
        Set rs = db.OpenRecordset("SELECT product.address, product.Data, product.serial From product WHERE product.serial = " + Chr$(34) + globalSerial + Chr$(34) + ";")
        rs.MoveFirst
        Do Until rs.EOF
        rs.Delete
        rs.MoveNext
        Loop
我数据库里有几条记录, 如下
address   data        serial
000000   2007-10-20   0001
000000   2007-10-20   0002
000000   2007-10-20   0003
000000   2007-10-20   0004
000000   2007-10-20   0005比如我现在对 serial =0004 的记录做修改,即 serial =0006,  执行上面的也成功了, 但修改的却是 serial=0001 的记录
咋回事呢??请赐教 谢谢

解决方案 »

  1.   

    得根据索引字段查找待修改的记录
    如果通过普通字段查找,因为普通字段回有重复的数据,它只找到第一条符合条件的记录执行程序address   data        serial 
    000000   2007-10-20   0001 
    000000   2007-10-20   0002 
    000000   2007-10-20   0003 
    000000   2007-10-20   0004 
    000000   2007-10-20   0005 比如你这些数据,想通过ADDRESS字段修改SERIAL的值,它只修改SERIAL=0001为0006除非:
    000001   2007-10-20   0001 
    000002   2007-10-20   0002 
    000003   2007-10-20   0003 
    000004   2007-10-20   0004 
    000005   2007-10-20   0005 
      

  2.   

    update [table] set [field1]=[value1] where [condition]
      

  3.   

    在赋值前加上:
    rs.filter(serial=0004)
      

  4.   

    好像是recordset的使用有点问题,你这样试试Dim recordset       As New ADODB.recordset
    Dim cmd             As New ADODB.Command
    sql="update [table] set [field1]=[value1] where [condition]"
    cmd.ActiveConnection = conn
    cmd.CommandType = adCmdText
    cmd.CommandText = sql
    Set recordset = cmd.Execute'... 然后循环遍历recordset如果不起作用,问题就应该出在记录集recordset的游标上,对rs的操作哪有问题,在你自己的程序里面找找。
    我这看不到你所有的代码。