MS Access - ADO记录集,使用SQL语句检索数据和构建表

时间:2010-11-03 18:12:38

标签: ms-access vba ado dao recordset

因此,假设我有一些类似下面的代码从另一个访问文件中提取数据:

Sub ADO_Recordset_OpenTable()
Dim rs As ADODB.Recordset
Dim cn As ADODB.Connection
Dim MyPath As String
MyPath = CurrentProject.Path

Set cn = New ADODB.Connection     
cn.Provider = "Microsoft Jet 4.0 OLE DB Provider"

cn.ConnectionString = "Data Source=C:\Users\Justin\Desktop\ExampleFile.mdb"
cn.Open

Set rs = New ADODB.Recordset
rs.Open "Schedule", cn, adOpenDynamic, adLockReadOnly, adCmdTable

' I would like to at this point build a table within the currentdb file 
'  with the data in the recordset. Either some kind of create table or
'  SQL INSERT?? Just trying to learn how to work with the data set

所以在这个例子中是我的评论。基本上想知道如何用记录集中包含的数据创建表。我想创建一个tabledef?但这是DAO对吗?而且我不能在日常生活中同时使用DAO和ADO吗?

由于 贾斯汀

3 个答案:

答案 0 :(得分:3)

您可以在同一过程中将ADO和DAO 用于不同的对象

您可以创建DAO.TableDef并检查记录集的Fields集合,创建与每个rs.Fields(i).Name和rs.Fields(i).Type

匹配的新TableDef字段

创建表结构(TableDef)后,可以遍历记录集行以构建和执行INSERT语句,以将行值存储在新表中。

但这对我来说似乎太过分了。我更喜欢Raj的SELECT INTO建议。但是,由于您已经知道了MDB的表名和路径,因此我首先会找到 DoCmd.TransferDatabase ,并且仅针对DAO根本无法执行或不能执行的任务执行ADO方便地作为ADO。

最后,如果您对此问题的主要兴趣是探索可能性,请查看记录集的Save方法。您可以使用adPersistXML保存,然后将保存的XML作为当前数据库中的新表导入。见Save Method (ADO)

答案 1 :(得分:2)

我用丑陋的方式完成了这个 - 解析传入的ADO记录集,构建CREATE TABLE语句并执行它,然后通过ADO数据集进行RBAR插入本地表。

您还可以创建一个直通查询,然后可以将其用于SELECT * INTO MyNewTable FROM MyPassThroughQuery

答案 2 :(得分:1)

您可以尝试ADOX