SSブログ

アクセス小僧:レコード移動したとき、同じ月のレコード数をカウント [コンピューター]

アクセスのフォームで、

レコード移動したとき、同じ月のレコード数をカウントするマクロを作りました。

テーブルには、1月1日から12月31日までのレコードが登録されています。
例えば、8月6日のレコードを開いたら、8月のレコード数、
すなわち、8月1日から8月31日までのレコード数をカウントします。

同じ月のレコードを抽出するため、次の様なDCountを使います。

DCount("*", "T_テーブル", "[日付]>=#2017/8/1# And [日付]<#2017/9/1#")

つまり、レコードの日付が2017/8/1以上で、2017/9/1より小さい日を抽出しています。
2つ目の条件が翌月の1日と比較しているのは、月末日が28, 29, 30, 31と月によって変動
するので、マクロを簡単にするためです。

マクロのコードを以下に示します。

Private Sub Form_Current()
  '【機能1】レコード移動したとき、同じ月のレコード数をカウント
  '【変数】
  Dim myDate1 As Date ' 日付
  Dim myYear As Integer ' 年
  Dim myMonth As Integer ' 月
  '【コード】
  myDate1 = [日付]
  myYear = Year(myDate1)
  myMonth = Month(myDate1)
  Select Case myMonth
  Case 12
    [月レコード数] = (DCount("*", "T_テーブル", "[日付]>=#" & myYear & "/12/1#" _
    & " And [日付]<#" & myYear + 1 & "/1/1#"))
  Case Else
    [月レコード数] = (DCount("*", "T_テーブル", "[日付]>=#" & myYear & "/" & myMonth & "/1#" _
    & " And [日付]<#" & myYear & "/" & myMonth + 1 & "/1#"))
  End Select
End Sub

カレントレコードの日付フィールドから、日付を取ってきて、年(myYear)と月(myMonth)を抽出、
DCountの条件式を作っています。

【2017/12/29 変更】12月の場合、12月1日以上、翌年の1月1日より小さい日となるため、式を分けました。
ヤバイぜ!(12)  コメント(2) 
共通テーマ:パソコン・インターネット

ヤバイぜ! 12

コメント 2

cheese999

ヤバイぜ! ありがとうございます[__猫]
by cheese999 (2017-08-06 13:28) 

cheese999

12月の式を変更しました。
by cheese999 (2017-12-29 07:29) 

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字(英大文字の「オー」、英小文字の「ユー」、アラビア数字の「ハチ」、アラビア数字の「イチ」、アラビア数字の「ニ」)を入力してください。

Facebook コメント

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。