我有一个ACCESS2000 的一个数据库pad,里面有一个表product,我想让combobox中的内容是来自表product中productname的这列的内容。怎么实现呀。详细点,我 是新手。谢谢了。

解决方案 »

  1.   

    用什么都行,ado 、data都行,
    主要是实现功能就可以,我可能没有说明白我的意思,就是最终的效果就像html中下拉列表的那种形式。但数据是来自数据库的。不是用"case"指定的。
      

  2.   

    思路是这样:查询出一个RECOEDSET,然后,做个循环添加
    Dim cnn As ADODB.Connection
    Dim db As ADODB.Recordset
    dim strsql as string
    private sub load_date()
        Set cnn = New ADODB.Connection
        set db =new adodb.resordset
        cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\pad.mdb;Persist Security Info=False"
        strsql="select productname from product"
        db.open strsql,cnn,adOpenDynamic, adLockOptimistic
        if db.eof then exit sub   '如果无返回内容
        do until db.eof
            combo1.additem db.fields(0)
            db.movenext
        loop
        db.close
    end sub
      

  3.   

    datacombo跟combobox控件外形是一样的。
    下面是代码:
    Dim conn As New ADODB.Connection
    Dim rs As New ADODB.Recordset
    conn.CursorLocation = adUseClient
    Set rs = New ADODB.Recordset
    Dim sql As String
    conn.Open DataConnectString  '你是数据库路径
    'group用来抒 相同数据中只取一个
    sql = "select productname from product group by productname order by productname"
    rs.Open sql, conn, adOpenDynamic, adLockOptimistic
    Set DataCombo1.RowSource = rs.DataSource
    DataCombo1.ListField = "producename"
    DataCombo1.Text = rs.Fields("producename")
      

  4.   

    lovebeethoven(小佛(闭关修炼中)) 
    你的方法不错,可是我一运行就说错误呀.
    实时错误:3709
    此连接无法用于此操作,在此上下文它能已经被关闭或无效
      

  5.   

    ljhdi() 你好:
    你说datacombo跟combobox控件外形是一样的。
    我怎么没有找到datacombo呀,在哪呀,是不是在,工程部件中加什么呀,能不能说得详细点呀.小弟刚学..不好意思呀.
      

  6.   

    cnn.CursorLocation = adUseClient
    在事件中加入这句试试
      

  7.   

    project->components
    把microsoft datalist controls(6.0)选中
      

  8.   

    Sub load_date()
         Dim cnn As ADODB.Connection
        Dim db As ADODB.Recordset
        Dim strsql As String
        Set cnn = New ADODB.Connection
        Set db = New ADODB.Recordset
        cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\pad.mdb;Persist Security Info=False"
        cnn.CursorLocation = adUseClient
        strsql = "select productname from product group by productname order by productname"
        db.Open strsql, cnn, adOpenDynamic, adLockOptimistic
        If db.EOF Then Exit Sub   'Èç¹ûÎÞ·µ»ØÄÚÈÝ
        Do Until db.EOF
            Combo1.AddItem db.Fields(0)
            db.MoveNext
        Loop
        db.Close
    End Sub我这样写的还是有问题呀。
    实时错误:3709
    此连接无法用于此操作,在此上下文它能已经被关闭或无效
      

  9.   

    ljhdi
    microsoft datalist controls(6.0)
    这个我加上了。我试试你的代码如何吧,
      

  10.   

    /*
    Sub load_date()
         Dim cnn As ADODB.Connection
        Dim db As ADODB.Recordset
        Dim strsql As String
        Set cnn = New ADODB.Connection
        Set db = New ADODB.Recordset
        cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\pad.mdb;Persist Security Info=False"
        cnn.CursorLocation = adUseClient
        strsql = "select productname from product group by productname order by productname"
        db.Open strsql, cnn, adOpenDynamic, adLockOptimistic
        If db.EOF Then Exit Sub   'Èç¹ûÎÞ·µ»ØÄÚÈÝ
        Do Until db.EOF
            Combo1.AddItem db.Fields(0)
            db.MoveNext
        Loop
        db.Close
    End Sub我这样写的还是有问题呀。
    实时错误:3709
    此连接无法用于此操作,在此上下文它能已经被关闭或无效*./
    上面的连接明显没有打开,你当然不能操作了在cnn.CursorLocation = adUseClient后加一个
     if cnn.state=0 then  cnn.open
      

  11.   

    行了,好,太好了!你能不能告诉我cnn.state=0这代表什么呀/cnn.CursorLocation = adUseClient 这又有什么作用呀。
      

  12.   

    Sub load_date()
         Dim cnn As ADODB.Connection
        Dim db As ADODB.Recordset
        Dim strsql As String
        Set cnn = New ADODB.Connection
        Set db = New ADODB.Recordset    '下里改为OPEN试试 
        cnn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\pad.mdb;Persist Security Info=False"
        cnn.CursorLocation = adUseClient
        strsql = "select productname from product group by productname order by productname"
        db.Open strsql, cnn, adOpenDynamic, adLockOptimistic
        If db.EOF Then Exit Sub   'Èç¹ûÎÞ·µ»ØÄÚÈÝ
        Do Until db.EOF
            Combo1.AddItem db.Fields(0)
            db.MoveNext
        Loop
        db.Close
    End Sub
      

  13.   

    还有呀, 我觉得ljhdi的用到的控件也不错,因为是学习吗?所以,我想有必要也把他的那段代码调试出来。各种方法都用用吧,还得请高人给指点一下吧就是下面的代码:
    Dim conn As New ADODB.Connection
    Dim rs As New ADODB.Recordset
    conn.CursorLocation = adUseClient
    Set rs = New ADODB.Recordset
    Dim sql As String
    conn.Open DataConnectString  '你是数据库路径
    'group用来抒 相同数据中只取一个
    sql = "select productname from product group by productname order by productname"
    rs.Open sql, conn, adOpenDynamic, adLockOptimistic
    Set DataCombo1.RowSource = rs.DataSource
    DataCombo1.ListField = "producename"
    DataCombo1.Text = rs.Fields("producename")//'你是数据库路径 
    这个注解我理解不了。换成什么呀/具体一下。举个例子。
      

  14.   

    我修改了一下上面 lovebeethoven(小佛(闭关修炼中)) 的代码:Dim cnn As ADODB.Connection
    Dim db As ADODB.Recordset
    dim strsql as string
    private sub load_date()
        Set cnn = New ADODB.Connection
        set db =new adodb.resordset
        cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path   & "\pad.mdb;Persist Security Info=False"
        cnn.open
        strsql="select productname from product"
        db.open strsql,cnn,adOpenDynamic, adLockOptimistic
        if db.eof then exit sub   '如果无返回内容
        do until db.eof
            combo1.additem db.fields(0)
            db.movenext
        loop
        db.close
        cnn.close
    end sub
    他没有把cnn打开。
      

  15.   


    DataConnectString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\pad.mdb;Persist Security Info=False"
    在我的代码
    前面加入这句就行了
      

  16.   

    好了,这两种方法都算是被各位搞定了。我在这里学到不少知识呀。
    谢谢各位。到现在,我又想问一个问题,什么时候用adodc控件或data控件来进行数据库相关的操作呀。在上面的例子中,各位大侠都没有用,只是一个劲的编程,就把问题给搞定了。?以后我用什么方法呀。怎么选择哟?请各位指条明路吧。,
      

  17.   

    我个人认为连接表不多时用ado连接比较好,表多的时候用ado怕乱,可以选择adodc控件,原理是一样的.data控件还是少用的好