Ms access MS Access-Dlookup根据另一个表的内容设置字段的值

Ms access MS Access-Dlookup根据另一个表的内容设置字段的值,ms-access,lookup,Ms Access,Lookup,我是一个新手。 我有两张桌子。 第一个称为日期,它有三列(除了键之外),分别是: 起始日期(如2017年7月1日) 迄今为止(如2017年9月30日) 期间(如2017-2018年第一季度) 第二个表称为费用,它有许多列,其中两列是费用日期和期间 费用日期由用户输入 我希望根据费用日期通过DLookup函数从日期表中填写期间,例如(使用Excel语法) 我假设此函数需要在Expenses design视图的Lookup选项卡下的Row Source中编写 有人能告诉我什么是正确的访问语法,以及我

我是一个新手。 我有两张桌子。 第一个称为日期,它有三列(除了键之外),分别是:

起始日期(如2017年7月1日)

迄今为止(如2017年9月30日)

期间(如2017-2018年第一季度)

第二个表称为费用,它有许多列,其中两列是费用日期和期间

费用日期由用户输入

我希望根据费用日期通过
DLookup
函数从日期表中填写期间,例如(使用Excel语法)

我假设此函数需要在Expenses design视图的Lookup选项卡下的Row Source中编写


有人能告诉我什么是正确的访问语法,以及我应该在哪里编写所需的函数吗?

没有,您不会在RowSource中使用DLookup。您将使用SQL语句

DLookup()表达式可以在文本框的ControlSource属性或查询设计视图的Field单元格中使用

在这种情况下,表达式为:

DLookup(“期间”、“日期”、“#”和[费用日期]、“#介于[起始日期]和[截止日期]之间”)

如果您使用的是国际日期,请查看。可能需要古斯塔夫对数据格式的建议

有关域聚合函数的更多信息,请参阅Access帮助或Google搜索


建议名称中不要使用空格或标点符号/特殊字符(仅下划线例外)。

如果表单绑定到表费用,则使用绑定到字段费用日期(此处命名为TextExpenseDate)的文本框的AfterUpdate事件:


谢谢你,琼。我将该表达式添加到ControlSource中,但没有效果。当我输入日期时,句点保持空白。请参阅修改后的答案以使用#分隔符。谢谢Gustav。我在这两个领域都尝试过,但都会出错。要么是无效的条目,要么是我无法重现的其他错误。我怀疑绑定有问题,因为句点的字段是“unbound”。我必须做更多关于访问的研究。这似乎比我想象的要复杂。谢谢。不需要VBA。更新[Expense Date]文本框时,ControlSource中的DLookup应重新计算。它对我有用。只需获得正确的表达式语法和文本框引用即可。
`DLOOKUP(["From Date":"To Date","Expense Date","Period")`
Private Sub TextExpenseDate_AfterUpdate()

    If IsNull(Me!TextExpenseDate.Value) Then
        Me!Period.Value = Null
    Else
        Me!Period.Value = DLookup("Period", "Dates", "#" & Format(Me!TextExpenseDate.Value, "yyyy\/mm\/dd") & "# Between [From Date] And [To Date]")
    End If

End Sub