ms-access - 当字段名称是动态时vba制作表格

标签 ms-access dynamic-data

我有一个交叉表查询,它使用动态日期函数来生成列标题和字段名称。例如:ForecastPeriod:DateAdd("m",[Period],[StartDate]) 这意味着每次运行交叉表查询时,我最终都会得到不同的字段名称。 我需要获取此交叉表的结果,并将其与其他 3 个类似交叉表的结果相结合以创建一个新表。现在我使用一个 make table 查询和 3 个追加查询。我这样做的原因是在预测期间的范围内为每个 Material 项目包含 4 个不同类别的数据。

结果看起来像这样:

Material 类别Per1值...Per2值......Per24值

MatA 需求 0 ... 10 ....... 0

MatA 需求美元 $0 ... $10 .... $0

MatA 预测 10 ... 20 .... 50

MatA 预测美元 $10 ... $20 .... $50

问题在于,生成表查询已经根据当前交叉表查询的结果构建。当我下个月运行交叉表时,结果将具有不同的字段名称。因此,我不得不手动更改 make 表查询设计中的周期,删除不再出现在结果中的周期并添加新的周期。

有没有办法使用 VBA 创建新表,而无需在交叉表运行之前知道字段名称?

或者有没有办法对字段名称进行编码或在运行后从交叉表中提取它们?

如果我使用如下代码: strSQL = "选择 tblForecast.Material, tblForecast.Category, tblForecast.X "& _ “进入 tblTemp ” & _ “来自 tblForecast;”

我真的不知道 tblForecast.X 实际上会被称为什么。可能是 11/1/08 或 12/1/08 等。

如果我声明一个变量来保存字段名称并使用日期代码来更改它,如何将其添加到表中?我会使用 Alter Table 吗?

我确信这是可以做到的,我只是不知道如何去做,所以任何帮助将不胜感激!谢谢!

最佳答案

VBA 创建镜像查询列的表:

Dim db As DAO.Database
Dim tdf As DAO.TableDef
Dim qdf As DAO.QueryDef
Dim fld As DAO.Field
Dim SourceField As DAO.Field

Set db = CurrentDb

'Create a new tabledef
Set tdf = New DAO.TableDef

'Reference existing, saved querydef
Set qdf = db.QueryDefs("Query1")

tdf.Name = "Table2"

'iterate fields in the query and create fields in the new tabledef
For Each SourceField In qdf.Fields
    Set fld = tdf.CreateField(SourceField.Name, SourceField.Type, SourceField.Size)
    tdf.Fields.Append fld
Next

'Table is created and saved when the tabledef is appended to the current db
db.TableDefs.Append tdf

关于ms-access - 当字段名称是动态时vba制作表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/302958/

相关文章:

excel - 从 MS Access 中将交叉表查询结果导出到 Excel

将 CSV 导入 Access 的 Java 代码

java - 如何在不改变驱动程序或应用程序的位版本的情况下解决使用java Access ms-access时的体系结构差异问题

python - 动态生成.doc文件

asp.net - 如何在 ASP.NET 动态数据中仅隐藏列表页上的列?

vba - 有没有办法模拟从模态/弹出表单激活的表单

sql-server - 以非编程方式处理 SQL Server 数据的最佳方式是什么?

javascript - 当边界发生变化时,如何向 Google map 动态添加点?

ios - objective-C - 如何在我的 TableView 中保留内存中的动态控制对象

mvvm - ReactiveUI 和 DynamicData SourceCache 更新问题