2
MS 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
どこが間違っているのですか?
感謝。しかし、私はrs.movenextをあなたが提案した場所に移動しましたが、それでも各フィールドの最初の値だけを返しますか? – mccdo
はい。あなたが何をしようとしているのか分かりませんが、各fldではrs1を開いてループさせないので、決して動かないでしょう。 – Gustav