我正在使用VBA宏来制作表格。首先,我输入日期“PeriodEnd”,此日期使用查询过滤基表。然后,我正在制作第二个表并用(a)查询结果填充该表,以及(b)基于查询记录和其他相关表的大约30个计算字段。
我的问题是我试图将PeriodEnd日期放在表名中,而我似乎无法使语法正确。我是VBA的初学者,所以感谢你的帮助。我的VBA如下所示:
....
Dim db as DAO.Database
Dim PeriodEnd as Date
Dim PerStr as String
Set db = CurrentDb()
PeriodEnd = #12/31/2013#
PerStr = Format(PeriodEnd, "yyyy-mm-dd")
db.Execute "CREATE TABLE TblName_" & PerStr _
& " (Field1 as LONG)
我用语法运行它,其中表名是静态的,我没有任何错误。当我使用变量表名运行时,我得到“运行时错误'3290':CREATE TABLE语句中的语法错误。”
另外,有没有更好的方法来构建它?这些表中唯一的区别是期末日期 - 以及不同期间结束日期对我在VBA中形成的基础计算的影响(SQL中不支持的函数)。
关于这是否应该构建为查询或报告的任何建议(没有报告经验)?
答案 0 :(得分:2)
您正在尝试创建一个名称中包含破折号的表格(因为日期格式)。您需要将该名称括起来。
db.Execute "CREATE TABLE [TblName_" & PerStr _
& "] (Field1 as LONG)"
还要确保在语句末尾加上引号,如上所述。
但请考虑使用变量来保存CREATE
语句。然后你可以Debug.Print
变量来检查你要求db引擎执行的语句。
Dim strDdl As String
strDdl = "CREATE TABLE [TblName_" & PerStr & "] (Field1 as LONG)"
Debug.Print strDdl
db.Execute strDdl