2016-11-16 47 views
2

我想從MS Access中的多個表中的特定字段的集合中找到不同的值列表。但是,我的VBA代碼只返回每個字段的第一個值(而不是每個字段中不同值的完整集合)。請看下面:使用Access VBA找到不同的一組值使用Access VBA

Sub GetDistinctValues() 

    Dim tbl As DAO.TableDef 
    Dim fld As DAO.Field 
    Dim rs As DAO.Recordset 
    Dim rs1 As DAO.Recordset 

    Set rs = CurrentDb.OpenRecordset("Fields_To_Examine") 

    Do While Not rs.EOF 
    For Each tbl In CurrentDb.TableDefs 

     If tbl.Name = rs("Table_Name") Then 
     Debug.Print tbl.Name 

      For Each fld In tbl.Fields 
       If fld.Name = rs("Field_Name") Then 
       Debug.Print fld.Name 

        Set rs1 = CurrentDb.OpenRecordset("SELECT DISTINCT " & tbl.Name & ".Source_System, " & tbl.Name & "." & fld.Name & " FROM " & tbl.Name) 
        Debug.Print rs1(0), rs1(1) 

        rs.MoveNext 

       End If 
      Next 
     End If 
    Next 
    Loop 

    rs.Close 
    rs1.Close 

    Set rs = Nothing 
    Set rs1 = Nothing 

    End Sub 

有關我哪裏出錯的建議嗎?

回答

1

MoveNext將是場循環中,所以:

For Each tbl In CurrentDb.TableDefs 

    If tbl.Name = rs("Table_Name") Then 
    Debug.Print tbl.Name 

     For Each fld In tbl.Fields 
      If fld.Name = rs("Field_Name") Then 
      Debug.Print fld.Name 

       Set rs1 = CurrentDb.OpenRecordset("SELECT DISTINCT " & tbl.Name & ".Source_System, " & tbl.Name & "." & fld.Name & " FROM " & tbl.Name) 
       Debug.Print rs1(0), rs1(1) 

      End If 
     Next 
    End If 
Next 
rs.MoveNext 
+0

感謝您的反饋@Gustav。但是,我將rs.movenext移到了您建議的位置,但它仍然只返回每個字段中的第一個值? – mccdo

+0

是的。我不知道你在做什麼,但是對於每一個你只需打開rs1但不循環,所以它永遠不會移動。 – Gustav