无法获取DLookup功能在Access 2013中工作

时间:2016-11-06 07:59:24

标签: ms-access access-vba ms-access-2013

我正在尝试让Dlookup功能在Access 2013中运行,但我无法让它工作,这是我到目前为止所拥有的: -

我在此查询中有一个名为qry_VehicleOverview的查询,有两个名为VehicleNumberDateLastExam的字段

我有一个表单,Vehicle1中有许多字段,其中两个字段称为DateLastExamV1DateLastExam1!我尝试根据Vehicle1字段中的qry_VehicleOverview引用相关的考试,因此当车辆编号添加到Vehicle1时,它会在DateLastExam1

中显示正确的考试

首先,我在表单中创建一个名为Vehicle1的组合框,并将其从VehicleNumber引用到qry_VehicleOverview

然后我在表单中创建了一个文本框,并将其称为LastExamVehicle1,在该字段的控件源中添加了DLookup函数: -

=DLookup("[DateLastExam]","qry_VehicleOverview","[VehicleNumber]=""" & [Vehicle1].[Text] & """")

然后在After update标签中选择了Event,在此处选择了code Builder,我添加了: -

Private Sub LastExamVehicle1_AfterUpdate() Me.LastExamVehicle1.Requery End Sub

但是当运行表单时,首先我在字段中收到#Type错误,当我更改Vehicle1中的值时,eror会更改为#Error

2 个答案:

答案 0 :(得分:1)

  

我在表单中创建一个名为Vehicle1的组合框并将其引用到   来自qry_VehicleOverview的VehicleNumber

如果是这样,则不需要DLookup,因为您已经拥有该值。

将Vehicle1的 RowSource 设置为 qry_VehicleOverview ,将组合框的字段数设置为2,并将 ControlSource 用于文本框:< / p>

=[Vehicle1].[Column](1)

它会自动更新。

答案 1 :(得分:0)

请勿使用[Vehicle1].[Text],而是使用[Vehicle1].[Value]。或者只是[Vehicle1].Value是默认属性)

.Text仅在焦点位于控件中时有效,而在AfterUpdate中它不再有效。

.Text主要用于Change事件,但这对您的案例没有意义。

修改

您可能需要&#34;完整路径&#34; DLookup中的控件。为了更好的可读性,我建议使用单引号。

=DLookup("[DateLastExam]","qry_VehicleOverview","[VehicleNumber]='" & Forms!yourForm![Vehicle1] & "'")

另外,请仔细检查表单中的所有名称(然后在您的问题中)。例如。根据您的描述,您的活动程序应为:

Private Sub Vehicle1_AfterUpdate()
     Me.DateLastExamV1.Requery
End Sub