尝试在 Access 中使用“添加”按钮时出现编译错误
Posted
技术标签:
【中文标题】尝试在 Access 中使用“添加”按钮时出现编译错误【英文标题】:Compile error when trying to use an Add button in Access 【发布时间】:2017-03-22 18:53:08 【问题描述】:我昨天发布了有关此问题的信息,此后进行了更改并尝试了一些方法来尝试修复它,但仍然遇到问题。
我正在处理数据库工作,但在尝试将记录添加到表单时遇到编译错误。
它本质上是一个库存系统,我有一个包含我们仓库库存的表格,我正在尝试创建一个表格,其中包含一个文本框,其中包含关于一件设备的每条信息。所以你去表格,用信息填写每个文本框,然后在文本框旁边有 5 个框,你可以点击这些框来做不同的事情。在此下方是主库存表的子表单。
有一个添加、编辑、删除、清除和关闭按钮。添加按钮将一条记录添加到此子表单,然后添加到主表中,其中包含您在文本框中键入的任何信息。要使用“编辑”框,请单击子表单中的记录,然后单击“编辑”按钮,它将使用所选记录中的信息填充文本框,以便您可以编辑信息。同时,一旦你点击编辑,它会将添加按钮上的标签更改为更新,这样一旦你编辑了数据,你点击更新,它就会更新子表单和主表中的数据。其他 3 个按钮做它们应该做的事情,单击记录并单击删除删除记录,单击关闭退出表单,单击清除清除文本框中填写的任何信息。
我遇到的问题是“添加/更新”按钮不起作用 - 当我单击它时出现此错误:编译错误:找不到方法或数据成员。每个其他按钮都可以正常工作,我已经编写并重新编写了此代码两次,但无法弄清楚发生了什么。
最奇怪的部分是,我基本上是从另一个我编写的数据库中复制了这段代码,该数据库完全按照预期工作,并且与这个非常相似。切换到这个数据库时,我唯一需要更改的是标签和表头的名称。
谁能帮帮我?
代码:
Option Compare Database
Private Sub cmdAdd_Click()
'when we click on Add button there are two options
'1. for inserting new data
'2. for updating selected data
If Me.txtICN.Tag & "" = "" Then
'add data to table after clicking the add button
CurrentDb.Execute "INSERT INTO tblInventory(ICN, manu, modelNum, serialNum, descr, dateRec, projectNum, dispo, flgDispo, dateRemoved, comments, ulNum, amcaNum)" & _
"VALUES (" & Me.txtICN & ", '" & Me.txtManu & "', '" & Me.txtModel & "', '" & Me.txtSerial & "', '" & Me.txtDesc & "', '" & Me.txtDateRec & "', '" & Me.txtProjectNum & "','" & _
Me.txtDispo & "', '" & Me.chkDispo & "', '" & Me.txtDateRemoved & "', '" & Me.txtComments & "', '" & Me.txtULNum & "', '" & Me.txtAMCANum & "')"
Else
'otherwise
CurrentDb.Execute "UPDATE tblInventory " & _
" SET ICN =" & Me.txtICN & _
", manu ='" & Me.txtManu & "'" & _
", modelNum ='" & Me.txtModel & "'" & _
", serialNum ='" & Me.txtSerial & "'" & _
", descr ='" & Me.txtDescr & "'" & _
", dateRec ='" & Me.txtDateRec & "'" & _
", projectNum ='" & Me.txtProjectNum & "'" & _
", dispo ='" & Me.txtDispo & "'" & _
", flgDispo ='" & Me.chkDispo & "'" & _
", dateRemoved ='" & Me.txtDateRemoved & "'" & _
", comments ='" & Me.txtComments & "'" & _
", ulNum ='" & Me.txtULNum & "'" & _
", amcaNum ='" & Me.txtAMCANum & "'" & _
" WHERE ICN =" & Me.txtICN.Tag
End If
'clear form after data has been added to the table
cmdClear_Click
'refresh data in list on form after form has been cleared
frmInventorySub.Form.Requery
End Sub
Private Sub cmdClear_Click()
Me.txtICN = ""
Me.txtManu = ""
Me.txtModel = ""
Me.txtSerial = ""
Me.txtDesc = ""
Me.txtDateRec = ""
Me.txtProjectNum = ""
Me.txtDispo = ""
Me.chkDispo = ""
Me.txtDateRemoved = ""
Me.txtComments = ""
Me.txtULNum = ""
Me.txtAMCANum = ""
'set focus to ICN number
Me.txtICN.SetFocus
'set edit button to enabled after data has been cleared from form
Me.cmdEdit.Enabled = True
'change caption of button add to Add from Edit
Me.cmdAdd.Caption = "Add"
'clear tag on txtICN
Me.txtICN.Tag = ""
End Sub
Private Sub cmdClose_Click()
DoCmd.Close
End Sub
Private Sub cmdDelete_Click()
'delete record
'check existingselected record
If Not (Me.frmInventorySub.Form.Recordset.EOF And Me.frmInventorySub.Form.Recordset.BOF) Then
'confirm delete
If MsgBox("Are you sure you want to delete this record?)", vbYesNo) = vbYes Then
'delete now
CurrentDb.Execute "DELETE FROM tblInventory " & _
"WHERE ICN=" & Me.frmInventorySub.Form.Recordset.Fields("ICN")
'refresh data in list
Me.frmInventorySub.Form.Requery
End If
End If
End Sub
Private Sub cmdEdit_Click()
'check to see if data is already in the form
If Not (Me.frmInventorySub.Form.Recordset.EOF And Me.frmInventorySub.Form.Recordset.BOF) Then
'pull data from selected record into the text boxes
With Me.frmInventorySub.Form.Recordset
Me.txtICN = .Fields("ICN")
Me.txtManu = .Fields("manu")
Me.txtModel = .Fields("modelNum")
Me.txtSerial = .Fields("serialNum")
Me.txtDesc = .Fields("descr")
Me.txtDateRec = .Fields("dateRec")
Me.txtProjectNum = .Fields("projectNum")
Me.txtDispo = .Fields("dispo")
Me.chkDispo = .Fields("flgDispo")
Me.txtDateRemoved = .Fields("dateRemoved")
Me.txtComments = .Fields("comments")
Me.txtULNum = .Fields("ulNum")
Me.txtAMCANum = .Fields("amcaNum")
'store ICN in tag of txtICN in case ICN is modified
Me.txtICN.Tag = .Fields("ICN")
'change caption of add button to Update
Me.cmdAdd.Caption = "Update"
'disable edit button
Me.cmdEdit.Enabled = False
End With
End If
End Sub
【问题讨论】:
是的,我也试过了,它给了我 cmdAdd_Click 本身的编译错误,这让我很困惑。几乎就像它找不到 cmd 或我不知道的东西一样。 If Me.txtICN.Tag & "" = "" Then 看起来很有趣。为什么要检查标签中的值。如果您正在以某种方式编辑标题以添加或更新,请使用该标题值在插入和更新功能之间切换。 (很抱歉删除我原来的答案,因为它看起来不仅仅是“标签”的一个实例,而且相当模糊)。另外,如果您的表具有自动编号,请注意插入,因为插入看起来像是在其中强制一个值。 我的桌子确实有自动编号,但我尝试了使用和不使用自动编号并遇到了同样的问题。 geeFlo 你能再解释一下你对我说的话吗?我应该如何更改该声明? 【参考方案1】:好的,我现在看到了。您使用 TAG 属性作为记录是否被编辑的指示符。即如果是新记录,则 TAG = "",如果是现有记录,则将 ICN 复制到 TAG 中。
如果是这种情况,则将该 IF 语句更改为:
If Me.txtICN.Tag = "" Then
【讨论】:
是的,那也没有,我真的对这个感到困惑和沮丧。每次单击添加时都会出现错误,它会突出显示 Private Sub cmdAdd_Click() 就像它甚至找不到方法一样。 尝试测试标签是否也为空。 > If nz(me.txtICN.Tag,"") = "" then以上是关于尝试在 Access 中使用“添加”按钮时出现编译错误的主要内容,如果未能解决你的问题,请参考以下文章
尝试在 android studio 中安装按钮时出现编译器错误
在 Instruments 中进行分析时出现 SIGSEGV(Bad Memory Access)错误