テーブルに日付データが入っていて(datetime型)、フォームから、年月を指定して絞り込みたい場合の処理
フォームから、年もしくは、月を文字列としてSQLサーバに投げる。
--------------------------------------------------------------------------------------------------
サンプル
Me.LIST請求予定.RowSource = "EXEC sp_経理用請求予定一覧 " & Me.OpenArgs & ",'" & Me.cmb請求年 & "','" & Me.cmb請求月 & "'"
--------------------------------------------------------------------------------------------------
注意:文字列なので、フォームの値には’’を付け忘れないように!
文字列として受け取った「年」もしくは、「月」をテーブルの年月と比較するために、CONVERTを使って文字列に変更する。
--------------------------------------------------------------------------------------------------
サンプル
WHERE tbl_請求予定マスタ.工事番号 = @Kouji_No AND tbl_請求予定マスタ.削除フラグ = 0
AND CONVERT(VARCHAR(4),YEAR(tbl_請求予定マスタ.年月)) LIKE '%' + RTRIM(ISNULL(@myYear,'')) + '%'
AND SUBSTRING(CONVERT(varchar(10),tbl_請求予定マスタ.年月,111),6,2) LIKE '%' + → →RTRIM(ISNULL(@myMonth,'')) + '%'
--------------------------------------------------------------------------------------------------
テーブルデータの年月をMONTH関数で抜き出すと、1月になってしまう。
月に関しては、フォーム上は2桁表示(01月)なので、抽出されなくなる。
そのため、いったんyyyy/mm/dd形式にして、文字列化し、6文字目から2文字を抽出している(SUBSTRING)