我有一个我在Access中构建的表单,可以帮助管理表的记录。我有一个EDIT函数,当它运行时它用指定的信息填充文本框然后我点击更新按钮来更改信息并重新保存数据,当我这样做,而不是只更新一个记录,它更新所有具有相应数据的记录我正在更新示例:如果我将员工准备级别从READY NOW更改为RETAIN,它会将表中的所有READY NOW更改为RETAIN而不是仅更改。关于如何解决这个问题的任何想法都将非常感激。
代码在下面
Private Sub cmdEdit_Click()
'check whether there exists data in the list
If Not (Me.frmCDDataSub.Form.Recordset.EOF And Me.frmCDDataSub.Form.Recordset.BOF) Then
'get data to text box control
With Me.frmCDDataSub.Form.Recordset
Me.txtEmpID = .Fields("EmployeeID")
Me.txtEmpName = .Fields("EmployeeName")
Me.cboGender = .Fields("Gender")
Me.cboEEOC = .Fields("EEOC")
Me.cboReadyLvl = .Fields("ReadinessLevel")
Me.cboDivision = .Fields("Division")
Me.txtCenter = .Fields("Center")
Me.txtFeedback = .Fields("EmployeeFeedback")
Me.txtDevelopment = .Fields("DevelopmentForEmployee")
Me.txtJustification = .Fields("Justification")
Me.cboChanged = .Fields("Changed")
'store id of employee in tag of text id in case id is modified
Me.txtEmpID.Tag = .Fields("EmployeeID")
'change caption of button add to update
Me.cmdAdd.Caption = "Update"
'disable edit button
Me.cmdEdit.Enabled = False
End With
End If
End Sub
答案 0 :(得分:0)
Microsoft Access专门设计用于避免编写您正在执行的操作。除非有一个特定的原因,你明确地,逐字段地执行此操作,您可以通过简单地将表单设置为适当的源(即表)来避免所有这些代码,然后应将每个控件分配给一个字段使用ControlSource属性(我完全忘记了名字)。
您没有向我们展示您的更新代码。您需要向我们展示此代码,因为它正在更新整个表格。这就是问题所在。但正如我所提到的,你应该避免对每个字段进行这种明确的分配(除非你有什么东西没告诉我们)。
我唯一必须明确这样做的是,如果每个字段都必须在保存之前进行操作或更改,而且我认为你不会这样做。