2013-12-09 97 views
0

我需要在VB中更新简单的查询,我可以更新表中最后一条记录中的某些字段。在Access 2010中更新记录集

enter image description here

我有这样的形式与一组组合框的,当我按下Edit按钮,我应该能够从组合框选择不同的值,当我按下Save,应该更新的最后一条记录我的桌子上有我的组合框中的最新选择。请指教。

我有下面的代码,但它只是垃圾,它不会编辑我的表中的任何东西。

Private Sub Command51_Click() 
Dim RS As DAO.Recordset 
Dim RecID As Integer 
Set RS = CurrentDb.OpenRecordset("Data", dbOpenDynaset) 
RecID = DLast("[ID]") 
RS.MoveFirst 
Do Until RS.EOF 
If RS("ID") = RecID Then 
    RS.Edit 
    RS("WLAN") = Me.Text34 
    RS("Controller Version") = Me.Text38 
    RS("AP Model") = Me.Text36 
    RS("Security") = Me.Text39 
    RS("Wired Network") = Me.Text37 
    RS("Installation Type") = Me.Text40 
    RS("Quoted Device") = Me.Text41 
    RS.Update 
    RS.Close 

    End With 

    MsgBox "Device info were edited and stored.", vbExclamation 

末次

而这里的表结构[编辑]

enter image description here

+0

'我有这种形式'< - 哪种形式?请包含截图? StackOverflow允许从剪贴板复制/粘贴。 – Neolisk

+0

对不起。请查看下面的图片http://imageshack.com/a/img33/192/qjk6.jpg –

+0

好。还请包括您的代码和表格结构。 – Neolisk

回答

0

基于你告诉我们什么,我会改变默认值的当前值Form_Current事件上窗体上的每个控件。此外,在窗体设计模式中,将所有控件设置为锁定。当用户点击编辑按钮时,我只是移动到一个新的记录。当然,除非您锁定所有控件,否则用户将能够编辑当前记录。请注意,我没有测试过这个代码。

Private Sub Form_Current() 
    On Error Resume Next 'not all controls have the "DefaultValue" property, such as labels' 
    Dim ctl as Control 
    For Each ctl in Me.Controls 
     ctl.Locked = Not Me.NewRecord 
     ctl.DefaultValue = ctl.Value 
    Next ctl 
End Sub 

Private Sub cmdEdit_Click() 
    Access.Application.DoCmd.RunCommand acCmdRecordsGoToNew 
End Sub 

Private Sub cmdSave_Click() 
    Me.Dirty = False 
End Sub 
+0

不幸的是,它没有奏效。你能否给我正确的更新查询语法,因为我试过这么多,每个都返回一个错误。只是一个简单的更新,编辑最后一个记录集。谢谢。 –

+0

它工作。我用下面的代码:Dim RS作为DAO.Recordset 集RS = CurrentDb.OpenRecordset( “数据”,dbOpenDynaset) RS.MoveLast RS.Edit RS( “WLAN”)= Me.Text34 RS(“控制器RS(“安装类型”)= Me.Text38 RS(“AP Model”)= Me.Text36 RS(“安全”)= = Me.Text40 RS(“Quoted Device”)= Me.Text41 RS.Update Set RS = Nothing 谢谢Bobort抽出时间帮忙。我很感激。 –