填写datacombo而不使用ADO visual basic 6访问

时间:2015-07-31 21:14:26

标签: vb6

我需要填写datacombo而不使用ADO。我尝试这样做但触发了错误。

Private rs As Recordset
Private base As Database


Private Sub Form_Load()
  Set base = OpenDatabase("C:\Archivos de programa\Microsoft Visual Studio\VB98\nwind.MDB")
  Set rs = base.OpenRecordset("SELECT * FROM  Pedidos", dbOpenDynaset)
  'Control Datacombo
    '----------------
    Set DataCombo1.RowSource = rs
    ' campo a mostrar en el datacombo
    DataCombo1.ListField = "FechaPedido"
    DataCombo1.DataField = "FechaPedido"
    Set DataCombo1.DataSource = rs

End Sub

错误

这是错误  设置DataCombo1.RowSource = rs#类型不匹配

2 个答案:

答案 0 :(得分:1)

如果你不能使用硬壳旧的DBCombo,那么你需要摆脱你正在使用的更硬的旧DAO。那些只存在于VB6中,以便更容易将旧的VB5程序的初始端口转发到VB6,并且自1998年以来一直被弃用。

DataCombo不能绑定到DAO称之为" Recordset。"这些是数据绑定ADO控件。

答案 1 :(得分:0)

虽然Bob77说的是真的,但您也可以轻松地手动填充普通的ComboBox(而不是DataCombo盒子)"。只需遍历您的记录集,使用AddItem为您添加值。把它放在它自己的Sub中,并在需要时调用它。 (如果要更改值,您还必须先清空它。)

Do Until rs.EOF
    cmbMyComboBox.AddItem rs("MyBoxValue")
    rs.MoveNext
Loop

你可以做更多的事情。例如,您可以使用每行的.ItemData属性用整数标记它,如果您还没有使用整数,那么它可以是数据库中的键。这样,当用户选择一个时,您将拥有所选项目的密钥。

就个人而言,我从未在VB6或以前的版本中使用过DataCombo框或任何其他形式的数据绑定,因为我发现数据绑定比我自己做的更不可靠。 (这已经改变了.Net。)我一直都在使用这种技术。