私は古い Foxpro プログラマーで、配列を使用して変数フィールドを投稿していました。
私がやろうとしているのは、私が設計した新しいテーブルに 15 の日付フィールドがあることです。
私のクエリには、アクティビティの日付が 1 つある個々のレコードがあります。
それぞれの 15 の異なる日付を 15 の日付を持つ 1 つのレコードにコンパイルしたいのですClient_id
が、テーブル データを配列として参照できないようです。
配列を定義するいくつかの異なる方法を試しましたが、何もうまくいかないようです。
これが私のコードです。私のテーブルにはMail_date1
、Mail_date2
、Mail_date3
、 などの名前の 15 個の日付フィールドがあります。
最初にそれを単なる配列として定義しようとしましたが、気に入らなかったのです。結果テーブルの日付フィールドを参照しようとすると、コードが常に失敗する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