Microsoft Access在表中插入错误的值

时间:2014-07-15 18:32:47

标签: sql ms-access duplicates ms-access-2010 record

我在Microsoft Access上相当新,我遇到了一个我似乎无法解决的错误。我创建了两个单独的表单,即LOGIN和LOGOUT,它基本上将处理所有员工之间的交互,并具有基本功能。

Relationship

Login form

如果您需要查看我的关系或登录表单,以了解我在做什么。

点击

上的我的登录按钮
Private Sub cmdLogin_Click()
    'add record to database
    Dim empID As Integer
    Dim logDate As Date
    Dim logTime As String
    logTime = Time
    logDate = Date
    empID = Me.cboEmployeeNo.Column(0)

    CurrentDb.Execute "INSERT INTO tbl_workShift(employeeID, logTypeID, logDate, logTime) " & _
     " Values(" & empID & ", 1, #" & logDate & "#, '" & logTime & "')"
End Sub

我的问题是,每当我登录或注销员工时,它似乎都会创建一个具有不同员工编号但名字和名字相同的某人的副本。

enter image description here

正如您所看到的,员工ID 38和40不应该存在,但它们是从2和4复制的?这种情况发生的原因是什么?任何帮助将不胜感激

1 个答案:

答案 0 :(得分:2)

如果表单的DataEntry属性设置为true,或者您使用DataMode:=acFormAdd打开表单,则表单将在新的空记录中打开,并且每个条目都将对此新记录进行记录。

在编辑员工之前,请务必选择合适的员工,在正确的记录中打开表单。

如果您使用组合框来选择员工,请确保不要设置此控件的控件来源,因为您不想保存所选值。您只想以编程方式使用它。

如果您想要“纯”数据编辑和输入表单,请按以下方式设置其属性:

  • 默认视图:单一表单
  • 允许表单视图:是
  • 允许数据表查看:否
  • 允许数据透视表视图:否
  • 允许数据透视图查看:否
  • 滚动条:既不
  • 记录选择器:否
  • 导航按钮:否
  • 边框样式:薄

  • 记录来源:tbl_employee

  • 允许过滤器:否
  • 允许编辑:是
  • 允许删除:否
  • 允许添加:否
  • 数据输入:否

然后像这样打开它

DoCmd.Close acForm, "frm_employee"
DoCmd.OpenForm "frm_employee", WhereCondition:="employeeID=" & _
    Me.cboEmployeeNo.Column(0), DataMode:=acFormEdit

这些属性使表单看起来整洁,并确保您无法错误地导航到其他记录。

此外,您应该区分登录和编辑员工。不应该允许登录表单更改员工记录。