
アクセスで定数を利用したい。
アクセス初心者です。
フォームで取得した値を他のプロシージやクエリでも利用したいと思っています。
標準モジュールで
Public Sub 学年()
Dim nen As Integer
nen = Forms![F_start]![対象学年]
end sub
というのをつくってみましたがうまくいきません。"nen"というのを活用したいと思っています。
dim の代わりにpublic constを使ってみたりもしましたが,うまくできません。
また,nenを他のプロシージャで利用しようと思って,次のようなものもつくりましたが,うごきません。
Private Sub 学級編成1_Click()
Dim nen As Integer
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
End Sub
あとクエリの抽出条件にもつかいたいのですが・・・
ご指導よろしくお願いいたします。
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_対象]![対象学年]));
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]![対象学年]
勿論、フォームが開いていないとエラーになる。
No.3
- 回答日時:
標準モジュール以外ではどこでも使いたい値を保持する方法として、定数テーブルという1レコードだけのものを用意してやるとかあります。
フォーム起動中のそのクエリなら、フォームに非連結のコントロールを準備し変数nenをセットしてやるのはどうですか。
クエリをDOCMDでなくSQLで実行させればWHERE部分を変数使った文字列にできます。
ありがとうございます。
>標準モジュール以外ではどこでも使いたい値を保持する方法として、定数テーブルという1レコードだけのものを用意してやるとかあります。
まさにこれをしたいです。
もしよろしければ,つくり方を教えてください。
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
No.1
- 回答日時:
Dim nen As Integerを削除して、
Publicステートメントで宣言セクションで宣言する
'--- 標準モジュール 宣言セクション----
Public nen As Integer
'-----------------------------------
Public Sub 学年()
nen = Forms![F_start]![対象学年]
end sub
'------------------------------------
因みに、nenは"定数"ではなくて"変数"です。
以上です。
この回答への補足
ありがとうございます。勉強になります。
もしよろしかったら,ここで取得したnenをクエリーの抽出条件に入れるにはどうしたらよいか教えてください。単に抽出条件の欄にnenと入れるだけではうごきませんでした・・・
すいません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) Excel VBA でデータ転記について 1 2023/03/07 19:11
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Visual Basic(VBA) select caseの入れ子 3 2023/03/08 18:48
- Visual Basic(VBA) 先ほど、回答者様によって教えていただいたのですがどうしたらいいか分かりません。 ユーザーフォーム上に 2 2023/02/21 22:25
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
データがあれば○○なければのSQL
-
社員名簿から検索する関数
-
オートナンバー型の数字を振り...
-
テーブル作成クエリを実行した...
-
sql文で削除クエリを書く
-
ACCESS DCOUNTの抽出条件について
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
VBAでループ内で使う変数名を可...
-
エクセルVBAで、MsgBox やInput...
-
Excelシート上のマクロを登録し...
-
Googleフォーム・複数人の申し...
-
「PC Helpsoft Driver Updated...
-
男性に対して、『女性への気遣...
-
switch の範囲指定
-
コマンドプロンプトの時間がか...
-
(VBA)チェックボックスのclick...
-
実験ノート作成用テンプレート...
-
EXCEL VBA マクロ 実行する度に...
-
VBA エンターキーでイベントに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
データがあれば○○なければのSQL
-
ACCESS DCOUNTの抽出条件について
-
【access】複数のフィールドの...
-
Access vbaで重複レコードの削...
-
ACCESS VBAでテーブル内の特定...
-
アクセスで定数を利用したい。
-
sql文で削除クエリを書く
-
SQLServer→Access インポート
-
アクセスで連続データをテーブ...
-
重複した複数のレコードを1レ...
-
VB.NETでテーブルを作成
-
VBAでテーブル名とカラム名を動...
-
ACCESSで実行時エラー3008
-
Accessで縦と横を入れ替えたい
-
別のaccessファイルからデータ...
-
アクセスのテキスト型フィール...
-
抽出条件でデータ型が一致しま...
-
Access から Excelのシートをイ...
-
Accessリンクするテーブルが見...
-
ACCESSのクエリ、SQLに変数を使...
おすすめ情報