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

问题描述 投票:0回答:3

任何人都可以告诉我为什么我的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

我已经尝试选择Microsoft DAO 3.6对象库参考,但我收到“名称与现有模块,项目或对象库冲突”。我读到如果您取消选择Microsoft Office 14.0对象库,它将处理该错误。但我不认为这是我要取消选择的内容?

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

还尝试了一个紧凑的修复数据库,但收到消息“紧凑和修复操作已被取消。您可能没有足够的权限访问数据库所在的文件夹。您需要完全权限数据库所在的目录紧凑和维修。请联系您的系统管理员以获取更多信息。“我过去能够运行C&R吗?

vba ms-access access-vba ms-access-2010
3个回答
1
投票

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

如果您以前使用过benefitID作为Form / Report的成员,但缓存不再包含该字段名称(即使Record Source确实包含字段名称),那么您需要更新RecordSource属性要刷新的缓存和要编译的代码。

如果在RecordSource中更改了benefitID字段的名称,那么您仍然需要刷新RecordSource,但是您还需要更新对benefitID的引用,以便它们使用新的字段名称。


0
投票

我刚刚遇到同样的问题。我发现我通常使用的感叹号不再存在。所以,我不得不使用.value,例如:

me.benefitID.value

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


0
投票

感叹点!为我工作。在我发现这个错误的地方,我用它们替换了时期.

© www.soinside.com 2019 - 2024. All rights reserved.