使用变量来命名我正在制作的表

时间:2014-04-14 18:30:10

标签: vba ms-access access-vba ms-access-2013

我正在使用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中不支持的函数)。

关于这是否应该构建为查询或报告的任何建议(没有报告经验)?

1 个答案:

答案 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