需要把数据库中下列sql查询出来的内容动态添加入combobox,应该怎么写呢?请尽量给出语句写法,本人菜鸟一名,谢谢!select proj_name from in_dbamn.project where proj_del='N'  and proj_id <> 0 order by proj_name

解决方案 »

  1.   

    循环添加:
    combobox.AddItem proj_name的内容
      

  2.   

    参考:    ssql = "select proj_name from in_dbamn.project where proj_del='N' and proj_id <> 0 order by proj_name"
        Set rc = server.CreateObject("adodb.recordset")
        rc.Open ssql, conn, 1, 1
        rc.movefirst
        If rc.RecordCount <> 0 Then
            While Not rc.EOF
                ComboBox.AddItem rc.fields("proj_name")
                rc.movenext
            Loop
       End If
      

  3.   


    恩谢谢你的帮助,我把你的东西和我的数据库信息结合起来写为下面这段内容,但是运行报错,麻烦请帮我看看什么问题,因为它报错如附图。
    另外我把你这句话给注释掉了,我怕和我之前的话重复,不知道是否正确,不过我试验后发现加上这句话也会报另外个错误。Private Sub UserForm_Initialize()           
        
    Dim cnOra As New ADODB.Connection
    Dim rsOra As New ADODB.Recordset
    Dim db_name As String
    Dim UserName As String
    Dim Password As StringSet cnOra = New ADODB.Connection
    Set rsOra = New ADODB.Recordsetdb_name = "iga4dtsi"
    UserName = "eopeo"
    Password = "eopeo"'打开连接
    cnOra.Open "DSN=" + db_name + ";UID=" + UserName + ";PWD=" & Password + ";"    
        
        ssql = "select proj_name from in_dbamn.project where proj_del='N' and proj_id <> 0 order by proj_name"
        'Set rsOra = server.CreateObject("adodb.recordset")
        rsOra.Open ssql, cnOra, 1, 1
        rsOra.MoveFirst
        If rsOra.RecordCount <> 0 Then
           Do While Not rsOra.EOF
                ComboBox1.AddItem rsOra.Fields("proj_name")
                rsOra.MoveNext
            Loop
        End If    
    End Sub
      

  4.   


    哦,数据库倒是无所谓的,你可以把那句话换成任意的你的数据库里面的sql语句,只要能成功查询出来,肯定通的。真的麻烦你啦~
      

  5.   

    combobox.AddItem(填入要加入的项目)
      

  6.   

    combobox.additem 要添加的名称
      

  7.   


        Dim cn As ADODB.Connection
        Dim RS As ADODB.Recordset
        
        Set cn = New ADODB.Connection
        Set RS = New ADODB.Recordset
        
        Set cn = CreateObject("ADODB.Connection")
        cn.Open "Provider=Microsoft.Jet.Oledb.4.0;Extended Properties=Excel 8.0;Data Source=E:\111.xls"
        
        Dim sSql As String
        sSql = "Select proj_name from [Sheet1$]"
        
        RS.Open sSql, cn, 1, 3
        
        RS.MoveFirst
        If RS.RecordCount <> 0 Then
            While Not RS.EOF
                ComboBox1.AddItem RS.Fields("proj_name")
                RS.MoveNext
            Wend
        End If    RS.Close: cn.Close
        Set RS = Nothing: Set cn = Nothing
    我没有用你的代码,随便写了一个,能用,并且正确,数据库用的Excel,e:\111.xls,没有用户名和口令,就在sheet1的第一列写了如下内容:
    proj_name
    aaa
    bbb
    sss
    dd
    eee
    rer你参考上改吧。
      

  8.   

    想请问下是不是引用图里面某个特定的库给oracle?
      

  9.   

    我找到错误的地方了:rs.MoveNext这句话
    报错:
      

  10.   

    哈,解决了rs.Open ssql, conn, 1, 1  改成 rs.Open ssql, conn, 0, 1就可以了adOpenForwardOnly 0 缺省值,启动一个只能向前移动的游标,也是速度最快的游标。
    adOpenKeyset 1 启动一个关键集类型的游标。
    adOpenDynamic 2 启动一个动态游标。
    adOpenStatic 3 启动一个静态游标网上查了下,不知道为何1 不行
      

  11.   

    CursorType 属性
          指示在 Recordset 对象中使用的游标类型。设置和返回值设置或返回以下某个 CursorTypeEnum 值。常量 说明 
    AdOpenForwardOnly 仅向前游标,默认值。除了只能在记录中向前滚动外,与静态游标相同。当只需要在记录集中单向移动时,使用它可提高性能。 
    AdOpenKeyset 键集游标。尽管从您的记录集不能访问其他用户删除的记录,但除无法查看其他用户添加的记录外,键集游标与动态游标相似。仍然可以看见其他用户更改的数据。 
    AdOpenDynamic 动态游标。可以看见其他用户所作的添加、更改和删除。允许在记录集中进行所有类型的移动,但不包括提供者不支持的书签操作。 
    AdOpenStatic 静态游标。可以用来查找数据或生成报告的记录集合的静态副本。另外,对其他用户所作的添加、更改或删除不可见。 
    说明使用 CursorType 属性可指定打开 Recordset 对象时应该使用的游标类型。Recordset 关闭时 CursorType 属性为读/写,而 Recordset 打开时该属性为只读。如果将 CursorLocation 属性设置为 adUseClient 则只支持 adUseStatic 的设置。如果设置了不支持的值,不会导致错误,将使用最接近支持的 CursorType。如果提供者不支持所请求的游标类型,提供者可能会返回其他游标类型。打开 Recordset 对象时,将更改 CursorType 属性使之与实际使用的游标匹配。要验证返回游标的指定功能,请使用 Supports 方法。关闭 Recordset 后,CursorType 属性将恢复为最初的设置。下表说明每个游标类型所需的提供者功能(由 Supports 方法常量标识)。 对于该 CursorType 的某Recordset  对于所有这些常量, Supports 方法必须返回 True 
    AdOpenForwardOnly 无 
    AdOpenKeyset AdBook、adHoldRecords、adMovePrevious、adResync 
    AdOpenDynamic adMovePrevious 
    AdOpenStatic adBook, adHoldRecords, adMovePrevious, adResync 
    注意   尽管对于动态游标和仅向前游标 Supports(adUpdateBatch) 可能是真,但对于批处理更新应使用键集游标或静态游标。请将 LockType 属性设置为 adLockBatchOptimistic,然后将 CursorLocation 属性设置为 adUseClient 以启用批更新需要的 OLE DB 游标服务。远程数据服务用法   当用于客户端 (ADOR) Recordset 对象时,只能将 CursorType 属性设置为 adOpenStatic。