如何将手动创建的记录集添加为组合框的源

时间:2014-04-30 09:58:27

标签: combobox vb6

我有一个手动创建的记录集如下

  

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

看到了编译错误

请帮我将这个记录集绑定到我的组合框。提前致谢

2 个答案:

答案 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控件中一个非常深奥的错误。