フォームでクエリの検索結果を絞り込む制御を考えていますが、SQL内にForms![form名]![テキストボックス名]を記述することにどうしても抵抗があります。SQL内では[var_keyword]などとしておいて、form側でボタン押下時にマクロ起動で値を代入して「再クエリ」などは出来ないものでしょうか?VBAはあまり使いたくありません。
よい方法があれば教えて下さい。よろしくお願いします。
”はてな”のシステムバグでしょうか。
1/では回答したURLの表示部分が消えてますね(HTMLソースを見るとアドレスは残ってますが、、、)。
1で回答したURLは下記ですが、今回は正常に表示されるかしらん?
http://office.microsoft.com/ja-jp/access/HA011170771041.aspx
今回の回答用としてはマイクロソフト社のサポートオンラインのページ(KB304263)を書いておきますけど、こちらも表示されなかったりするのかしら???
http://support.microsoft.com/kb/304263/ja
本題に戻りますが、
(1)データを絞り込みたい
Accessはリレーショナル・データベース・マネージメント・システムと分類されているもので、SQLを詳しく知らなくてもSQLを作ることのできるクエリという機能だけでなくフォームやレポートで見た目を整えることまでが容易に行えるような便利なものです。
その便利な機能の1つとしてフォームフィルタという機能が用意されていますので、まずはフォームフィルタを使ってみてください。そうすればクエリを制御する必要もなくなりますし、クエリ自体も不要になるかもしれません。
(2)フォームのレコードソースに直接SQLを書けばスッキリする?
クエリとの依存関係を心配する必要はなくなるようにも思えますが、後々になって見直しをかける時にパッとみて内容を理解することができなくなったりしますので、一概には言えないです。
フォーム名とクエリ名の命名規則を作っておくなどで対応なさったほうがシンプルです。
(3)マクロとVBA
WordやExcelではマクロ=VBAですが、AccessではマクロとVBAは別物です。
Accessにおいては、
マクロ:日常行っている操作手順を自動化するためのもの
VBA:Accessの各部を詳細に制御するためのもの
と区別したほうがよろしいでしょう。
(4)Accessでアプリケーション作成
Accessを使ってアプリケーションを作ることは可能ですが、そのためにはVBAを使ったアプリケーション開発手法を学ぶ必要が出てきます。
貴殿が真に必要としているのはAccessを使って手早くデータを扱いたいのでしょうか。それともアプリケーションを開発したいのでしょうか。いずれにしてもAccessの持っている基本機能をマスターする必要があるのは同じですから、まずはもう少しAccessのメニューバーに用意されている機能を一通り先に学ぶ必要があるかもしれません。
以上、お役に立ちますでしょうか。。。
ご指摘ありがとうございます。
お返事が遅くなってしまい、すみません。
フォームフィルタはかなり使えそうですね。これでちょっと試してみようと思います。
>フォームのレコードソースに直接SQLを書けばスッキリする?
これは少し安直な発言でした。すみません。
>Accessでアプリケーション作成
Accessを使えばDBアプリを気軽に作れるのかなと思ったのが事の始まりでした。やはりそれなりのものを作れるようになるためには、それなりの時間が必要のようですね。
http://fukkey.dyndns.org/pins/acc/981224/3981.html
ここに似た事例が出てます。
どうしてもVBAを使うのがいやでなければ、
Public Function var_keyword As Integer
var_keyword = Forms![form名]![テキストボックス名]
End Function
クエリーの抽出条件をvar_keyword()とすればできるはずです。
ACCESSのマクロはACCESSがマイクロソフト製品でなかったころの過去の遺物みたいなものです。EXCELにしてもWORDにしてもマクロ=VBAです。(私見ですが、いずれはマクロはVBAに統一されると思います)
最初からVBAで学習することをお薦めします。アプリケーションを組もうというのなら絶対にVBAは必要ですし、その知識はEXCELやWordにも使用できます。
また、確かにフォームのレコードソースに直接SQLを書く方法も確かにあり、このほうがすっきりするのでよく使いますが今回の問題の解決にはならないと思います。
なるほどー。変数の宣言がどこかで必要なのは感じていましたが、そこをVBAで行うという方法があるのですね。
>アプリケーションを組もうというのなら絶対にVBAは必要
了解です。Accessの良さを生かした方法を身につけていきたいと思います。
みなさん、貴重なご意見ありがとうございました。
ご回答、ありがとうございます。
Accessは1週間前から始めたばかりなのです。どうすればいいかが大体解ったところで、どこまで出来るかがまだぼんやりとしています。
うーん、じつに惜しい仕様ですね。
クエリとフォームの依存関係をマクロで制御出来るようになれば、かなりすっきりしたアプリケーションを短時間で構築できると思ったのですが・・・。
フォームのレコードソースに直接SQLを書く方法もあると聞きましたが、こちらの方が私の想像にはまだ近いでしょうか?