1

さらにガイダンスが必要な問題が発生しています。ユーザーが契約の長さを表す開始日と終了日を入力できるフォームがあります。次のクエリを使用して、月額を計算しています。

SELECT t_Actuals.InvoiceAmount,
 (DateDiff("m",[StartDate],[EndDate])+1) AS [Contract Term],
 CCur(Round(([InvoiceAmount]/[Contract Term]),0)) AS MonthlyAmount
 FROM t_Actuals;

私たちのVPは、契約期間の長さ全体(つまり、開始日から11か月)にわたってMonthlyAmountを予測することを望んでいます。理想的には、MonthlyAmountをMM-YYYY(01 / 2012、02,2012)形式で契約期間全体に割り当てたいのですが、確かに、Accessでの日付以外の日付の操作についてはそれほど経験がありません。クエリグリッド。

とにかく、私は月の最初の日を見つけるためにDateSerial関数について読んでいますが、それをループに実装して、次の36か月の月の最初の日付の値を見つけ、その日付を次のように書き込むにはどうすればよいですか?予測日がfldDateおよびMonthlyAmountであるテーブル。

申し訳ありませんが、これは一種の複雑な質問です。アドバイスをいただければ幸いです。よろしくお願いします。

4

1 に答える 1

1

"次の 36 か月の月の最初の日付の値を検索し、その日付を fldDate および MonthlyAmount として予測される日付と共にテーブルに書き込むループ"

最初の月の開始日と月数を指定すると、このDateAdd()関数を使用して、挿入する必要がある残りの日付を決定できます。テーブルを DAO レコードセットとして開き、その.AddNewメソッドを使用して行を追加し、フィールドに必要な値を割り当て、呼び出し.Updateて行を保存します。

あなたの挑戦は日付の部分だったように聞こえたので、私はそれをスケッチし、MonthlyAmountあなたが完成するようにその部分を残しました.

Public Sub LoadMonthStartDates(ByVal pFirstDate As Date, _
        ByVal pMonths As Long)
    Const cstrTable = "YourTableNameHere"
    Dim db As DAO.database
    Dim rs As DAO.Recordset
    Dim i As Long

    Set db = CurrentDb
    Set rs = db.OpenRecordset(cstrTable, dbOpenTable, dbAppendOnly)
    For i = 1 To pMonths
        rs.AddNew
        rs!fldDate = DateAdd("m", i - 1, pFirstDate)
        'rs!MonthlyAmount = <your calculated amount>
        rs.Update
    Next
    rs.Close
    Set rs = Nothing
    Set db = Nothing
End Sub
于 2012-12-07T04:13:57.033 に答える