因此,假设我有一些类似下面的代码从另一个访问文件中提取数据:
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吗?
由于 贾斯汀
答案 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。