2016-11-11 5 views
0

私は自分のコードでちょっとしたロードブロッキングをしています。配列のユニークな値をチェックして、出力csv(ループとアクセスvba)

私はアクセスクエリをループして、フィールド(この場合はUtilityDunsNumber)からすべての一意の値を見つけ出し、それらを配列に配置し、その中の各DunsNumberに対して別のクエリを実行する必要がありますその新しいクエリのすべてのレコードを含むCSVファイルを出力し、ループバックして各ダンサンバのファイルを作成します。

ここで私がこれまで持っているコードです:

Private Sub Command0_Click() 
    Dim db As DAO.Database 
    Dim records() As DAO.Recordset 
    Dim duns() As String 
    Dim i As Integer 

    Dim fs As String 


    fs = "C:\TestECI\IN_572_COMPANY_" & Format(Now(), "yyyymmdd") & "_814EN01_" 



    Set records = db.OpenRecordset("SELECT * FROM qry_RequestECI") 

    'loop through records, get list of unique DUNS numbers 
    'get unique duns 
    For Each Record In records 
     If IsInArray(Record.UtilityDunsNumber, duns) Then 
      continue 
     Else 
      ReDim Preserve duns(1 To UBound(duns) + 1) As String 
      ' add value on the end of the array 
      arr(UBound(arr)) = Record.UtilityDunsNumber 
     End If 
    Next 

    For Each UtilityDunsNumber In duns 
     Set records = db.OpenRecordset("SELECT * FROM qry_RequestECI WHERE UtilityDunsNumber =" & dun) 
     i = 2000 
     fs = fs & i & ".csv" 
     DoCmd.TransferText acExportDelim, , records, fs, True 
     i = i + 1 
    Next 
End Sub 

そして、それは現在ここで失敗しています:Set records = db.OpenRecordset("SELECT * FROM qry_RequestECI")エラーと

注意「を配列に割り当てることができません」私はまだ少しですが、どのような援助がここ

+0

何が質問ですか?このコードは何を生み出しますか、それともどこが失敗しますか? –

+0

残念ですが、コンパイル時にエラーが「配列に割り当てられません」というエラーが表示された場合、コンパイル時に 'set records = db.OpenRecordset(" SELECT * FROM qry_RequestECI ")と表示されます。 – mattlore

答えて

0
Dim records() As DAO.Recordset 

あなたがレコードセットの配列を宣言しているいただければ幸いですので、VBAで初心者...

Dim records As DAO.Recordset 

おそらくあなたが望むものでしょうか。

+0

正しいです。 dunsnumberフィールドで結果を区切り、csvファイルを出力できる次のループに移動できるように、クエリの結果を配列に格納しようとしています – mattlore

+0

'OpenRecordset'は配列ではなく単一のRecordsetオブジェクトを返しますレコードセットの。 –

0

簡略化されていても、役に立たない場合があります。ドゥンス番号のリストを取得するには、

set DunsRS=db.openrecordset "select UtilityDunsNumber from qry_RequestECI group by UtilityDunsNumber" 

を使用することができます。そして、あなたはこの問題を解決するのに十分な

DunsRS.movefirst 
do while not DunsRS.eof 
dun = DunsRS.fields("UtilityDunsNumber").value 
... 
... 
DunsRS.movenext 
Loop 

とのリストをループであるかもしれないことができます - それをしようとせずにわかりません。

+0

ちょうど好奇心 - これは助けましたか? –

関連する問題