问题描述
我有一个表单,一次显示一个记录,并允许通过在“文本框”和“组合框”中全部显示该记录来进行编辑。其中一些是基于查找字段的组合框,其中的值是从预设列表(多值字段)中提取的。
在那之后,我有了一个类模块,为记录中的每个字段定义了一个属性(一个FirstName属性,一个LastName属性,一个Address属性……您就知道了)。我有一个从类创建对象的函数,然后从表单中获取值并将它们分配给相应的属性。这对于大多数字段都适用,但是一旦到达第一个组合框(多项选择),它就会引发类型不匹配错误。我正在使用的代码是:
@(setlocal enableextensions enabledelayedexpansion
echo off
set "DRNode=DRDB01"
)
CALL :Main
( ENDLOCAL
CALL :End
EXIT /B 0
)
:Main
REM Loop Until the status of the cluster node indefinitly:
CALL :Do_Until_Status "%DRNode%" "Joining"
CALL :Restart_Cluster_Svc
CALL :Do_Until_Status "%DRNode%" "Up"
CALL :On_Status_Up
GOTO :EOF
:Do_Until_Status
cluster.exe node %~1 /status
cluster.exe node %~1 /status | FIND /I "%~1" | FIND /I "%~2" && ( GOTO :EOF)
GOTO :Do_Until_Status
:Restart_Cluster_Svc
REM stop the cluster service and start it using force quorum
net.exe stop clussvc
net.exe start clussvc /forcequorum
GOTO :EOF
:On_Status_Up
cluster.exe node DRDB01 /prop nodeweight=1 /prop:NodeWeight /status
cluster.exe node PDCDB01 /prop nodeweight=0 /prop:NodeWeight /status
cluster.exe node PDCDB02 /prop nodeweight=0 /prop:NodeWeight /status
GOTO :EOF
如果您想在ProfileObj对象的类模块中看到Property:
If Me.Issue <> vbNullString Then
ProfileObj.Issue = Me.Issue
End If
'Me.Issue is the comboBox on the form - this is in the forms module
'ProfileObj is the class instance
我也尝试使用Private ProfileIssue As String
'... other variable declarations
Property Get Issue() As String
Issue = ProfileIssue
End Property
Property Let Issue(rData As String)
ProfileIssue = rData
End Property
,Me.Issue.Value
和Me.Issue.Text
来引用组合框,但是这些都不起作用。我什至尝试使用Me.Issue.Column(0)
,但无济于事。如何将组合框中显示的所有内容分配给String变量?
解决方法
我知道了...
我需要从每个组合框的.Text
属性中读取文本。我已经在If
语句中进行了尝试,但没有进行If
语句建立的实际比较。该代码的工作版本现在显示为:
Me.Issue.SetFocus 'You have to set focus in order to read the text,dont ask me why
If Me.Issue.Text <> vbNullString Then 'This is where my code wasn't working
.Issue = Me.Issue.Text 'I had tried it here before,but the code never got there since the line before failed
End If