我有一个手动创建的记录集如下
Dim rs As ADODB.Recordset rs.Open Dim Fields()As String
Fields(0) = "" Fields(1) = "January" Fields(2) = "February" Fields(3) = "March" Fields(4) = "April" Fields(5) = "May" rs.AddNew Fields rs.Close
我一直试图将它绑定到我的组合框,如下所示
combo1.RowSource = rs
combo1.BoundColumn = "Fields"
Set rs = Nothing
我在combo1.RowSource = rs
看到了编译错误请帮我将这个记录集绑定到我的组合框。提前致谢
答案 0 :(得分:1)
我假设您正在使用基于上述问题中提到的一组奇怪内容的DataCombo。
你尝试创建一个伪造的Recordset有点不对劲。您还需要选择或输入数据的“目的地”,因此您需要一个DataSource和DataField。
虽然很多害怕并厌恶 VB6数据绑定,但实际上并没有多少。它有助于参加一个涵盖该主题的正式VB6课程,但遗憾的是那些很长一段时间没有提供。教科书仍然可以使用,虽然现在看来任何人都可以做任何实际的学习似乎很多。
这里有几个Command按钮,一个DataCombo和一个多行TextBox:
Option Explicit
Private rsValues As ADODB.Recordset
Private rsData As ADODB.Recordset
Private Sub NewEnabled(ByVal Enable As Boolean)
DataCombo1.Enabled = Enable
cmdSave.Enabled = Enable
cmdCancel.Enabled = Enable
cmdNew.Enabled = Not Enable
cmdDump.Enabled = Not Enable
End Sub
Private Sub cmdCancel_Click()
rsData.CancelUpdate
NewEnabled False
End Sub
Private Sub cmdDump_Click()
With rsData
Text1.Text = vbNullString
Text1.SelText = "Records: " & CStr(.RecordCount) & vbNewLine
If .RecordCount > 0 Then
.MoveFirst
Do Until .EOF
Text1.SelText = CStr(.AbsolutePosition) _
& ": " & CStr(!Month.Value) & vbNewLine
.MoveNext
Loop
End If
End With
End Sub
Private Sub cmdNew_Click()
rsData.AddNew
rsData!Month.Value = vbNullString
NewEnabled True
End Sub
Private Sub cmdSave_Click()
rsData.Update
NewEnabled False
End Sub
Private Sub Form_Load()
Dim Month As Integer
Set rsValues = New ADODB.Recordset
With rsValues
.CursorLocation = adUseClient
.Fields.Append "MonthName", adVarWChar, 255
.Open
.AddNew Array(0), Array(vbNullString)
For Month = 1 To 12
.AddNew Array(0), Array(MonthName(Month))
Next
End With
Set rsData = New ADODB.Recordset
With rsData
.CursorLocation = adUseClient
.Fields.Append "Month", adVarWChar, 255
.Open
End With
With DataCombo1
.ListField = "MonthName"
Set .RowSource = rsValues
.DataField = "Month"
Set .DataSource = rsData
End With
End Sub
Private Sub Form_Unload(Cancel As Integer)
rsData.Close
rsValues.Close
End Sub
这很好用。然而,它可能不是你所追求的。真空中的某些代码很难说清楚,特别是当它似乎是 air code 并且接近正确时。
答案 1 :(得分:0)
在进一步研究之前,请先查看this。手动绑定控件非常简单,并避免在VB6数据绑定中遇到的各种微妙的麻烦。我在向客户提供的数千行vb6代码中只使用了一次数据绑定,这是为了解决微软DataRepeater控件中一个非常深奥的错误。