Access97で作業しています。
以下の記述で定義したレコードセットを同一の*.mdbのなかで共有したい(他のイベントプローシージャで呼びたい)のですが、どのようにするのでしょうか?
これをFunctionプローシージャにする?
Public にする?
それと、このプロシージャで定義した変数名は他のイベントプロシージャでも使えるのでしょうか?
プロシージャの性質も良く判らない状態です。宜しくお願い致します。
Dim strSQL As String
Dim i, j, TOL, cnt As Integer
Dim rsFLT, rsTBL As DAO.RecordSet
Dim DB As Database
Set DB = CurrentDb
strSQL = "SELECT * FROM [Q-Order用] WHERE ID='" & [Forms]![F-Order用]![IDbox] & "'"
Set rsFLT = DB.OpenRecordset(strSQL)
No.3ベストアンサー
- 回答日時:
Option Explicit
Public strSQL As String
Public i, j, TOL, cnt As Integer
Public rsFLT, rsTBL As DAO.RecordSet
Public DB As Database
'------------------------------------------------
Public Sub qqq()
Set DB = CurrentDb
strSQL = "SELECT * FROM [Q-Order用] WHERE ID='" & [Forms]![F-Order用]![IDbox] & "'"
Set rsFLT = DB.OpenRecordset(strSQL)
'------------------------------------------------
とすれば、いいですよ。変数の宣言をプロシージャの中ではなく、外で宣言してください。
・ありがとうございます。
できました。変数の設定に「Dim」ではなく「Public」を使うことをはじめて知りました。
非常に助かりました。
No.2
- 回答日時:
>Public Sub qqq()
>Public strSQL As String
>Public i, j, TOL, cnt As Integer
(以下略)
sub~End SUBの中で宣言した変数はそのSUBの内部
でしか使えません。(プロシージャのローカル変数)
* SUB内でpublic宣言をすると、そこでコンパイルエラーにならない?
なので、
Public strSQL As String
Public i, j, TOL, cnt As Integer
Public rsFLT, rsTBL As DAO.RecordSet
(中略)
Public Sub qqq()
Set DB = CurrentDb
みたいなかんじになります。
ただ、
>以下の記述で定義したレコードセットを同一の*.mdbのなかで共有したい
これって、ACCESSでは結構めんどくさかった気がします。
VBAの書籍を買うなりして勉強しないと厳しいかも…。
No.1
- 回答日時:
はじめまして。
同一MDBの中で、共通もしくは相互に使いたい場合は、Publicで記述します。
Public Sub aaa()という風に宣言します。また変数も「Dim」ではなく[Public」で宣言します。
FunctionとSubの違いは戻り値を返すか返さないかです。
例えばPublic Function aaa()と宣言した場合、このモジュールの中でaaa=1とすると、呼び出し側は Ret=aaa()と記述することになり、Retに1が返却されます。Subは返却値はありません。
>Dim strSQL As String
>Dim i, j, TOL, cnt As Integer
>Dim rsFLT, rsTBL As DAO.RecordSet
>Dim DB As Database
を共通で使用したい変数にするのならば、
>Public strSQL As String
>Public i, j, TOL, cnt As Integer
>Public rsFLT, rsTBL As DAO.RecordSet
>Public DB As Database
と、どっかのソースの先頭で宣言していれば、おのおのモジュールで宣言する必要はありませんし変数の内容もそれぞれのモジュールで参照できるようになります。グローバル変数といいます。
>このプロシージャで定義した変数名は他のイベントプロシージャでも使えるのでしょうか?
つかえます。
おのおののモジュールで宣言する変数のことをローカル変数といいます。
この回答への補足
早速のご回答ありがとうございました。
Dimの宣言をPublicで宣言しました。
その後、あるフォームのボタンクリックのイベントで
下記のレコードセット「rsFLT」とSQL「strSQL」を使いたいので
-------------------------------------------------
Public Sub qqq()
Public strSQL As String
Public i, j, TOL, cnt As Integer
Public rsFLT, rsTBL As DAO.RecordSet
Public DB As Database
Set DB = CurrentDb
strSQL = "SELECT * FROM [Q-Order用] WHERE ID='" & [Forms]![F-Order用]![IDbox] & "'"
Set rsFLT = DB.OpenRecordset(strSQL)
--------------------------------------------------
ボタンクリックのイベントに
Call qqq()
Me.Recordsource = strSQL
と記述したところ、コンパイルエラー「変数が定義されていません」となってしまいます。
多分、Public Sub qqq() で定義した「strSQL」が認識できないためだと思うのですが、呼び出し方などが悪いのでしょうか?
初歩的な質問でスミマセン。教えていただけるとたすかるのですが・・。よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access VBAで行ラベルが定義さ...
-
VBA プロシージャの名前の取得
-
【Excel VBA】 WorksheetやRa...
-
Accessのマクロでモジュールを...
-
callで順に実行されるプロシー...
-
エクセルVBAでUserFormを起動し...
-
VBA 「文字が入っていたら、...
-
ACCESS2007インポート時の空白...
-
ブックオープン時にテキストボ...
-
Excel VBAで「プログラム実行」...
-
DBMS_OUTPUT.PUT_LINEを実行し...
-
連番欠番アルゴリズム
-
Oracle : BLOB型フィールドへの...
-
VB2008でe.valueとはどういう意...
-
或るプロシージャの呼び出し元判定
-
DB2でのストアドプロシージャの...
-
エクセルVBAでOn Error Resume ...
-
ストアドプロシジャからストア...
-
Statement ignored というエラー
-
PL/SQLでSPOOLさせたいのですが...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessのマクロでモジュールを...
-
Access VBAで行ラベルが定義さ...
-
エクセルVBAでUserFormを起動し...
-
VBA プロシージャの名前の取得
-
callで順に実行されるプロシー...
-
【Excel VBA】 WorksheetやRa...
-
或るプロシージャの呼び出し元判定
-
OutlookVBAで作成したマクロに...
-
Excel VBAで「プログラム実行」...
-
DBMS_OUTPUT.PUT_LINEを実行し...
-
excel/vba/public変数
-
ACCESS2007インポート時の空白...
-
Accessでグローバル変数を宣言...
-
ACCESS マクロをモジュールに変...
-
エクセルVBAが対応できるプログ...
-
Access2016 VBA ボタンのイベン...
-
アクセス 意図せずサブプロシー...
-
Oracle : BLOB型フィールドへの...
-
DB2でのストアドプロシージャの...
-
Accessのプロシージャ名が勝手...
おすすめ情報