1

谁能告诉我为什么突然间我的 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 吗?

4

3 回答 3

2

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

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

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

于 2017-03-21T01:14:32.770 回答
0

感叹号!对我有用。.在发现此错误的任何地方,我都用它们替换了句点。

于 2015-03-30T15:05:57.853 回答
0

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

me.benefitID.value

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

于 2016-07-04T07:43:25.613 回答