【问题标题】:Use a variable to name a table I am making使用变量来命名我正在制作的表
【发布时间】:2014-04-15 02:44:20
【问题描述】:

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

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

【问题讨论】:

  • 这可能会更好,因为只有一个表有 2 个字段: period_end;和Field1?在我看来,您建议的每个表名都可以作为一个主表中的一个字段来处理。

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


【解决方案1】:

您正在尝试创建一个名称包含短划线的表(因为日期格式)。您需要将该名称括起来。

db.Execute "CREATE TABLE [TblName_" & PerStr _
    & "] (Field1 as LONG)"

还要确保在语句的末尾加上引号,就像我在上面所做的那样。

但考虑使用变量来保存您的CREATE 语句。然后您可以Debug.Print 变量来检查您要求数据库引擎执行的语句。

Dim strDdl As String
strDdl = "CREATE TABLE [TblName_" & PerStr & "] (Field1 as LONG)"
Debug.Print strDdl
db.Execute strDdl

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 2013-03-05
    • 1970-01-01
    • 2018-05-06
    • 1970-01-01
    • 2016-01-14
    • 1970-01-01
    相关资源
    最近更新 更多