我是一位老的Foxpro程序員,我使用數組來發布變量字段。循環訪問數組並將數組發送到表
我想要做的是我在我設計的新表中有15個日期字段。
在我的查詢中,我有單個記錄和一個活動日期。
我想將每個Client_id
的15個不同日期編譯成一個有15個日期的記錄,但我似乎無法將表數據作爲一個數組引用。
我已經嘗試了幾種不同的方法來定義數組,但似乎沒有任何工作。
這是我的代碼,我有。在我的表中,我有15個日期字段名爲Mail_date1
,Mail_date2
,Mail_date3
等。
我試着先將它定義爲一個數組,但不喜歡它;當我嘗試引用結果表中的日期字段我的代碼總是失敗rs2!mdate2 = memdate(intcounter)
我如何可以參考我的結果表輸出的字段作爲一個數組?
我是否必須將大量的if語句加載到結果中?
看起來像一個垃圾....應該能夠加載他們作爲一個數組。
我是一個新的Access 2007 VBA程序員。
Dim db As DAO.Database
Set db = CurrentDb
Dim rs1 As DAO.Recordset
Dim rs2 As DAO.Recordset
Dim FinTotal, intcounter As Integer
Dim FinMPU, FinVersion As String
Dim mail_date(1 To 15) As Date
Dim memdate(1 To 15) As Date
Dim mdate2 As String
Set rs1 = db.OpenRecordset(_
"SELECT NewFile.MPU_ID, " & _
" NewFile.MAIL_DATE," & _
" NewFile.TOTAL, " & _
" Freight.Version " &_
"FROM Freight " & _
" LEFT JOIN NewFile ON Freight.[MPU ID] = NewFile.MPU_ID " & _
"ORDER BY NewFile.MPU_ID, NewFile.MAIL_DATE")
Set rs2 = db.OpenRecordset("Final")
DoCmd.RunSQL "DELETE Final.* FROM Final;"
intcounter = 1
memdate(intcounter) = rs1!mail_date
FinMPU = rs1!mpu_ID
FinTotal = rs1!total
FinVersion = rs1!Version
rs1.MoveNext
On Error GoTo Error_MayCauseAnError
Do While Not rs1.EOF
Do While Not rs1.EOF _
And memdate(intcounter) <> rs1!mail_date _
And FinMPU = rs1!mpu_ID
intcounter = intcounter + 1
memdate(intcounter) = rs1!mail_date
FinTotal = FinTotal + rs1!total
FinVersion = rs1!Version
FinMPU = rs1!mpu_ID
rs1.MoveNext
Loop
If FinMPU <> rs1!mpu_ID Then
rs2.AddNew
mdate2 = "mail_date" & CStr(intcounter)
rs2!mdate2 = memdate(intcounter)
rs2!total = FinTotal
rs2!mpu_ID = FinMPU
rs2!Version = FinVersion
rs2.Update
FinTotal = rs1!total
FinVersion = rs1!Version
FinMPU = rs1!mpu_ID
intcounter = 1
memdate(intcounter) = rs1!mail_date
End If
rs1.MoveNext
Loop
DAO是死路一條。不要再用它來代碼。 – Tomalak 2013-03-31 11:36:40
@Tomalak Umm,no。對於使用ACE數據庫引擎的本機Access應用程序,「Microsoft Office ... Access數據庫引擎對象庫」(映射到VBA中的「DAO」)仍然是缺省和首選的訪問方法。 – 2013-03-31 12:00:27
@Gord IIRC他們已經切換到ADO作爲Access 2007(?)的默認庫。 – Tomalak 2013-03-31 12:06:02