Ms access “突然”;编译错误:找不到方法或数据成员;

Ms access “突然”;编译错误:找不到方法或数据成员;,ms-access,vba,ms-access-2010,Ms Access,Vba,Ms Access 2010,有人能告诉我为什么我的2010 Access数据库突然无法识别我的一个表中的关键字段吗?VBA是否识别表中定义的所有其他字段?我已经反复检查了所有的拼写是否正确 出现编译错误的代码: Me.benefitID = Nz(DMax("benefitID", "tblBenefits"), 0) + 1 tblBenefits字段: benefitID (Primary key) benefitAnimalWelfare benefitSafety benefitCostSavings benef

有人能告诉我为什么我的2010 Access数据库突然无法识别我的一个表中的关键字段吗?VBA是否识别表中定义的所有其他字段?我已经反复检查了所有的拼写是否正确

出现编译错误的代码:

Me.benefitID = Nz(DMax("benefitID", "tblBenefits"), 0) + 1
tblBenefits字段:

benefitID (Primary key)
benefitAnimalWelfare
benefitSafety
benefitCostSavings
benefitImprovedPractice
benefitAdministrative
benefitOther
完整代码:

Private Sub NewIdeaButton_Click()
On Error GoTo NewIdeaButton_Click_Err

    'new idea boolean is true
    newIdea = True

    On Error Resume Next
    DoCmd.GoToRecord , "", acNewRec
    'assign IDs for ideaID, benefitID, statusID 
    Me.ideaID = Nz(DMax("ideaID", "tblIdeaDetails"), 0) + 1
    Me.benefitID = Nz(DMax("benefitID", "tblBenefits"), 0) + 1
    Me.statusID = Nz(DMax("statusID", "tblStatus"), 0) + 1

    Me.PrintIdeaButton.Visible = False
    Me.DeleteIdeaButton.Visible = False
    Me.IdeaStatusFormButton.Visible = False
    Me.CancelButton.Visible = True
    Me.ClearListBoxButton.Visible = False
    Me.AttachedLabel.Visible = False
    Me.FileList.Visible = False
    Me.FileList.RowSourceType = "Value List"

    Me.ideaSubmitter.SetFocus
    If (MacroError <> 0) Then
        Beep
        MsgBox MacroError.Description, vbOKOnly, ""
    End If

NewIdeaButton_Click_Exit:
    Me.NewIdeaButton.Visible = False
    Exit Sub

NewIdeaButton_Click_Err:
    MsgBox Error$
    Resume NewIdeaButton_Click_Exit

End Sub
Private Sub-NewIdeaButton\u Click()
在出现错误时转到NewIdeaButton\u单击\u Err
“新想法是正确的
newIdea=True
出错时继续下一步
DoCmd.GoToRecord,“,acNewRec
'为ideaID、benefitID、statusID分配ID
Me.ideaID=Nz(DMax(“ideaID”,“tblidededetails”),0)+1
Me.benefitID=Nz(DMax(“benefitID”、“tblBenefits”),0)+1
Me.statusID=Nz(DMax(“statusID”、“tblStatus”),0)+1
Me.PrintIdeaButton.Visible=False
Me.DeleteIdeaButton.Visible=False
Me.IdeaStatusFormButton.Visible=False
Me.CancelButton.Visible=True
Me.ClearListBoxButton.Visible=False
Me.AttachedLabel.Visible=False
Me.FileList.Visible=False
Me.FileList.RowSourceType=“值列表”
Me.ideaSubmitter.SetFocus
如果(宏错误0),则
嘟嘟声
MsgBox宏错误。说明,vbOKOnly,“”
如果结束
新建按钮单击退出:
Me.NewIdeaButton.Visible=False
出口接头
新想法点击错误:
MsgBox错误$
继续使用新工具单击退出按钮
端接头
我已尝试选择MicrosoftDAO3.6对象库引用,但收到“名称与现有模块、项目或对象库冲突”。我了解到,如果取消选择MicrosoftOffice14.0对象库,它将处理该错误。但我不认为这是我想取消选择的东西

我还尝试删除此表和另一个表之间的关系,重命名字段,将主键重置为其他字段,但它仍然无法识别此字段


还尝试了压缩和修复数据库,但收到消息“压缩和修复操作已被取消。您可能对数据库所在的文件夹没有足够的权限。您需要对数据库所在的目录具有完全权限以进行压缩和修复。有关详细信息,请与系统管理员联系。”我过去能开一家C&R公司吗

感叹号,感叹号,感叹号,感叹号为我工作。无论我在哪里发现这个错误,我都将句点
替换为句点

我刚刚遇到了同样的问题。我发现我通常使用的感叹号已经不起作用了。因此,我不得不使用
.value
,例如:

me.benefitID.value

这似乎解决了我的问题,但我仍然对冲突的引用感到困惑。

Access在分配表单/报表的记录源属性时,将字段名缓存为
with events
AccessField
对象。这意味着对表或查询的更改不会传播到表单/报表,除非显式重新分配记录源属性,从而强制刷新缓存字段

如果以前使用过
benefitID
作为表单/报表的成员,但缓存不再包含该字段名(即使记录源包含字段名),则需要更新RecordSource属性以刷新缓存并编译代码


如果在记录源中“代码> PunFiTIDD < /Cord>字段已更改,那么您仍然需要刷新记录源,但您还需要更新对<代码> BeNFiTIDD 的引用,以便它们使用新的字段名。

您可以考虑使用“砰”(感叹号)而不是点,尤其是在访问字段时。我自己的做法是,除了引用底层字段外,其他都使用点,在这种情况下,我只使用bang。我的控件总是使用匈牙利符号作为前缀,因此文本框是txtIdeaSubmitter。您可以阅读更多关于bang与dot的内容:在设计模式下的表单中,这里和这里,清空表单的数据源,然后进行制表。现在返回tab,然后重新输入数据源(表或任何内容),然后从数据源属性中退出tab。Access随后将为您重新生成“点”属性列表。这是Access添加的属性的设计时列表。如果使用代码交换数据源,甚至向表中添加新列,则不会重新生成列表。如果表单上没有同名控件,并且您使用代码交换数据源,则使用!到位的是。(点)被推荐。向上投票。这正是问题所在。如果控件不在窗体上,Access仍会在设计时为我生成“点”列名的属性。如果添加了一个新字段,甚至VBA交换了forms recordsource,则不会重新生成属性的“点”列表。在设计过程中,可以进入属性表,将其清空,进行制表,然后再进行制表,并重新输入表单的数据源,然后将重新生成列的属性列表。如果存在具有该名称的控件,则没有问题,但没有控件,则在设计时生成点列表。我总是有用的。