myString =“UPDATE”导致空myString

时间:2009-05-11 13:45:50

标签: vba ms-access access-vba

在MS Access中,分配字符串文字有时会导致空字符串

以下代码

Public Sub test()
    Dim myString As String
    myString = "UPDATE "
    Debug.Print "'" & myString & "'"
End Sub

结果

''
这吓坏了我。它有时只会发生。其他时候“UPDATE”会起作用,但myString =“tblCategorie”不会。它需要完全是String。如果“更新”失败,那么“更新”仍然可以。

我正在使用MS Access 2003 11.8204.8221 SP3有没有人遇到同样的问题?

(在您说之前:转储访问权限!我们已经这样做了,但仍处于过渡阶段。我并不是真的希望任何人都能得到一个体面的答案,但是一个人可以希望)

[更新]:感谢所有评论!让我说得非常清楚

  1. 这不是拼写错误。相同的代码有时会起作用,有时则不起作用。
  2. 它是孤立运行的,所以它不是全局变量问题。
  3. 我已将示例更新为失败/未失败的确切代码。这是一个文字副本。我通过在模块中粘贴并在直接屏幕中键入“test”来测试它。
  4. 它首先出现在过去半年完美无缺的代码中,
  5. 实际上是失败的字符串赋值(我可以通过在赋值语句上放一个中断来检查)
  6. 我从text exports生成我的数据库,因此它不能真正成为腐败问题。 (可能是,但是我不能通过压缩等来解决这个问题。)

4 个答案:

答案 0 :(得分:1)

您使用的是On Error Resume Next,即分配失败了吗?也就是说,我不明白为什么String字面值String字符的赋值会失败,这就引出了一个问题:mySting真的输入为String吗?

更新:我从你的UPDATE(双关语意图?)看到我的猜测已经消失。我根本无法看到你的代码如何无法打印“UPDATE”以外的任何内容。也许您现在应该将此视为放弃动态SQL以支持预准备语句的机会,或者最好是PROCEDURES(当然,在ACE / Jet的存储过程中仅限于单个SQL语句,但至少它们保留SQL代码在正确的位置,即db)。

答案 1 :(得分:0)

您发布的代码是否是失败的代码副本或合理的传真?我想知道在释义中是否丢失了某些内容,因为我发现你发布的代码没有任何错误。

答案 2 :(得分:0)

只是一个盲目猜测......你确定你正确地输入了第二个“myString”吗?

因为你不这样做(例如

Debug.print "'" & mySting & "'"

)访问不会抱怨,但会创建一个空变量......

答案 3 :(得分:0)

转储访问! : - )

有些东西是FUBAR。你在数据库上尝试过压缩和修复吗?

我要尝试的另一件事是在VBA代码上运行一个copile(Debug-> Compile Access [X])。