combobox如何初始化下拉菜单
如题,如何在form_load的时候自动初始化combobox里的内容?内容条目从数据库中读取(数据库为excel)。注意:不是在list里添加,也不是用additem添加。也就是说每次初始化后里面的条目可能都不同?哪个老鸟指点一下! --------------------编程问答-------------------- 先读数据库下面直接添加
cmbKotei.Clear
For iCnt = 0 To P_lKoteiMstCnt(数据库里取得的纪录条数)
cmbKotei.AddItem P_typKoteiMst(iCnt).szKoteiName
Next iCnt --------------------编程问答--------------------
'==================================================================================================
'=名称:得到下拉列表框的数据(Cmb_List)
'=入口参数:
'=1).下拉列表框控件 类型:Control
'=2).原因类别ID 类型:String
'=3).类别(btyEditMode) 类型:Byte
'= 1.无参数:标准数据加载
'= 2.参数为2:标准数据查询
'=出口参数:空
'=功能:从SSQL中找到数据加载到下拉列表框中去
'=日期:2004-12-11
'=编程:谢荣
'=说明:在原因类别ID中的数据不能带"-"
'==================================================================================================
Sub Cmb_List(Combo As Object, sSQL As String, Optional btyEditMode As Byte, Optional btyOne As Byte)
Dim Rs As ADODB.Recordset
Dim lngStep As Long
On Error GoTo ErrH
Combo.Clear
Set Rs = Connection_GetRecordset(sSQL)
If Connection_ChkRsState(Rs) Then Exit Sub
lngStep = 0
With Rs
.MoveFirst
Do While Not (.EOF Or .BOF)
If btyOne = 1 Then
Combo.List(lngStep) = Trim(Rs.Fields(0))
lngStep = lngStep + 1
Rs.MoveNext
Else
Combo.List(lngStep) = Trim(Rs.Fields(0)) + strSplitCmb + Trim(Rs.Fields(1))
lngStep = lngStep + 1
Rs.MoveNext
End If
Loop
Combo.ListIndex = 0
End With
If btyEditMode = 2 Then
Combo.List(lngStep) = ""
Combo.ListIndex = -1
End If
Exit Sub
ErrH:
Err.Clear
Exit Sub
End Sub
'==================================================================================================
'=名称:得到下拉列表框的Text属性中取得ID(Cmb_ID)
'=入口参数:
'=1).下拉列表框控件 类型:Control
'=出口参数:空
'=功能:得到下拉列表框的Text属性中取得ID
'=日期:2004-12-11
'=编程:谢荣
'=说明:在原因类别ID中的数据不能带"-"
'==================================================================================================
Function Cmb_ID(Combo As Object, Optional Index As Byte = 1) As String
Dim xx As Variant
On Error GoTo ErrH
If Combo.Text = "" Then
Cmb_ID = ""
Else
xx = Split(Combo.Text, strSplitCmb)
If Index - 1 <= UBound(xx) Then '最大下标值小于输入值[证明有截取值]
Cmb_ID = xx(Index - 1)
Else '最大下标值大于等于输入值[证明有无截取值]返回无
Cmb_ID = "[无]"
End If
End If
Exit Function
ErrH:
Err.Clear
Exit Function
End Function
'==================================================================================================
'=名称:得到下拉列表框的Text属性中取得ID(Cmb_EditIndex)
'=入口参数:
'=1).下拉列表框控件 类型:Control
'=出口参数:空
'=功能:得到下拉列表框的Text属性中取得ID
'=日期:2004-12-11
'=编程:谢荣
'=说明:在原因类别ID中的数据不能带"-"
'==================================================================================================
Function Cmb_EditIndex(Combo As Object, sID As String) As Long
Dim lngCount As Long
Dim lngStep As Long
Dim xx As Variant
On Error GoTo ErrH
lngCount = Combo.ListCount - 1
For lngStep = 0 To lngCount
xx = Split(Combo.List(lngStep), strSplitCmb)
If sID = xx(0) Then
Cmb_EditIndex = lngStep
Exit For
End If
Next
Exit Function
ErrH:
Err.Clear
Exit Function
End Function
--------------------编程问答-------------------- 讀數據到RecordSet中
combo.Clear
Rst.MoveFirst
Do Until Rst.EOF
Combo.AddItem Rst.Fields("字段")
Rst.MoveNext
Loop --------------------编程问答-------------------- 晕,太复杂了!能不能讲简单点!我连接excle的方法是建立一个excel引用,用open命令打开然后在读相应的单元格。 --------------------编程问答-------------------- Private Sub Command1_Click()
Dim strExcelConn As String
Dim connExcel As New ADODB.Connection
Dim strSql As String
Dim rs As New ADODB.Recordset
strExcelConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.xls;Extended Properties='Excel 8.0;HDR=YES'" 'test.xls是excel文件名
connExcel.Open strExcelConn
strSql = "select * from [Sheet1$]" '工作簿名称为Sheet1
rs.Open strSql, connExcel, 3, 2
Do While Not rs.EOF
Combo1.AddItem rs("name") '字段名(即第一行的列名称)为name
rs.MoveNext
Loop
rs.Close
connExcel.Close
Set rs = Nothing
Set connExcel = Nothing
End Sub
补充:VB , 基础类