2

我有一个主窗体和子窗体。我在主表单中有文本框,允许我在子表单中添加/编辑信息。添加工作正常,但是当我尝试编辑记录时,所选记录的信息会像我想要的那样显示在文本框中,但是当我尝试更新时,出现数据类型错误。此外,当我尝试删除记录时,我也会收到数据类型错误。

我试图复制我的一个合作伙伴为以前的项目所做的工作(CarDealership)。我希望在 KeyInventory 数据库中获得类似的功能。这是我使用的文件:http: //jumpshare.com/b/t7Lot8

我只完成了 mainKeys 表单上的按钮的代码

错误重现:我单击删除键,得到构象对话框。选择是,这会产生“运行时错误“3464”:条件表达式中的数据类型不匹配”

这是添加/更新按钮的代码:

 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 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
4

1 回答 1

1

假设这是触发“标准表达式中的数据类型不匹配”错误的行...

CurrentDb.Execute "DELETE FROM KEYS" & _
    " WHERE KEY_ID=" & Me.subKey.Form.Recordset.Fields("KEY_ID")

...给自己一个机会来检查您要求数据库引擎执行的语句。cmdDelete_Click()用以下代码替换该行:

Dim strSql As String
strSql = "DELETE FROM KEYS" & _
    " WHERE KEY_ID=" & Me.subKey.Form.Recordset.Fields("KEY_ID")
Debug.Print strSql ' <- prints to Immediate window
CurrentDb.Execute strSql, dbFailOnError

然后,在表单视图中使用您的表单,单击导致错误的命令按钮。当您收到错误消息时,请转到“立即”窗口 ( Ctrl+ g) 并查看该DELETE语句。如果该语句的问题不明显,您可以复制语句文本并将其粘贴到新查询的 SQL 视图中进行测试。如果您需要更多帮助,请向我们展示。

注意:此建议不会修复错误。它仅用于帮助您诊断失败的DELETE语句。

如果您的 KEY_ID 字段的数据类型是文本,请在您的 DELETE 语句中为数字添加引号,类似于此:

DELETE FROM KEYS WHERE KEY_ID='7'

如果可行,请修改代码以包含引号。

strSql = "DELETE FROM KEYS WHERE KEY_ID='" & _
    Me.subKey.Form.Recordset.Fields("KEY_ID") & "'"
于 2013-01-10T23:18:36.913 回答