任何人都可以告诉我为什么我的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&amp; R过去?
答案 0 :(得分:1)
在您分配表单/报告的记录来源属性时,Access会将字段名称缓存为表单/报告中的WithEvents
AccessField
个对象。这意味着对表或查询的更改不会传播到表单/报表,除非您明确重新分配“记录源”属性,从而强制刷新缓存的字段。
如果您以前使用benefitID
作为表单/报表的成员,但缓存不再包含该字段名称(即使记录源确实包含字段名称),那么您& #39; ll需要更新RecordSource属性以便刷新缓存和编译代码。
如果RecordSource中benefitID
字段的名称已更改,那么您仍需要刷新RecordSource,但您还需要更新对{{1}的引用所以他们使用新的字段名称。
答案 1 :(得分:0)
感叹号!
为我工作。在我发现此错误的任何地方,我用它们替换了句点.
。
答案 2 :(得分:0)
我刚刚遇到同样的问题。我发现我通常使用的感叹号不再存在。所以,我不得不使用.value
,例如:
me.benefitID.value
这似乎解决了我的问题,但我仍然对冲突的引用感到困惑。