Ms access MS Access 2010对象正在传递值而不是引用。。。有时
我为一个更大的MS Access数据库编写了一小段代码,该数据库喜欢行为不规则。我不能确定,但当我编译或重新编译数据库时,它似乎发生了变化。代码如下:Ms access MS Access 2010对象正在传递值而不是引用。。。有时,ms-access,ms-access-2010,Ms Access,Ms Access 2010,我为一个更大的MS Access数据库编写了一小段代码,该数据库喜欢行为不规则。我不能确定,但当我编译或重新编译数据库时,它似乎发生了变化。代码如下: Private Sub FindCtls() Dim DatType as String Dim thisCTL as Control DatType = Right(ActiveControl.Name, Len(ActiveControl.Name)-4) For Each thisCTL In Me.Controls If In
Private Sub FindCtls()
Dim DatType as String
Dim thisCTL as Control
DatType = Right(ActiveControl.Name, Len(ActiveControl.Name)-4)
For Each thisCTL In Me.Controls
If InStr(1, thisCTL.Name, DatType, 2) > 0 Then
Select Case Left(ThisCtl.Name,4)
Case "Sel_"
Set TgtCtls(0) = thisCTL
' A buncha other Cases
End Select
End If
Next thisCTL
End Sub
问题是,当我单步执行代码时,出于某种原因,thisCTL被作为控件的值传递,而不是控件本身。我到处都在寻找这个答案,这让我开始使用“Set”命令,而不仅仅是放置TgtCtls(0)=thisCTL。在我反编译数据库并重新编译它之前,这一直有效。做了一个更改(更改了第一个变量的名称),再次编译它,它就工作了。当我今天开始工作时,有人告诉我它已经不工作了。任何想法都将不胜感激
编辑:我忘了提到TgtCtls是一个表单范围的数组,它在顶部变暗了:
Option Compare Database
Dim TgtCtls(2) as Control
当他们说“它不起作用”时,你是什么意思。该值可能是控件的默认属性。为什么你认为它不起作用?看起来你引用了这个CTL的所有属性。我的意思是,用户告诉我有问题,我推断出了这个问题。问题是,当我尝试引用TgtCtl的任何属性时,它表示没有对象。我确实找到了一个解决办法,把它从一个子函数变成了一个函数,但是现在这已经变成了一个理论问题,为什么我把变量作为值而不是引用来传递。当他们说“它不工作”时,你是什么意思。该值可能是控件的默认属性。为什么你认为它不起作用?看起来你引用了这个CTL的所有属性。我的意思是,用户告诉我有问题,我推断出了这个问题。问题是,当我尝试引用TgtCtl的任何属性时,它表示没有对象。我确实找到了一个解决办法,把它从一个子函数变成了一个函数,但是现在这已经变成了一个理论问题,为什么我要把变量作为值而不是引用来传递。