当一个recordset被open 了以后,如果我不使用绑定的方式,要将数据循环写到grid里,那么:Dim Rs As New ADODB.RecordsetRs.Open "select a ,b,c from aaa ",connFor i = 0 To Rs.RecordCount - 1
    ......
Next i这样我可以取出里面的数据什么的,
可是我怎么取出各个列的列名啊,就是说,我怎么得到这个a,b,c 啊?

解决方案 »

  1.   

    for each  aa in rs.fields
    debug.print aa.name
    next
      

  2.   

    我的网站上有源码,你可以看看。VB资料->查询“取得数据表中字段的属性”;====================
    免费的学习交流网站,欢迎大家访问!
    http://www.j2soft.cn/
      

  3.   

    '最好不要用rs.fields(1).name,这样太不灵活了
    grid单元格内容=rs.fields("a").name
    grid单元格内容=rs.fields("b").name
    grid单元格内容=rs.fields("c").name
      

  4.   

    '最好不要用rs.fields(1).name,这样太不灵活了
    grid单元格内容=rs.fields("a").name
    grid单元格内容=rs.fields("b").name
    grid单元格内容=rs.fields("c").name
    =========================================
    ???????????????????????????????
    爱谁谁。。
      

  5.   

    private Function FieldA() as string
        fieldA = rs.fields("a").value
    end function
    select a,b,c from table
    如果改成 select b,a,c from table 那么rs.fields(1).value就不对,而rs.fields("a").value就不受影响了。
      

  6.   

    m_pADORecordset.Open "Select " & "*" & " from " & "表", Conn, adOpenForwardOnly, adLockOptimistic
        m_pADORecordset.Requery
        
        Dim i As Integer
        Dim f As ADODB.Field
         For i = 0 To m_pADORecordset.Fields.Count - 1
            Set f = m_pADORecordset.Fields.Item(i)
            
                If i <> m_pADORecordset.Fields.Count - 1 Then
                    strFields = strFields & f.Name & ","
                Else
                    strFields = strFields & f.Name
                End If
            End If
        Next i
    '以上为获取列名,然后再重新打开If m_pADORecordset.State = 1 Then m_pADORecordset.Close
        m_pADORecordset.Open "Select " & strFields & " from " & "表", Con, adOpenForwardOnly, adLockOptimistic
        m_pADORecordset.Requery建议用用MSHFlexGrid.Recordset = m_pADORecordset的方法打开Recordset里面的东西
      

  7.   

    private Function FieldA() as string
        fieldA = rs.fields("a").value
    end function
    select a,b,c from table
    如果改成 select b,a,c from table 那么rs.fields(1).value就不对,而rs.fields("a").value就不受影响了。
    ========================================
    楼主要的是列名而不是值....
    再说,用rs.fields("a").的方法,自己都已经把字段名写出来了,还要再用多一个步骤来得到列名吗?????
      

  8.   

    private Function FieldA() as string
        fieldA = rs.fields("a").value
    end function
    select a,b,c from table
    如果改成 select b,a,c from table 那么rs.fields(1).value就不对,而rs.fields("a").value就不受影响了。
    ========================================
    楼主要的是列名而不是值....
    再说,用rs.fields("a").的方法,自己都已经把字段名写出来了,还要再用多一个步骤来得到列名吗?????
    ============================================
    呵呵,当然有必要了,FieldA只是一个虑拟的东西,在窗体代码里引用,万一数据库字段名变了,各个窗体中的代码也不用变啊,虽然VB不是面向对象的语言,但是我们做程序时还是要向面向对象靠齐。
      

  9.   

    private Function FieldA() as string
        fieldA = rs.fields("a").value
    end function
    select a,b,c from table
    如果改成 select b,a,c from table 那么rs.fields(1).value就不对,而rs.fields("a").value就不受影响了。
    ========================================
    楼主要的是列名而不是值....
    再说,用rs.fields("a").的方法,自己都已经把字段名写出来了,还要再用多一个步骤来得到列名吗?????
    ============================================
    呵呵,当然有必要了,FieldA只是一个虑拟的东西,在窗体代码里引用,万一数据库字段名变了,各个窗体中的代码也不用变啊,虽然VB不是面向对象的语言,但是我们做程序时还是要向面向对象靠齐。
    =================================================如果连数据库里的字段名都变了,例如“a”字段名字变成了“d”,用select a,b,c from table还能正常查得到table的数据吗???还能用rs.fields("a").的方法得到原来“a”字段的数据吗??
      

  10.   

    看大家说的有点眼晕。试试我这种方法
    以在listview控件中加columnheader为例dim i as integer
    For i = 0 To recEle.Fields.Count - 1
        lvwType.ColumnHeaders.Add , , recEle.Fields(i).Name
    Next irecEle.Fields.Count可以取出有多少个列
    recEle.Fields(i).Name可以取出每个列名我说明白了吗?
      

  11.   

    如果连数据库里的字段名都变了,例如“a”字段名字变成了“d”,用select a,b,c from table还能正常查得到table的数据吗???还能用rs.fields("a").的方法得到原来“a”字段的数据吗??
    -------------------
    呵呵,兄弟还要努力啊,数据连接一般是写在类里,或是COM里,只需要改一处地方就行了,如果你有十个窗体引用了该类,这十个窗体就不用改了,只要修改一下类就行了,改得越少代码的可靠性才性高