如何通过vba查看访问表中的记录集?

问题描述:

在嵌入式访问vb编辑器的帮助下,我编写了一个小代码来分析我的数据库的字段值,并且想要最终查看打开访问中的表中的记录集。作为新手,我只能使用Debug.Print来显示字段名称。你能告诉我哪些语句/命令可以执行我的SQL字符串以查看带有值的结果记录集吗?如何通过vba查看访问表中的记录集?

Debug.Print FinalSQLString 
+0

是否有某些原因,您不能只使用数据表格并将SQL语句分配给它的RecordSource属性?你为什么认为你需要打开一个记录集来处理数据?这样做完全是滥用Access,并使自己的事情变得更加困难。 –

+0

访问也可以使事情变得更难:http://*.com/questions/5663918/how-to-stop-ms-access-to-change-my-sql-code –

据我所知,目前还没有办法显示包含VBA一个数据表记录集的实例。如果您的记录源是strQSL,你可以但创建一个表,你的结果,并打开一个,或更优雅,创建的QueryDef并打开它:

Sub ShowQd(strQdName As String, strSql As String) 
'creates queryDef and display it in a datasheet' 
    Dim qd As DAO.QueryDef 

    Set qd = CurrentDb.CreateQueryDef(strQdName) 
    With qd 
     .ReturnsRecords = True 
     .SQL = strSql 
    End With 
    DoCmd.OpenQuery strQdName 
End Sub 

如果你集中展示的东西,你可以还将ListBox放入表单中,将其列数设置为查询返回的字段数(qd.Fields.Count),并将strSql设置为ListBox的RowSource。 AND ...如果你把所有相关的代码放在这个表单中,你现在有一个表单,你可以导入任何分贝来快速显示你想要的东西:)
祝你好运!

+0

非常感谢!它的工作原理:-) – JohnMunich

+0

不客气。但rskar最终版本比我的要好。 –

+0

自A2000以来的表单具有可分配的Recordset属性,因此,确实可以打开记录集,打开数据表表单,然后将数据表表单的记录集设置为以代码打开的记录集。正如我在另一评论中所说的那样,每隔几个例子中就有任何实用工具(与仅指定数据表格表单的记录源属性相反),但实际上这是可能的。我能想到的唯一真正的用途是显示断开或合成的记录集。 –

这里是基本配方:

Dim db As Database 
Dim rs As Recordset 

Set db = CurrentDb 
Set rs = db.OpenRecordset("SELECT * FROM myTable") 

知道你正在使用Jet数据访问对象(DAO)与Access - 谷歌,对于细节。表示(rs.BOF and rs.EOF) = True表示没有行。

使用rs.MoveFirst, rs.MoveNext转到第一行和下一行。在rs.MoveNext之后测试rs.EOF;当True时,最后一行已经被处理。

rs(FieldName)返回名为FieldName(字符串表达式)的列的值。

rs(1)返回第二列的值。

完成后,rs.Close


无法手动访问RecordSet并将其显示在数据表视图中。相反,你必须创建一个QueryDef对象,并用它来执行查询并显示结果的数据表视图:

Dim qd As QueryDef 

On Error Resume Next 
CurrentDb.QueryDefs.Delete "temp" 
On Error GoTo 0 

Set qd = db.CreateQueryDef("temp", "SELECT * FROM myTable") 

DoCmd.OpenQuery "temp", acViewNormal, acEdit 
+0

@rskar感谢您的解释。使用哪个vb命令/脚本可以查看查询结果,如“SELECT * FROM myTable”? – JohnMunich

+0

哦 - 你的意思是你想要访问打开一个DataSheet? – rskar

+0

@rskar确切的,如何? – JohnMunich