0

私は古い Foxpro プログラマーで、配列を使用して変数フィールドを投稿していました。

私がやろうとしているのは、私が設計した新しいテーブルに 15 の日付フィールドがあることです。
私のクエリには、アクティビティの日付が 1 つある個々のレコードがあります。

それぞれの 15 の異なる日付を 15 の日付を持つ 1 つのレコードにコンパイルしたいのですClient_idが、テーブル データを配列として参照できないようです。
配列を定義するいくつかの異なる方法を試しましたが、何もうまくいかないようです。

これが私のコードです。私のテーブルにはMail_date1Mail_date2Mail_date3、 などの名前の 15 個の日付フィールドがあります。
最初にそれを単なる配列として定義しようとしましたが、気に入らなかったのです。結果テーブルの日付フィールドを参照しようとすると、コードが常に失敗するrs2!mdate2 = memdate(intcounter)

  1. 結果テーブルの出力フィールドを配列として参照するにはどうすればよいですか?

  2. 結果を読み込むには、たくさんの 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
4

2 に答える 2