我需要填写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#类型不匹配
答案 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。)我一直都在使用这种技术。