2016
11
02

AccessVBAで指定した年月のレコードの存在をチェックする

クロス集計クエリなんかの年月指定をフォームの値を使って可変にしたかったので、エラー処理のためにレコードの存在を調べるメモ。


フォームの値をSQLへ組み込む

年月の条件絞込はSQLの条件で、

のように指定してやればいいのかなと思ったのですが、コメントで指摘していただいて気がついたのですが、フィールドに関数を使ってしまうと、そのフィールドにインデックスが張られていた場合無効になってしまうので、

としたほうが良さそうです。

161102-1

そこへ、こんな感じのフォームのコントロールの値を使って指定します。

シンプルに書くとこんな感じ。

このコードはDAO接続で書いてます。ADOでも書けますので、詳しくはこちらをご参照ください。

実際、年は4桁の西暦であるとか、存在しない月はダメだとか、そもそも指定範囲にレコードが存在しないとかいろいろひっくるめてエラー処理をつけると、こんな感じかなぁ。

※コメントでチェック条件の抜けをご指摘いただきまして追加しました!

以上です!

書籍を執筆しました。

  • このエントリーをはてなブックマークに追加
  • follow us in feedly 618
  • RSSを登録

公開日:2016/11/02
更新日:2016/11/22


4件のコメント

  • x
    2016年11月2日 1:21 PM

    いつも拝読しています。

    「存在しない月はダメだとか」

    サンプルコードはチェックしていない気がします…
    例:2016年13月

    • *you
      2016年11月2日 1:33 PM

      `;:゙`;:゙;`(;゚;ж;゚; )ブフォッ!!!

      すみません…! なぜ自分で気づかなかったのか…! ご指摘ありがとうございます、追記いたしました(*`・ω・)ゞ

  • イナカモノ
    2016年11月21日 7:32 PM

    お久しぶりです。イナカモノです。

    SQL文を見て少し気になりましたので…
    インデックスが入らないWHERE文になっております。
    件数が増えると速度が遅くなるやもしれません。
    下記を見て頂ければ分かると思います。

    ・hatena chips
    ttp://hatenachips.blog34.fc2.com/blog-entry-83.html

    ちなみにブログ作成はしましたが、私事がもうちょっとで落ち着きそうなので
    それからになると思います(;´Д`)

    それでは、また。

    • *you
      2016年11月22日 1:15 PM

      イナカモノさん、ご指摘ありがとうございます! インデックスのことをすっかり失念しておりました…! 本文修正いたしました。

      ブログ開設おめでとうございます! 楽しみにしてますーヽ(*´∀`)ノ

コメントを残す




*印は必須項目です。コメントは承認制ですので、反映までしばらくお待ち下さい。(稀にですがスパムの誤判定にて届かないこともあるようですので、必要な際はお問い合わせからお願い致します。)


back to top