【发布时间】:2019-06-06 18:03:19
【问题描述】:
我需要从我的访问数据库中导出一个查询到 excel。为了确保我得到正确的信息,我必须遵守一些规则和条件。
最大的障碍是必须选择要导出的对象名称。我正在为 8 个城镇管理一个系统,每个城镇的系统都有多个命名约定。我需要导出显示城镇要求的命名约定的信息。
我首先要做的是创建包含我需要的所有信息的查询。然后我确实从查询中创建了表,并将其导出为表。从那里我使用 TableDef 将名称字段的名称(例如 = “name1” 到 “Name”)更改为更专业的外观。最后根据需要存在的名称,我删除不需要的字段名称并导出到 excel。
我发现这个 QueryDef 以相同的方式运行,但在重命名字段时出现问题。
Select Case displayName
Case Is = "Name 1"
db.QueryDefs(queryName).Fields("name1").name = "Name"
db.QueryDefs(queryName).Fields("name2").VisibleValue = False
Case Else
MsgBox ("Name does not extist in system")
End Select
我希望“name1”字段为“名称”,但我收到“无效操作错误”
【问题讨论】:
-
我强烈建议不要为 Excel 报告运行像
ALTER这样的 DDL 命令。我不了解您的许多问题,因为所有问题都可以通过查询处理:您可以使用AS运算符通过查询更改列名(无需更改表名);您可以在SELECT子句中指定所需的列(无需删除列);并且您可以将 Access 查询导出到 Excel(无需创建表格)。 -
我不想执行
docmd.CreateQuery命令并对查询进行硬编码。稍后将添加更多信息并可能删除。您似乎也无法在查询的设计视图中执行选择案例并允许它选择要显示的名称。我的解决方案是修改 VBA 中的查询以获取我需要的条件,并允许它在我输入各种名称参数时动态更改。一旦修改后导出到excel。至于ALTER,我执行它来修改并让访问表包含导出到 Excel -
再一次,您所说的一切都可以在不使用表或使用
ALTER重命名和删除列的情况下完成。请编辑您的帖子并显示(而不是告诉)更改查询的特定例程。我们可以向您展示解决方案,而无需接触原始表格。 -
我删除了我目前拥有的,只显示了我想要实现的目标
-
对不起,我只关注案例 1