使用VBA在Access 2010中创建动态表

Sor*_*ren 4 ms-access access-vba ms-access-2010

我有一个带有VBA模块的Access 2010数据库,可以对数据进行一些统计分析.SQL无法生成统计分析的结果,但它们可以以表格格式显示.现在,我可以在立即窗口中运行VBA函数,它将循环结果并使用Debug.Print()将它们写入终端.

我希望将此函数的结果提供给Access的其余部分,以便我可以从结果表中创建查询和报告.所以我正在寻找的是如何将我的函数变成一个"动态表" - 一个实际上不存储数据的表,但存储运行的VBA函数并在使用该表时动态填充表数据.

我花了很多时间来查看通过MAKE TABLE查询动态创建表或在VBA中使用DDL,但所有这些示例都使用SQL从现有记录创建新表.我不能使用SQL来生成结果,所以我不确定如何将结果强制转换为Access将识别的对象.部分问题是我对Access VBA术语不够熟悉,无法知道我应该寻找什么.

我的声明只是"Public Function GenerateSchedule".它有三个代码块:第一个使用查询从数据库中提取我需要的数据,并将RecordSet处理成一个数组.第二个块对阵列执行统计分析,第三个块将分析结果打印到终端.我想用一个块替换第三个块,该块将结果作为一个表,可供其余的Access使用.

THE*_*HEn 8

如果我不想使用DDL和SQL查询,我使用以下代码...

Set dbs = CurrentDb        
Set tbl = dbs.CreateTableDef("tbl_Name")
Set fld = tbl.CreateField("Field1", dbText, 255)
tbl.Fields.Append fld
Set fld = tbl.CreateField("Field2", dbText, 255)
tbl.Fields.Append fld
Set fld = tbl.CreateField("Field3", dbInteger)
tbl.Fields.Append fld
Set fld = tbl.CreateField("Field4", dbCurrency)
tbl.Fields.Append fld
dbs.TableDefs.Append tbl
dbs.TableDefs.Refresh
Run Code Online (Sandbox Code Playgroud)

如果你想添加你可以做的记录

Dim dbs As DAO.Database
Dim rs As DAO.Recordset

Set dbs = CurrentDb
Set rstVideos = dbs.OpenRecordset("tbl_name")

rs.AddNew    
rs("field1").Value = "TEST "   
rs("field2").Value = "TEXT"   
rs("field3").Value = 1991
rs("field4").Value = 19.99

rstVideos.Update
Run Code Online (Sandbox Code Playgroud)