通过单击dadagrid,获得一条记录(Rec as adoDB.recordset),接下来修改该记录,却失败了。如何实现!因为Rec没有Edit方法。不知道该用社么方法修改,请高手赐教:谢谢!

解决方案 »

  1.   

    Rec.Open sSql, DbConn, adOpenKeyset, adLockOptimistic, adCmdText
    ...
    Rec!字段="值"
    Rec.Update
    ...
      

  2.   

    '窗体上放1个DataGird、3个CommandButton
    Option Explicit
        Public mCnnString As String
        Public mRst As New ADODB.RecordsetPrivate Sub Command1_Click()   '保存按钮
        mRst.UpdateBatch
    End SubPrivate Sub Command2_Click()   '增加按钮
        mRst.AddNew
    End SubPrivate Sub Command3_Click()   '删除按钮
        mRst.Delete
    End SubPrivate Sub Form_Load()
        mCnnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db1.mdb" & ";Persist Security Info=False"
        If mRst.State = adStateOpen Then mRst.Close
        mRst.CursorLocation = adUseClient
        mRst.Open "Select * From Table1", mCnnString, adOpenStatic, adLockBatchOptimistic, adCmdText
        Set DataGrid1.DataSource = mRst
        DataGrid1.Refresh
    End SubPrivate Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
        mRst.Close
        Set mRst = Nothing
    End Sub
      

  3.   

    只要把DataGrid的AllowUpdate设置为True即可在DataGrid中修改。
      

  4.   

    谢谢大家回帖!但我想声明一下:我就是想找一个类似于在vb下用RDO访问、修改数据库一样,有一个EDIT方法(rec.edit),我不能在DataGrid中直接修改,因为有几个字段是需要从其他库里读出来,用户是无法输入的。那位哥伦布兄弟的方法可能能实现先上述功能,但我是ado+vb的新手,没有看懂那段程序,所以用了“可能”,也希望能把程序再写详细一些。谢谢!
      

  5.   

    如果是几个表中得到的数据形成一个网格,那你只有在网格中做了修改后,立即用写sql语句,然后用Conn.Execute sqlString,,1的方法对相应的数据做更新。不足之处是无法撤消所做的修改。如果用事务来控制也可以做到撤消的功能,但是一但事物开启,别的用户就不能操作这些网格中的数据了。
    事务开始Conn.BeginTrans
    事务回滚Conn.RollbackTrans
    事务结束Conn.CommitTrans
      

  6.   

    你是想对已存在库的记录进行修改操作吗??
    可用mRst.fields(Index)=textbox的方法赋值,再用update将修改的数据写入到数据库