我的用户表单如下:
当我选择想要的数据库并单击选择时,它将带我到另一页:
所有这些复选框的创建取决于sql查询的输出。
在此示例中,SQL查询为:
ID NAME
8 AI_EQ
14 BB_EQ
19 DM_EQ
22 GD_EQ
以此类推...
我正在选择按钮中添加以下复选框(来自记录集rst
):
'creating checkboxes
If Not rst.EOF And Not rst.BOF Then
rst.MoveFirst
i = 0
Do
With MultiPage1.Pages(1).Controls.Add("Forms.Checkbox.1", "Checkbox" & i)
.Top = yPos
.Left = 7
.Caption = rst![name]
.Width = 450
.Height = 24
.WordWrap = True
.Value = False
yPos = yPos + 17
i = i + 1
rst.MoveNext
End With
Loop Until rst.EOF
End If
rst.Close
cnn.Close
Set rst = Nothing
Set cnn = Nothing
然后,我希望“完成”按钮考虑用户选择的任何复选框。例如,如果他选择了前两个,则我希望有“ 8,14” ID
,这样我就可以将它们添加到新的SQL查询中。
我想我必须创建一个数组来实现这一目标,而不仅仅是拥有rst![name]
。但是我创建它的尝试失败了,即使我正确地拥有了数组,我也不知道如何适应它以使其在选择ID
时返回NAME
。
这就是我试图创建数组的方式(但是它没有返回任何内容)
Dim MyArray() As Variant
For i = 0 To rst.RecordCount
MyArray = rst.GetRows(i)
rst.MoveNext
Next
任何提示/帮助将不胜感激。
答案 0 :(得分:2)
由于复选框是动态创建的,因此执行此操作。
.Tag
中是否有东西并将其存储在变量中。代码
Private Sub CommandButton1_Click()
Dim cCont As Control
Dim cbString As String
For Each cCont In Me.Controls
If TypeName(cCont) = "CheckBox" Then
If cCont.Value = True Then
If cCont.Tag <> "" Then
If cbString = "" Then
cbString = cCont.Tag
Else
cbString = cbString & "," & cCont.Tag
End If
End If
End If
End If
Next cCont
Debug.Print cbString
End Sub
但是要使其正常工作,请在创建复选框时,将.Tag
属性设置为ID
值。
With MultiPage1.Pages(1).Controls.Add("Forms.Checkbox.1", "Checkbox" & i)
'
'~~> Rest of the code
'
.Tag = rst![ID]
'
'~~> Rest of the code
'
End With
答案 1 :(得分:0)
正如悉达多(Siddharth Rout)所说:
'creating checkboxes
If Not rst.EOF And Not rst.BOF Then
rst.MoveFirst
i = 0
Do
With MultiPage1.Pages(1).Controls.Add("Forms.Checkbox.1", "Checkbox" & i)
.Top = yPos
.Left = 7
.Caption = rst![name]
.Width = 450
.Height = 24
.WordWrap = True
.Value = False
yPos = yPos + 17
.Tag = rst![ID]
i = i + 1
rst.MoveNext
End With
Loop Until rst.EOF
End If
rst.Close
cnn.Close
Set rst = Nothing
Set cnn = Nothing