嘿伙计们,我的代码遇到了一些障碍。
它的核心是:我需要遍历访问查询,从字段中找到所有唯一值(在本例中称为UtilityDunsNumber),将它们放入一个数组中,然后为该数组中的每个DunsNumber运行另一个查询并输出一个包含该新查询中所有记录的CSV文件,然后循环回来为每个dunsnumber创建一个文件。
这是我到目前为止的代码:
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")
错误"无法分配给数组"
注意我仍然是VBA的初学者,所以任何帮助都会受到赞赏
答案 0 :(得分:0)
def newProject(self) :
self.startTab = StartTab(self, self.tab1)
在这里,您要声明记录集的数组 ...
Dim records() As DAO.Recordset
可能是你想要的。
答案 1 :(得分:0)
有一种简化可能会有所帮助,也可能没有帮助。要获取Duns编号列表,您可以使用
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
这可能足以解决问题 - 不确定而不尝试。