访问按钮VBA问题和子窗体问题

时间:2013-01-10 08:08:32

标签: database vba ms-access database-design access-vba

我在关键库存数据库上工作。管理谁签出房间钥匙以及什么时候带回来的东西。我已经创建了我计划使用的桌子,并开始处理表格。但是,我无法使表单/子表单按预期工作。

我已经创建了一些按钮,用于添加/编辑/删除/等等子表格中的记录,这些记录是表格的结果。我根据我在数据库类中做的一个旧项目编写了按钮(然后其他人做了表格,我做了查询)。我似乎无法让他们工作。到目前为止,我只编写了“mainKeys”表单的按钮。

我注意到主窗体显示了14条记录中的1条,而我旧项目中的窗体只显示了子窗体中的所有记录。

以下是访问文件:http://jumpshare.com/b/W7AKih

这是我的旧项目(这是我试图复制的内容):http://jumpshare.com/b/r7Y6O1

以下是按钮的代码:

Option Compare Database

Private Sub cmdAdd_Click()
If Me.keyID.Tag & "" = "" Then
    CurrentDb.Execute "INSERT INTO KEYS(KEY_ID, ROOM, DRAWER)" & _
        " VALUES(" & Me.keyID & ",'" & Me.roomID & "'," & Me.drawerID & ")"
          subKey.Form.Requery
Else
    CurrentDb.Execute "UPDATE KEYS " & _
    " SET KEY_ID=" & Me.keyID & _
    ", ROOM='" & Me.roomID & "'" & _
    ", DRAWER='" & Me.drawerID & "'" & _
    " WHERE KEY_ID=" & Me.keyID.Tag
End If
cmdReset_Click
subKey.Form.Requery
End Sub

Private Sub cmdBack_Click()

End Sub

Private Sub cmdDelete_Click()
If Not (Me.subKey.Form.Recordset.EOF And Me.subKey.Form.Recordset.BOF) Then
    If MsgBox("Confirm Deletion?", vbYesNo) = vbYes Then
        CurrentDb.Execute "DELETE FROM KEYS" & _
            " WHERE KEY_ID=" & Me.subKey.Form.Recordset.Fields("KEY_ID")
                Me.subKey.Form.Requery
    End If
End If
End Sub

Private Sub cmdEdit_Click()
If Not (Me.subKey.Form.Recordset.EOF And Me.subKey.Form.Recordset.BOF) Then
        With Me.subKey.Form.Recordset
            Me.keyID = .Fields("KEY_ID")
            Me.roomID = .Fields("ROOM")
            Me.drawerID = .Fields("DRAWER")
            Me.keyID.Tag = .Fields("KEY_ID")
            Me.cmdAdd.Caption = "Update Record"
            Me.cmdEdit.Enabled = False
        End With
End If
End Sub

Private Sub cmdExit_Click()
 DoCmd.Close
End Sub

Private Sub cmdReset_Click()
    Me.keyID = ""
    Me.roomID = ""
    Me.drawerID = ""

    Me.keyID.SetFocus
    Me.cmdEdit.Enabled = True
    Me.cmdAdd.Caption = "ADD KEY"
    Me.keyID.Tag = ""
End Sub

从我所看到的重置&退出按钮工作正常,添加/删除/更新记录没有。 此外,这是我在学校办公室工作的一个小项目。如果有人对他们在文件中看到的内容有任何建议,那就太棒了。

1 个答案:

答案 0 :(得分:0)

没有发生任何事情的原因是数据库中的事件行设置为[Embedded Macro]而不是[Event Procedure],因此您发布的代码永远不会运行。当遇到问题时,设置一个断点总是明智的,看看代码是否已到达。

在那之后,在我看来,你会在某种程度上遇到太多麻烦而在另一种情况下会遇到太多麻烦。当Access将非常好地处理子表单的添加时,不要编写所有插入代码,而是编写更多检查代码以确保数据处于良好状态。