- ベストアンサー
Accessでグローバル変数を宣言して定数を定義したい
Access97でグローバル変数を持ちたいと思ったのですが、 それらしきものが見つかりません。 Public変数というものがあるのですが、これはプロシージャ-単位で しか定義できないようです。 ひとつのデータベース全体でグローバルに定義できる定数を持ちたいのです。 たとえば、データベース内で頻繁に読み込む必要があるファイルのPATH "C:\Program Files\Netscape\Communicator\"を 固定で持っておきたい。 何か方法はないでしょうか? よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
もし、定数でいいのであれば、 標準モジュールに、 Const DATAPATH = "C:\Program Files\Netscape\Communicator\" のように書けば、どこからでもDATAPATHと言う名前で参照することができます。 変数である必要があるのなら、同じく標準モジュールに、 Global glbDataPath as String Public Sub PathSet() glbDataPath = "C:\Program Files\Netscape\Communicator\" Exit と書いておき、AutoExecマクロのモジュールを開くでPathSetサブルーチンを呼び出せばよいと思います。
その他の回答 (1)
- yoisho
- ベストアンサー率64% (331/516)
aptivaさんからすでに回答が出ていますが、まだ補足がないようですので代わりに私が、 標準モジュールで定義してやれば、データベース全体から参照が可能です。 具体的には、 まず、モジュールタブで新規作成をクリックして、標準モジュールを開きます。 定数として定義するなら、標準モジュールのモジュール レベルで (宣言セクション:Option Explicitの次の行に)、 Public Const DataPath As String = "C:\Program Files\Netscape\Communicator\" と記述してやれば、定数 DataPath が使えます。 変数として定義するなら、宣言セクションに Public DataPath As String と記述して、Public変数を定義してやり、 さらに、以下のような Functionプロシージャをつくり、 Public Function PathSet() DataPath = "C:\Program Files\Netscape\Communicator\" End Function これを AutoExecマクロで実行(プロシージャの実行でプロシージャ名に PathSet() と記述、マクロ名を“AutoExec”とする。)してやれば、データベースを開く際に、変数にパスの内容が代入されます。 HELP で、Const ステートメント、Public ステートメント、AutoExec マクロ を確認してみてください。
お礼
具体的に分かりやすくご説明していただきありがとうございました。 しかし、まったく同じようにしてもできませんでした。 でも、お蔭様で解決しました。 単純に定数名(変数名)を既にクラスモジュールでpublic宣言して使用していた ものを使ってしまっていただけでした。 お騒がせいたしました。 そして、ありがとうございました。
補足
すみません。基本的なことも分からずちょっと混乱しています。 プロシージャとモジュールの概念を間違っていましたので整理します。 aptivaさんのご指摘は、モジュール内で有効な手法なのでしょうか? それとも、データベース全体(すべてのモジュール)から 参照可能なのでしょうか? データベースの「モジュール」タブで新規にモジュールを作成しても 他のクラスモジュールから参照することができません。 基本的に標準モジュールの作成方法が間違っているような気もします!? クラスモジュールはたくさん作成しているのですが、 標準モジュールは作ったことがありません。 基本的な質問で申し訳ありませんが、ご助言お願いします。