我想通过点击combo1中字段的名称,在combo2中显示字段的值。
在form_load中
Dim conn As New adodb.Connection
Dim rs As New adodb.Recordset
connstr = "......."
conn.Open connstr
rsstr1 = "select xm as 姓名,xb as 性别,jg as 籍贯,xl as 学历,sfzhm as 身份证号,nl as 年龄,zzmm as 党派,sszb as 所属支部,rdsj as 入党时间,zzsj as 转正时间,dl as 党龄,zc as 职称,dnzw as 党内职务,xzzw as 行政职务 from rsdtxx"
rsstr2 = "select * from rsdtxx"
rs.Open rsstr1, conn
For i = 0 To rs.Fields.Count - 1
    Combo1.AddItem rs.Fields(i).Name
Next
rs.Close
rs.Open rsstr2, conn    '因为字段名是字母,做一个数组与字段的中文名对应
ReDim a(rs.Fields.Count - 1)
For i = 0 To rs.Fields.Count - 1
    a(i) = rs.Fields(i).Name
    Text2(i).text = a(i)
Next
rs.Close
conn.Close在combo1的click事件中
i = Combo1.ListIndex
p = a(i)
Dim conn As New adodb.Connection
Dim rs As New adodb.Recordset
connstr = "....."
conn.Open connstr
rsstr1 = "select " & p & " from rsdtxx "
rs.Open rsstr1, conn
rs.MoveFirst
Text3.text = rs.RecordCount  '此处却发现记录集中无记录
For j = 0 To rs.RecordCount - 1 
    Combo3.AddItem rs.Fields(0).Value
Next
rs.Close
conn.Close哪里写错了吗?表中肯定是有记录的。
另外问一下,我如何将记录集绑定到datagrid控件上呢?

解决方案 »

  1.   

    另外问一下,我如何将记录集绑定到datagrid控件上呢?
    ---------------------
    直接写:Set DataGrid1.DataSource=rs
      

  2.   

    应该是你没有设置客户端游标,得到的rs.RecordCount都会是 -1。
      

  3.   

    你在SQL上执行你的SQL语句就知道到底是程序写错了还是SQL语句写错了。
      

  4.   

    Private Sub Form_Load()
        Dim conn As New adodb.Connection
        Dim rs As New adodb.Recordset
        connstr = "......."
        conn.CursorLocation = adUseClient '----->设置客户端游标
        conn.Open connstr
        rsstr1 = "select xm as 姓名,xb as 性别,jg as 籍贯,xl as 学历,sfzhm as 身份证号,nl as 年龄,zzmm as 党派,sszb as 所属支部,rdsj as 入党时间,zzsj as 转正时间,dl as 党龄,zc as 职称,dnzw as 党内职务,xzzw as 行政职务 from rsdtxx"
        rsstr2 = "select * from rsdtxx"
        rs.Open rsstr1, conn
        For i = 0 To rs.Fields.Count - 1
            Combo1.AddItem rs.Fields(i).Name
        Next
        rs.Close
        rs.Open rsstr2, conn    '因为字段名是字母,做一个数组与字段的中文名对应
        ReDim a(rs.Fields.Count - 1)
        For i = 0 To rs.Fields.Count - 1
            a(i) = rs.Fields(i).Name
            Text2(i).Text = a(i)
        Next
        rs.Close
        conn.Close
    End Sub
    Private Sub Combo1_Click()
        i = Combo1.ListIndex
        p = a(i)
        Dim conn As New adodb.Connection
        Dim rs As New adodb.Recordset
        connstr = "....."
        conn.CursorLocation = adUseClient '------>设置客户端游标
        conn.Open connstr
        rsstr1 = "select " & p & " from rsdtxx "
        rs.Open rsstr1, conn
        rs.MoveFirst
        Text3.Text = rs.RecordCount  '此处却发现记录集中无记录*************因为你没有设置客户端游标
        For j = 0 To rs.RecordCount - 1
            Combo3.AddItem rs.Fields(0).Value
        Next
        rs.Close
        conn.Close
    End Sub
      

  5.   

    谢谢。又产生了另一个问题。
    我通过4个combo选择了比如这样一个条件“党派=农工民主党 和 职称=副主任医师”
    SQL语句应该是这样写select * from rsdtxx where 党派='农工民主党' and 职称='副主任医师'。这在程序中要怎么写呀?尤其是这几个单引号,这么写"'"程序会报错。
      

  6.   


    strSQL="select * from rsdtxx where 党派='农工民主党' and 职称='副主任医师'"
    应该没问题的,能报什么错?
      

  7.   

    问题是这些都是通过combo控件选出来的,对应的是
    combo1.text & combo2.text & combo3.text &combo4.text......
    党派          =             农工民主党   和         ......
    应该是写成这样吧"select......where "& combo1.text & combo2.text & "'" & combo3.text & "'" & combo4.text
    问题在后面这两个"'",程序说错了。
      

  8.   

    '是不是这样?
        Dim strsql As String
        strsql = "select......where " & _ 
                Combo1.Text & "='" & Combo2.Text & "' and " & _ 
                Combo3.Text & "='" & Combo4.Text & "'"
      

  9.   

    是这样:"select ... where 党派='" & Combo1.Text & "',and 职称='" & Combo2.Text & "'"还是这样:
    "select ... where " & Combo1.Text & "='" & Combo2.Text & "',and " & Combo3.Text & "='" & Combo4.Text & "'"
      

  10.   

    党派由combo1选出,=由combo2选出,值由combo3选出,和由combo4选出,
    问题在于combo3选出的值要加''号,
    我写成......... & "'" & combo3.text & "'" ......
    程序运行告诉我这两个引号的地方写得不对。我不知道该怎么写才对。
      

  11.   

    那应该是这样:
    "select ... where " & combo1.Text & Combo2.Text & "'" & Combo3.Text & "' " & Combo4.Text & " "
      

  12.   

    记得 and 的左右两边有空格