• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:アクセスで定数を利用したい。)

アクセスで定数を利用したい

このQ&Aのポイント
  • フォームで取得した値を他のプロシージャやクエリでも利用したいと思っています。
  • 標準モジュールで定数を利用する方法について試してみましたが、うまくいきません。
  • 他のプロシージャで定数を利用する方法も試しましたが、正常に動作しません。

質問者が選んだベストアンサー

  • ベストアンサー
  • layy
  • ベストアンサー率23% (292/1222)
回答No.5

初心者でしたね。 ちょっと難しい仕掛けかもしれませんので 以下参考レベルです。 DoCmd.OpenQuery "Q_学級編成1" ですが、 1)クエリ名を変数nenで構成し指定 DoCmd.OpenQuery "Q_学級編成" & nen 2)クエリ名をフォームの項目名で構成し指定 DoCmd.OpenQuery "Q_学級編成" & Forms![F_start]![対象学年] 3)クエリをSQLで実行し条件式を変数nen strSQL="select * from T_学級編成 where = xxxx" & nen こんな感じにすれば学年が何年であろうとクエリ名を考慮しておけば CASE文で各クエリを選ばなくてもできるように思います。 定数テーブル案についてですが、 何しようと変わらない値(ログインユーザ、システム日付、システムパス、レポート部数等の)保持に使いました。1レコードで。 自分が試したものと状況が同じなら、使ってみてもいいですが 実行結果をいろいろ確認してからにしてください。 別途フォームを作れば値変更も随時できますし、 DLOOKUP関数使えばこのテーブル1レコードのある項目値も取得できますから なにかと便利ではありました。 ★★★サンプル★★★ 【T_学級編成テーブル】 学年,性別,氏名 【T_対象テーブル】・・・・・・・・・・・定数値のテーブル 対象学年,対象クラス 【Q_学級編成】 SELECT T_学級編成.学年, T_学級編成.性別, T_学級編成.氏名, T_対象.対象学年, T_対象.対象クラス FROM T_学級編成, T_対象 WHERE (((T_学級編成.学年) Like [T_対象]![対象学年]));

その他の回答 (4)

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.4

>nen = Forms![F_start]![対象学年] こんなことしないで、直接Forms![F_start]![対象学年]を 使う。 Select Case Forms("F_start").Controls("対象学年")     Case 1 '★ nen = 1ではない     以下略 End Select また、クエリの条件式に直接記述する。 SELECT ~ WHERE Gakunen = Forms![F_start]![対象学年] 勿論、フォームが開いていないとエラーになる。

wakusan
質問者

お礼

ありがとうございます。勉強になります。

  • layy
  • ベストアンサー率23% (292/1222)
回答No.3

標準モジュール以外ではどこでも使いたい値を保持する方法として、定数テーブルという1レコードだけのものを用意してやるとかあります。 フォーム起動中のそのクエリなら、フォームに非連結のコントロールを準備し変数nenをセットしてやるのはどうですか。 クエリをDOCMDでなくSQLで実行させればWHERE部分を変数使った文字列にできます。

wakusan
質問者

お礼

ありがとうございます。 >標準モジュール以外ではどこでも使いたい値を保持する方法として、定数テーブルという1レコードだけのものを用意してやるとかあります。 まさにこれをしたいです。 もしよろしければ,つくり方を教えてください。

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.2

'--- 標準モジュール 宣言セクション----     Public nen As Integer   '----------------------------------- Function Gakunen() As Integer   Gakunen = Forms![F_start]![対象学年] End Function '------------------------------------ クエリでは変数なんて知ったこっちゃ無い! なので自前の関数にして クエリの抽出欄に Gakunen() とすれば・・・・                なのですが そもそもクエリで使うだけなら Forms![F_start]![対象学年]  を抽出条件に入れれば 事足りるでしょうし Select Case nen Case nen = 1   DoCmd.OpenQuery "Q_学級編成1"   Case nen = 2   DoCmd.OpenQuery "Q_学級編成2"   Case nen = 3   DoCmd.OpenQuery "Q_学級編成3" End Select も Select Case Forms![F_start]![対象学年]   Case  1   DoCmd.OpenQuery "Q_学級編成1"   Case  2   DoCmd.OpenQuery "Q_学級編成2"   Case  3   DoCmd.OpenQuery "Q_学級編成3" End Select とすればF_startが閉じられてなければ変数も使わなくて済みそうですけど? 参考リンク  変数の適用範囲 http://support.microsoft.com/kb/141693/ja

wakusan
質問者

お礼

ありがとうございました。 caseは私の記入ミスでした。 いろいろとすいませんでした。

  • myRange
  • ベストアンサー率71% (339/472)
回答No.1

  Dim nen As Integerを削除して、  Publicステートメントで宣言セクションで宣言する   '--- 標準モジュール 宣言セクション----     Public nen As Integer   '----------------------------------- Public Sub 学年()   nen = Forms![F_start]![対象学年] end sub '------------------------------------ 因みに、nenは"定数"ではなくて"変数"です。  以上です。    

wakusan
質問者

補足

ありがとうございます。勉強になります。 もしよろしかったら,ここで取得したnenをクエリーの抽出条件に入れるにはどうしたらよいか教えてください。単に抽出条件の欄にnenと入れるだけではうごきませんでした・・・ すいません。

関連するQ&A

専門家に質問してみよう