我创建了一个追加查询,然后我希望显示新追加的记录(在目标表中完成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可以查找最大ID(DMax()可以做到),运行追加查询,打开查询/表单/记录过滤到ID大于先前最大ID的记录的报告。这确实假设自动编号ID为正且正在增加,但这虽然不是我从未见过的保证,但不能保证。
非常简单的代码示例:
Dim lngID As Long
lngID = Nz(DMax("ID", "tablename"), 0)
DoCmd.OpenQuery "queryname"
DoCmd.OpenForm "formname", , , "ID>" & lngID
如果您想打开过滤查询,请选择:
查询中的动态参数-在具有最大ID的表单上设置未绑定的文本框,然后查询可以引用该文本框或代码设置TempVar并查询引用的那个
使用VBA中的QueryDefs修改具有过滤条件的查询对象