我用的是sqlserver2000,现在在数据库中创建了一个表:idnameinfo,包括两个字段:id,name。现在想在一个页面上使用下拉选择框将name全部显示出来以便选择,但当点击窗口确定按钮时,需要根据这个选择的name的值得到id,不知如何实现呢?

解决方案 »

  1.   

    学会用ItemData这个属性:)Option ExplicitPublic Conn As New ADODB.Connection
    Public Rs As New ADODB.RecordsetPrivate Sub cmdOK_Click()
      MsgBox Me.Combo1.Tag
    End SubPrivate Sub Combo1_Click()
        Me.Combo1.Tag = Me.Combo1.ItemData(Me.Combo1.ListIndex)
    End SubPrivate Sub Form_Load()
        Dim strConn As String
        strConn = "Provider=SQLOLEDB.1;Persist Security Info=True;User ID=sa;Initial Catalog=pubs;Data Source=LocalHost"
        Conn.CursorLocation = adUseClient
        Conn.Open strConn    If Rs.State <> adStateClosed Then Rs.Close
        Rs.Open "select * from jobs", Conn, adOpenStatic, adLockOptimistic    Me.Combo1.Clear    Do While Not Rs.EOF
            Me.Combo1.AddItem Trim(Rs(1) & "")
            Me.Combo1.ItemData(Me.Combo1.NewIndex) = Trim(Rs(0) & "")
            Rs.MoveNext
        Loop
    End Sub
      

  2.   

    莫衣老师的不错,通过Combo1.ItemData,Combo1可以变为2维的了。我以前的方法是,将记录集读到数组,显示相对应的值。
    一个Form1,Combo1,AdoDc1
    ADODC1选择连接你的SQL数据库,ADODC1的记录源选择你的表idnameinfo,Dim x() '通用位置的声明Private Sub Combo1_Click() '下拉列表代码,选择NAME,显示输出ID
    i = Combo1.ListIndex
    MsgBox x(1, i)
    End SubPrivate Sub Form_Load() 
    Adodc1.Refresh
    n = Adodc1.Recordset.RecordCount
    Combo1.Clear
    If n > 0 Then
        ReDim x(1, n - 1)
        For i = 0 To n - 1
            x(0, i) = Adodc1.Recordset("name")
            x(1, i) = Adodc1.Recordset("id")
            Adodc1.Recordset.MoveNext
            Combo1.AddItem x(0, i)
        Next
    End IfEnd Sub