当前位置:编程学习 > VB >>

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 ,  基础类
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,