msAccess2000のVBAコードの質問です。
元々、全てを理解しているわけではないのにVBAコードを書いているのが無茶なんですが、無茶を承知でプログラミングしています。
あるクエリの結果を、あるフォームで帳票表示しています。この帳票の一レコードにボタンをつけて、クリックイベントで、そのレコードを取得しようとしています。フォームはこの後、閉じられた後、呼び出された親にその、レコードを渡したいのです。
フォームは、親フォームのボタンクリックイベントから、DoCmd.Openformメソッドによって呼び出されるので、戻り値は使えません。
しょうがないので、広域変数rst(DAO.Recordset型)で、受け渡そうと思ったのですが、recordset型は、どうやら参照のようで、フォーム(クエリ?)を閉じると、レコードが壊れてしまうようなのです。
Module1で、
public rst as DAO.recordset
として、
Private Sub コマンド34_Click()
set Module1.rst=me.recordset
'この中では、rst.fields(*)で、フィールドの値を使えるのですが・・・
END Sub
呼び出した親フォームでは、module1.rst.fields(*)を使用できません。
質問は二つあります。
1)広域変数rstは、上記のような宣言・使用法で問題ないですか?
2)sub またはfunction間にわたって、レコードを渡す、いい方法はないですか?
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
> set Module1.rst=me.recordset
これを
set Module1.rst=me.Me.RecordsetClone
と、してみて下さい。
ありがとうございます。
明日、いや今日になりましたが、会社に行ったらさっそく試してみます。
うまくいきましたら、またご報告いたします。
No.1
- 回答日時:
こんにちは。
maruru01です。レコードの各フィールドの値を、それぞれグローバル変数に格納して渡せばいいのではないでしょうか。
変数は、フィールド数分用意してもいいですし、コードの見易さを考慮して、ユーザー定義型を使用してもいいでしょう。
早速のお返事、ありがとうございます。
今、実機ではグローバルでレコードのIDを、配列で管理しています。そして、もう一度そのIDで、DLOOKUPしているのです。
でも、これでは配列の管理をしなければならないし、レコードの数(複数のレコードを扱いたいので)もいくつにしていいか悩みどころだし、その点Recordset型を使えれば、そういった部分を全部Recordsetオブジェクトに任せられると思っているのです。
ユーザー定義型というのは使ったことがないので、ちょっと挑戦してみますが、それって、いわゆる「クラスを作る」ようなものですか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) アクセスの更新クエリでカレントレコードのみ更新したい 1 2022/06/02 23:32
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
- Access(アクセス) チェックボックスにチェックが入った後の挙動 1 2022/08/21 12:39
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Access(アクセス) アクセス レポートを開いたときにパラメーターの自動入力がしたい 4 2022/11/30 11:21
- Access(アクセス) accessについて(超初心者です) 1 2023/02/11 11:18
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
このQ&Aを見た人はこんなQ&Aも見ています
-
「どうして捨てられないの?」前妻の物を捨てられない男性の心理って?
前妻の物を捨てられない理由に加え、捨てるための手段はあるのかを専門家に聞いてみた!
-
ADO オブジェクトの渡し方
Visual Basic(VBA)
-
エラー(型が一致しません。)の対処方法
Visual Basic(VBA)
-
アクセスVBAのMe!と[ ]
Access(アクセス)
-
-
4
Access2000 サブフォームのRecordSet取得法
Access(アクセス)
-
5
MS Accessでフォームの「開く時」と「読込み時」のイベントの違い
Access(アクセス)
-
6
レコードセットにnullの場合
Visual Basic(VBA)
-
7
ACCESSのフォーム、開くんですが、見えないようにするには
Access(アクセス)
-
8
どこにもフォーカスを当てたくない
Access(アクセス)
-
9
[Access]帳票フォームにて連続する非連結コントロールに個々の値を入れるには
Access(アクセス)
-
10
フォームのテキストボックスなどの変数名を標準モジュールから参照は可能か?
Visual Basic(VBA)
-
11
Accessでフィールド名を変数(文字列)で・・・
Access(アクセス)
-
12
accessVBA 「フォームが見つかりません」
その他(データベース)
-
13
Access フォームのテキストボックスに半角英字のみで入力する設定は
Access(アクセス)
-
14
Accessで、フォームからフォームへ値を引き継ぐやり方
Access(アクセス)
-
15
フォームを開くときに、コンボボックスの値を選択(アクセスVBA)
Visual Basic(VBA)
-
16
yes/no型のチェックができない(アクセス2003)
Access(アクセス)
-
17
ADOでアクセスのレコードに複数のフィルタをかけるには?
Access(アクセス)
-
18
Accessのフォームにて、詳細行のボタンを行の内容により、表示/非表
その他(Microsoft Office)
-
19
サブフォームに対してGoToRecordするには?
その他(Microsoft Office)
-
20
InsideHeightプロパティとWindowH
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
レコードを保存するコード ア...
-
Access:フォームプロパティ「...
-
新規レコード行を非表示にしたい
-
レコード削除時に(サブ)フォー...
-
Access サブフォームにフィルタ...
-
AccessVBA RecordSourceのリセ...
-
ACCESSでフォームを使って、テ...
-
ACCESS起動時に所定フォームを...
-
アクセスでフォームビューがみ...
-
accessのクエリで、該当するデ...
-
フィルタ後のフォームの件数の...
-
Access レコード移動時イベント...
-
accessのフォームを空にしたい
-
Accessで上の行を自動でコピー...
-
Access2002_メソッドまたはデー...
-
アクセスのフォームで
-
アクセス 前レコード内容を、...
-
フォームに更新ボタンを作った...
-
Accessでのデータ消滅に...
-
Accessでフォーム上に 直前の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
レコードを保存するコード ア...
-
ACCESSでフォームを使って、テ...
-
アクセスでフォームビューがみ...
-
新規レコード行を非表示にしたい
-
フィルタ後のフォームの件数の...
-
Accessでレコードの保存をせず...
-
アクセスの自動保存解除はでき...
-
AccessVBA RecordSourceのリセ...
-
Accessでフォーム上に 直前の...
-
レコード削除時に(サブ)フォー...
-
ACCESSフォームのリストボック...
-
Access:フォームプロパティ「...
-
Accessで上の行を自動でコピー...
-
Access レコード移動時イベント...
-
accessのクエリで、該当するデ...
-
ACCESSのクエリで抽出したデー...
-
ACCESS起動時に所定フォームを...
-
Accessで新しいレコードに規定...
-
Access 「このレコードを保存す...
-
Access 帳票フォームでカレント...
おすすめ情報