【发布时间】:2012-05-13 02:36:51
【问题描述】:
我使用如下函数从交叉表查询中创建临时表。
Function SQL_Tester()
Dim sql As String
If DCount("*", "MSysObjects", "[Name]='tblTemp'") Then
DoCmd.DeleteObject acTable, "tblTemp"
End If
sql = "SELECT * INTO tblTemp from TblMain;"
Debug.Print (sql)
Set db = CurrentDb
db.Execute (sql)
End Function
我这样做是为了可以使用更多的 vba 将临时表转换为 excel,使用一些 excel 功能(公式等),然后将值返回到原始表 (tblMain)。我被绊倒的一个简单点是,在 Select INTO 语句之后,我需要向该临时表添加一个全新的附加列,但我不知道该怎么做:
sql = "Create Table..."
就像我知道如何做到这一点的唯一方法,当然这不适用于上述方法,因为我无法创建事后已经创建的表,我也无法创建它因为 SELECT INTO 语句方法会返回“表已存在”消息。
有什么帮助吗?谢谢大家!
【问题讨论】:
-
这听起来像是一个有问题的设计。首先,您不应该在应用程序的前端创建表。其次,重复的任务不应该经常需要改变目标表的结构。偶尔,当然,但不是理所当然的。确定导入格式,就可以完全避免这个问题。
-
这实际上是一个自动化部分,它通过我创建的临时访问应用程序调用 excel 中的财务功能,表格由我提供给它的查询制成。然而,导致问题的是让“幕后excel”方法发挥作用,结果又回到了桌面。所以我需要在这种动态方法中创建空字段,并将结果数据字段发送到表单(我的实际数据库)或 ppt 自动演示文稿等上。这是因为这个 excel 想法确实有效,但这是我知道的唯一方法...
-
...如何让它工作,因为我从食谱中学到了这个 excel 使用技巧。我还通过一系列类模块在 excel 中内置了一个自定义插件,这使我能够使用 excel 中的公式创建迷你图。所以我相信我也可以让上述概念与图表一起使用(它基本上只是将它们创建为形状,而不是 MS 图表)只需要找出如何将 OLE.copy 方法返回到表单而不是 rs.fields ....如果它做得很好,如果不是很好。我明白你在说什么,这都是非常非典型的自动化东西。
标签: ms-access vba ms-access-2003