フォームのレコードソースで標準モジュールに書いた値(定数)を使いたかった、そんなお話です。
QAサイトで回答し恥を残す・・・
質問元は
https://teratail.com/questions/9v56md6ntxp3dz
で回答してみました。またまた、浮気して・・・
※他の回答やコメントも参考にしてください。
下記テストした動画です
https://youtu.be/NODTLXMyasA?t=31
↑暇な時に見て、だめっぷりを笑ってください・・・
SELECT [テーブル1].ID, [テーブル1].DATA FROM テーブル1
WHERE ((([テーブル1].ID) between startid() and endid() ));
between startid() and endid() みたいに、関数で値を返すようにして、
少し小細工してみました。
先輩や上司に怒られそうな修正案だけど、
Option Compare Database Option Explicit 'Public Const startid As Integer = 2 'コメントアウト 'Public Const endid As Integer = 4 'コメントアウト Public Function startid() As Integer startid = 2 '固定で返す End Function Public Function endid() As Integer endid = 4 '固定で返す End Function
と、
Function startid() で2を返す
Function endid() で4を返す
だけの関数を作成して、
使うときは、
SELECT [テーブル1].ID, [テーブル1].DATA FROM テーブル1
WHERE ((([テーブル1].ID) between startid() and endid() ));
で使う。
※SQL内の条件で関数を呼ぶと、遅くなったりするけど、まぁいっか。
そんなに件数無ければ、、、
動画、作成中に思いついたのが、※たいして変更していませんが
頭のConst startid As Integer = 2などを残して、
Option Compare Database Option Explicit Public Const startid As Integer = 2 Public Const endid As Integer = 5 Public Function get_startid() As Integer get_startid = startid '上で定義した Const startid を返す End Function Public Function get_endid() As Integer get_endid = endid '上で定義した Const endid を返す End Function
みたいにして、
レコードソースで
SELECT [テーブル1].ID, [テーブル1].DATA FROM テーブル1 WHERE ((([テーブル1].ID) between get_startid() and get_endid() ));
※get_XXXXX 経由で Const XXXXX を返し、クエリやレコードソースで使ってみてください
下記テストした動画です
youtu.be
https://youtu.be/NODTLXMyasA?t=31
↑暇な時に見て、だめっぷりを笑ってください・・・
もっと、スマートに書けそうな気もしますが、ヒントとなれば幸いです。
※ど外し回答な気もしつつ・・・