Set rd = New ADODB.Recordset
rd.Open ............................    '省略
        
Dim fldLoop As ADODB.Field
        
For Each fldLoop In rd.Fields
    Debug.Print "   " & fldLoop.Name & " = " & fldLoop.Value
    If fldLoop.Name = "a" Then
        fldLoop.Value = "b"
    End If
Next fldLoop能给我解释一下这个代码吗?后面那个for循环是什么意思啊?

解决方案 »

  1.   

    For Each fldLoop In rd.Fields
    枚举所有字段
    '-------------------
    也可以
    For I =0 to rd.Fields.count-1
    Debug.Print "   " & rd.Fields(i).name & " = " & rd.Fields(i).value
      

  2.   

    rd.Fields是Recordset所有字段的集合fldLoop.name 是字段的名称
    fldLoop.Value 是字段的值如楼上所说,读取集合的内容可以用For each循环,也可以用索引循环
      

  3.   

    读所有记录信息,那Debug.Print之后有个条件语句,是不是修改里面的数据?
    还有Debug.Print后有几个空格,是固定格式吗?还是为了好看?
      

  4.   

    If fldLoop.Name = "a" Then
            fldLoop.Value = "b"
        End If
    是修改数据
    ------------------------
    Debug.Print "   " & fldLoop.Name & " = " & fldLoop.Value
    是为了避免fldLoop.Name和fldLoop.Valuezai为NULL值
      

  5.   

    Debug.Print "   " & fldLoop.Name & " = " & fldLoop.Value
    请问这句如何避免fldLoop.Name和fldLoop.Valuezai为NULL值啊?加上了这句,当查询的记录中有null值时,还是会出错,情况如下:
     实时错误‘3021’:
     BOF或EOF中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录。何解??
      

  6.   

    Set rd = New ADODB.Recordset
    rd.Open ............................    '省略
            
    Dim fldLoop As ADODB.Field
            
    For Each fldLoop In rd.Fields
        '如果字段在記錄集的字段列中,就循環
        Debug.Print "   " & fldLoop.Name & " = " & fldLoop.Value
        '上面這一行的意思是用即時窗品輸出 fldLoop.Name 的名稱 加上 "="號,加上它的值 
        If fldLoop.Name = "a" Then
            fldLoop.Value = "b"
        End If
    Next fldLoop