【发布时间】:2021-02-22 19:50:40
【问题描述】:
我是 Microsoft Access 的新手,一直在努力解决一个问题。
我正在使用表单根据表格 (UpdatedFiles) 搜索申请号。
我正在尝试让表单显示给定申请号的最新输入状态。但是,当我尝试这样做时,结果总是会提取给定申请号上最早输入的状态。
我的表单有代码,一旦保存记录,就会更新输入日期 (ENTRYDT)。
当我搜索应用程序编号 (APPID) 时,我基本上是在尝试使用最新的 ENTRYDT。 APPID 是表的主键。
我的代码如下所示:
Private Sub SearchCommand_Click()
Dim strfilapp As String
Dim strcheck As Variant
strfilapp = "[APPID] = " & "'" & Me!APPID & "'"
strcheck = DLookup("[APPID]", "UpdatedFiles", strfilapp)
If Not IsNull(strcheck) Then
On Error Resume Next
[APPID] = DLookup("[APPID]", "UpdatedFiles", strfilapp)
[LN] = DLookup("[LN]", "UpdatedFiles", strfilapp)
[FN] = DLookup("[FN]", "UpdatedFiles", strfilapp)
[PAPERAPP] = DLookup("[PAPERAPP]", "UpdatedFiles", strfilapp & "[ENTRYDT]" >= # LATEST #)
On Error GoTo 0
Else
Me.APPID = ""
MsgBox ("No file with an hyperlinked paper application found for your search. Searching for a file without...")
strcheck = DLookup("[APPID]", "InitialFiles", strfilapp)
If Not IsNull(strcheck) Then
On Error Resume Next
[APPID] = DLookup("[APPID]", "InitialFiles", strfilapp)
[LN] = DLookup("[LN]", "InitialFiles", strfilapp)
[FN] = DLookup("[FN]", "InitialFiles", strfilapp)
On Error GoTo 0
Else
Me.APPID = ""
MsgBox ("No file found for your search. Try again.")
Me.SearchField.SetFocus
End If
End If
End Sub
当我执行 APPID 搜索时,我不断获取第一次输入数据库的应用程序,而不是最新的应用程序(基于 ENTRYDT)。
我尝试将 ENTRYDT 添加到 [PAPERAPP] 行,作为 DLookup 中的参数,但似乎无法弄清楚如何去做。你能帮帮我吗?
谢谢!
【问题讨论】:
-
如果 APPID 是数字类型字段,请勿使用撇号分隔符。当 Me!APPID 中已经有 APPID 时,为什么还要为 APPID 执行 DLookup?
If Not IsNull(Me.APPID) Then。那为什么要将APPID字段设置为APPID呢?我没有看到使用 ENTRYDT。编辑问题以显示您的尝试。代码似乎在多条记录中重复名称信息 - 为什么? -
由于某种原因,APPID 存储为短文本... APPID DLookup 是因为我为此 IF ELSE 使用了两个不同的表。如果在 UpdatedFiles 表中找不到 APPID,它会查看原始表并从原始表中提取所有数据。原始表是实时更新的,并且 updatedfiles 表将在单个时间点对原始表进行快照。
-
我迷路了。两个 DLookup 都引用同一个表。表单绑定到哪个表?原始表(名称?)是不是累积数据?添加/更新/替换记录?那些 # 需要是引号内的文字文本。假设 ENTRYDT 是一个日期/时间字段,该字段不需要#,只需要条件参数。
-
表单绑定到 UpdatedFiles 表。 InitialFiles 是运行查询产生的累积数据。 UpdatedFiles 表有一个超链接字段,而 InitialFiles 字段没有。我们将 PAPERAPP 超链接到初始文件,这反过来使其成为更新文件。我希望只更新记录,而不是添加记录。但是,我还没有弄清楚该怎么做,因为该表会不断生成新记录,即使 APPID 已经在 UpdatedFiles 中。我还使用完整的 VBA 更新了原始帖子,以更好地展示表格搜索的工作原理。
-
Octothorpes 和 >= 引号内的运算符,还需要 AND:
& " AND [ENTRYDT] >= #" & [LATEST] & "#")
标签: vba ms-access record dlookup