我在MS Access中有一个编码项目。有些开发人员将源代码编码和检查到SVN服务器。 由于SVN-Server用于管理代码,因此它可识别源代码文件中的更改。 在这些源代码文件中存在问题。 VBA经常更改大写和小写字母,我们不知道为什么。
当我提交时,即
'two examples
Call myfunction(txtNodeID)
rst![Username] = Environ("USERNAME")
另一位开发人员更新了他的存储库并使用了我的代码并将其更改为
'two examples
Call myfunction(txtNodeId)
rst![UserName] = Environ("USERNAME")
SVN认为这是一种变化。所以我们有很多改变的文件,虽然逻辑没有改变,但Access修改了大写和小写。
有谁知道Access为什么会这样做以及如何防止这种情况?
谢谢。
答案 0 :(得分:2)
VBA编辑器应该强制变量名称大小写与声明的变量名称相同。这意味着,您应该无法编写以下内容:
Dim someID As String
someId = "5"
它与功能相同。因此ENVIRON
变为Environ
。
但是,如果您不强制执行变量声明(顶部没有Option Explicit
),这可能会变得奇怪。然后编辑将很难知道哪个是正确的情况,并倾向于将所有内容更改为第一次出现。
解决方案是让所有开发人员使用Option Explicit
,因此显式声明每个变量,并且VBA编辑器知道哪个是正确的情况(并且还有许多其他优点)。为了避免怪癖,它们还应该使编辑的线在保存之前失去焦点(当检查发生时,这样你可以如果你真的想要做错了。如果你这样做,它可以改为触摸时的正确情况。)
答案 1 :(得分:1)
txtNodeID
更改为txtNodeId
,因为后者是以某种方式在程序中声明的。试试这件:
Sub TestMe()
someVariable = 5
End Sub
然后只在另一个模块上写Public SOMEVARIABLE
。 TestMe
子现在看起来像这样:
Sub TestMe()
SOMEVARIABLE = 5
End Sub
答案 2 :(得分:0)
对我来说,@ VincentG在此评论Access VBA changes uppercase & lowercase randomly
中有答案我在使用API的关键字而没有认识到这一点,我在对象/变量/元素中使用相同的名称而没有识别。 VBA变得混乱并转换资本化