Dlookup条件语法

时间:2018-09-17 00:05:59

标签: sql access-vba ms-access-2010

我花了数小时在网上搜索,无法找到并回答我的语法错误的原因。我有一个包含许多记录的表,它们都使用Now()标记了日期。我正在使用以下代码来获取最新记录。

MaxDate = DMax("AuditDateTime", "Tbl_Data_Claim")

这很完美。现在,我正在尝试使用DLookup获取我想要的字段并将其放在表单中。

Me.Frm_Data_Claim_subform!TBSClaim_DOL = DLookup("[Claim_DOL]", "Tbl_Data_Claim", "[AuditDateTime] = " & [MaxDate] & "'")

我在查询表达式“ [AuditDateTime] = 9/16/2018 2:32:14 PM”中收到运行时错误“ 3075”语法错误(缺少运算符)。 该标准有效,因为我的时间戳显示在错误中。我相信这只是一个错误的报价或简单的东西。我尝试了各种排列,但似乎没有任何效果。预先谢谢你。

2 个答案:

答案 0 :(得分:2)

您的 DMax 返回一个日期值,而 DLookup 中的过滤器需要该日期值的字符串表达式

通用的方法(在美国以外也可以使用)是:

"[AuditDateTime] = #" & Format([MaxDate], "yyyy\/mm\/dd hh\:nn\:ss# & "#"

但是,您可以一劳永逸地避免格式化:

Me.Frm_Data_Claim_subform!TBSClaim_DOL = DLookup("[Claim_DOL]", "Tbl_Data_Claim", "[AuditDateTime] = DMax('AuditDateTime', 'Tbl_Data_Claim')")

请注意将双引号更改为单引号。

答案 1 :(得分:0)

提出问题后。我一直在寻找并找到答案,很好。我找到了一些接近的东西,然后对其进行了修改,直到它起作用为止。

public enum TaskSortType
{
    BY_NAME_ASC = 0,
    BY_NAME_DESC = 1,
    BY_UPDATED_DATE_ASC = 2,
    BY_UPDATED_DATE_DESC = 3,
}

因为变量是一个日期,所以我需要在#号中将其括起来。 希望这对其他人有帮助。