Microsoft Access 掲示板

年月で期間抽出コード / 8

16 コメント
views
4 フォロー
8
hiroton 2023/11/13 (月) 11:13:08 0d37e@f966d

同じ変数の名前のstrFilterがあり、Mid 6でどういう形で生成されるのでしょうか?

一応の確認ですが、プログラミングにおける(特にここの)「=」は代入を表していて「左の変数に右の計算結果を代入する」という動作をします
なので、

変数 = 変数 & (追加の式)

の形は、「元の変数の後ろに文字を追加する」記述になります


Me.Filter = Mid(strFilter,6)について

Mid 関数

「任意のフィルタを設けたい」時にコードが簡素に記述できます
フィルタを複数項目で連続してかける場合、それぞれの条件を AND でつなぎますが、「項目が任意」の場合、既にフィルタがあるかどうか( AND をつけるかどうか)をチェックするのが煩わしくなってきます
なので、フィルタをつける場合はとりあえず AND をつける、最後に先頭の AND を除いた文字を取り出すという手順にして簡素化しています


もう一つ、改修を見越してというのもあります
「フィルタ項目を追加したい」となった場合、上記のような問題を考える必要がでるので、もともと対応済みの記述にしておけば、「元のコードに手を付けず、追加したい項目の処理を追加するだけ」で済みます



「年月」データの持ち方について

パソコンは基本的に文字列よりも数値のほうが楽に扱えます。日付のデータも、表示上は書式設定にて「yyyy/mm/dd」形式で表示し、内部的には数値データとして持つ場合が多いです(シリアル値と呼ばれたりします)
この場合、関連する日付を数値計算で算出したり、日付計算用の関数が使えたりするというメリットが受けられます

ただし、必ず「日」のデータまで必要なので「年月」でいい場合には注意が必要です。「日」まで気にして範囲指定しないと漏れが出たりします(そのための計算で複雑化したりします)

現状であろう「年/月」の文字列で保存するとか、「yyyymm」を数値として保存するとかありますが、桁数(月の十の位の0詰め)に気を付ける必要があるとか出ますし、究極的には「年」「月」でフィールドを分けて保存するのが一番安全なのかなと思っています

通報 ...