【发布时间】:2009-05-11 13:45:50
【问题描述】:
在 MS Access 中分配字符串文字有时会导致空字符串
以下代码
Public Sub test()
Dim myString As String
myString = "UPDATE "
Debug.Print "'" & myString & "'"
End Sub
结果
''
这把我吓坏了。它只是偶尔发生。其他时候 "UPDATE " 会起作用,但 myString = "tblCategorie" 不会。它必须是那个字符串。如果“UPDATE”失败,那么“update”仍然可以。
我使用的是 MS Access 2003 11.8204.8221 SP3 有人有同样的问题吗?
(在你说:转储访问之前!我们已经这样做了,但仍处于过渡阶段。我并不是真的期望任何人提出一个体面的答案,而是一个人希望)
[更新]:感谢所有cmets!让我说得很清楚
- 这不是错字。相同的代码有时有效,有时无效。
- 它是独立运行的,所以它不是全局变量问题。
- 我已将示例更新为失败/未失败的准确代码。这是一个文字副本。我通过将其粘贴到模块中并在直接屏幕中输入“测试”来对其进行测试。
- 它首先出现在过去半年完美运行的代码中,
- 确实是字符串赋值失败(我可以通过在赋值语句上加一个断点来检查)
- 我从text exports 生成我的数据库,所以它不会真的是一个损坏问题。 (可能是,但这不是我可以通过压缩等来修复的。)
【问题讨论】:
-
是不是Debug.Print有问题?尝试在监视窗口中查看变量的值。
-
为什么要用单引号将 SQL 字符串括起来?
-
@David W. Fenton:在将字符串打印到即时窗口时会这样做,以便更容易地对空白填充进行视觉检查。另外,我认为这只是一个例子;我的意思是,如果子过程的唯一目的是打印到(我们希望)用户永远不会看到的 VBA 即时窗口,为什么要将字符串文本读入字符串变量。
-
只是为了表明字符串是空的,没有空引号你会看到一个空行,并且不知道是否确实打印了一些东西。 (这是我的测试用例,它在没有任何干扰的情况下识别问题,而不是生产代码。这是我能写的最短的代码段,实际上失败了,并且清楚地表明它确实失败了)
-
@ondedaywhen:确实,你在我打字的时候回答了:)