【问题标题】:View Recently Appended Records in Destination Table查看目标表中最近添加的记录
【发布时间】:2019-10-30 05:15:44
【问题描述】:

我创建了一个追加查询,然后我希望显示新追加的记录(在目标表中完成 ID 自动编号)。

我尝试创建一个将原始表链接到目标表的选择查询,但这给我带来了问题,因为空字段或空白字段不匹配,并且唯一明确填写的字段之一(名称)可能匹配较早的记录(即这是一个合同表,一个合同可以具有相同的名称,终止,然后使用相同的名称创建一个新合同)。

有没有办法,可能使用 VBA,查看目标表中的最大 ID 号,运行追加查询,然后显示目标表中 ID 高于前一个最大值的所有记录?我知道如何使用 VBA 运行追加查询,但在查看最近追加的记录时遇到问题。

出现编译错误(参数数量错误或属性分配无效) - 我对 VBA 还是很陌生,所以也许我做错了。这是我的代码:

Private Sub Ctl310_apqry_Click()
Dim lngID As Long
lngID = Nz(DMax("ContractID", "Contracts"), 0)
CurrentDb.Execute "310 apqry Add New Contract Records"
DoCmd.OpenTable "Contracts", acViewNormal, acEdit, "ContractID>" & lngID
End Sub

【问题讨论】:

  • 无法以这种方式打开带有过滤条件的表或查询。这就是我的示例打开一个表单的原因。
  • 哦,可悲 - 表格无法在数据表视图中适合此表中的所有字段。我只需要做一个缩短的版本。该代码确实适用于表单 - 非常感谢您的帮助和专业知识!
  • 查看修改后的答案。

标签: vba ms-access append


【解决方案1】:

是的,VBA 可以查找最大 ID(DMax() 可以做到这一点),运行附加查询,打开过滤到大于前一个最大 ID 的 ID 的记录的查询/表单/报告。这确实假设自动编号 ID 是正数并且增加,这不应该是保证,尽管我从未见过其他情况。

非常简单的代码示例:

Dim lngID As Long
lngID = Nz(DMax("ID", "tablename"), 0)
DoCmd.OpenQuery "queryname"
DoCmd.OpenForm "formname", , , "ID>" & lngID

如果您更喜欢打开过滤查询,选项:

  1. 查询中的动态参数 - 在具有最大 ID 的表单上设置一个未绑定的文本框,然后查询可以引用该文本框或代码设置一个 TempVar 并查询该引用

  2. 在 VBA 中使用 QueryDefs 修改带有过滤条件的查询对象

【讨论】:

  • 编辑了我上面的帖子——你的代码看起来很简单,但它给了我一个编译错误——有什么想法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-07
  • 1970-01-01
  • 1970-01-01
  • 2014-07-21
  • 2022-01-09
  • 1970-01-01
相关资源
最近更新 更多