【发布时间】:2010-11-12 18:06:11
【问题描述】:
我正在尝试运行将字段复制到新表中的代码,将它们从_New 表移动到原始表。执行此操作的 VBA 代码如下所示:
SQLStatement = CStr("INSERT INTO " & TName & " SELECT * FROM " & TName & "_New")
Log.WriteLine "Running query with string """ & SQLStatement & """ "
QueryTimer = Timer
DoCmd.RunSQL SQLStatement
Log.WriteLine "Query time: " & (Timer - QueryTimer)
日志只是我放在一个类模块中的几个过程。它的错误输出是
@142921: Running query with string "INSERT INTO Records SELECT * FROM Records_New"
@142941: Error Date/Time: 7/21/2009 2:29:40 PM
@142941: Error # & Description: 3162, You tried to assign the Null value to a variable that is not a Variant data type.
我可以确认 TName 和 SQLStatement 在 SQL 操作运行时都是有效的字符串,并且源(Records 和 Records_New)都是有效的。 Option Explicit 设置在文件的其他位置,以避免因拼写错误而造成混淆。错误在DoCmd 行抛出。
即使DoCmd.RunSQL 没有返回值,为什么它会有一个Null 值?
【问题讨论】:
-
在哪一行抛出错误?您可以尝试在代码顶部添加“选项显式”并查看它是否仍然可以编译?
-
添加信息以回答您的问题。
-
您是否尝试直接运行查询(在您的代码之外)。它可能会对问题有所帮助。
标签: sql ms-access ms-access-2007 vba