Ms access MSAccess:是否将Recordsetclone中的ItemId获取到新表中?

Ms access MSAccess:是否将Recordsetclone中的ItemId获取到新表中?,ms-access,vba,Ms Access,Vba,我有一个AccessDB应用程序,需要将当前用户应用的过滤器的ItemID抓取到一个新表中,以便在下游使用。使用子窗体数据表.recordsetclone属性,我可以看到所需的记录集.recordcount报告正确的记录数。否则,以下操作将不会生成所需的临时表,AccessVBA也不会抱怨 Dim db As DAO.Database Dim rstItemIDs As DAO.Recordset Dim strSQL as String Set db = CurrentDb set

我有一个AccessDB应用程序,需要将当前用户应用的过滤器的ItemID抓取到一个新表中,以便在下游使用。使用子窗体数据表.recordsetclone属性,我可以看到所需的记录集.recordcount报告正确的记录数。否则,以下操作将不会生成所需的临时表,AccessVBA也不会抱怨

 Dim db As DAO.Database
 Dim rstItemIDs As DAO.Recordset
 Dim strSQL as String
 Set db = CurrentDb

 set rstItemIDs = Forms!Mainform![Data subform].Form.RecordsetClone
 msgbox rstItemIDs.recordcount  'reports the correct result 

 strSQL = "SELECT rstItemIDs.ItemID INTO tempTable FROM rstItemIDs;"
 db.Execute strSQL
是否可以针对dao.recordset构造SQL选择查询


感谢您提供的所有指针。

Access SQL将不接受DAO或ADODB记录集作为查询的数据源

然而,我感到困惑的是,当您尝试时,Access并没有抱怨。每次尝试复制您的示例代码时,都会出现错误3078,Microsoft Access数据库引擎无法找到输入表或查询“rstItemIDs”。确保它存在并且其名称拼写正确

即使DoCmd.SetWarnings False也没有抑制该错误消息

如果您对替代方案感兴趣,您可以持久化诱惑,而不是每次都创建一个新版本,然后删除其内容并通过RSTITEMID将每个值添加到第二个记录集中。虽然这是一个RBAR行,但对于一个小的记录集来说可能不会太痛苦

基于集合的方法可以是基于表单的.RecordSource和.Filter属性创建查询。例如,如果我的表单的.RecordSource为SELECT*FROM foo,而当前表单的.Filter为id>10,这将给我一个SELECT,返回表单的过滤记录:

ReplaceMe.RecordSource、;、&vbcrlf和&Me.过滤器
HansUp-非常有帮助!您的评论提示我尝试使用子窗体的.Filter属性作为makeTable查询的基础。我已经在其他地方使用过RBAR方法,但这些方法在扩展方面失败得很惨。这种方法似乎和预期的一样有效,即使是在更大的数据集上。