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も見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
Access サブフォームでの選択行の取得
その他(データベース)
-
ADO オブジェクトの渡し方
Visual Basic(VBA)
-
エラー(型が一致しません。)の対処方法
Visual Basic(VBA)
-
-
4
アクセスVBAのMe!と[ ]
Access(アクセス)
-
5
ADOでアクセスのレコードに複数のフィルタをかけるには?
Access(アクセス)
-
6
レコードセットにnullの場合
Visual Basic(VBA)
-
7
どこにもフォーカスを当てたくない
Access(アクセス)
-
8
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
9
サブフォームに対してGoToRecordするには?
その他(Microsoft Office)
-
10
アクセスの更新クエリでカレントレコードのみ更新したい
Access(アクセス)
-
11
MS Accessでフォームの「開く時」と「読込み時」のイベントの違い
Access(アクセス)
-
12
ADOを使ったDBアクセス後のメモリ解放
その他(データベース)
-
13
ACCESS──メインフォームでサブフォームのレコード件数をカウントしたい
Access(アクセス)
-
14
Access2000 サブフォームのRecordSet取得法
Access(アクセス)
-
15
Access フォームのテキストボックスに半角英字のみで入力する設定は
Access(アクセス)
-
16
レコードセットで得た結果をサブフォームに出力したい
その他(データベース)
-
17
親フォームからサブフォームのレコードソースを設定
Access(アクセス)
-
18
Access2003 クエリで、空の列は作れますか?
Access(アクセス)
-
19
[VBA] ADOの Clone と AddNew
その他(プログラミング・Web制作)
-
20
ACCESSのBookmarkプロパティの使い方
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
レコードを保存するコード ア...
-
アクセスでフォームビューがみ...
-
新規レコード行を非表示にしたい
-
アクセスの自動保存解除はでき...
-
Accessでレコードの保存をせず...
-
Accessでフォーム上に 直前の...
-
フィルタ後のフォームの件数の...
-
Accessで上の行を自動でコピー...
-
ACCESS起動時に所定フォームを...
-
ACCESSでフォームを使って、テ...
-
Access サブフォームにフィルタ...
-
Accessでのデータ消滅に...
-
Access レコード移動時イベント...
-
Accessであいまい検索するフォ...
-
Access2002_メソッドまたはデー...
-
Access2010、値を入力したら自...
-
AccessVBA RecordSourceのリセ...
-
Access:フォームプロパティ「...
-
Access 帳票フォームでカレント...
-
ACCESSのクエリで抽出したデー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
レコードを保存するコード ア...
-
アクセスでフォームビューがみ...
-
ACCESSでフォームを使って、テ...
-
新規レコード行を非表示にしたい
-
フィルタ後のフォームの件数の...
-
Accessでレコードの保存をせず...
-
Accessでフォーム上に 直前の...
-
Accessで上の行を自動でコピー...
-
AccessVBA RecordSourceのリセ...
-
レコード削除時に(サブ)フォー...
-
アクセスの自動保存解除はでき...
-
Accessで新しいレコードに規定...
-
ACCESS起動時に所定フォームを...
-
Access 「このレコードを保存す...
-
Access:フォームプロパティ「...
-
Access2010、値を入力したら自...
-
レコードをダブルクリックする...
-
ACCESSのクエリで抽出したデー...
-
アクセス データの競合を非表...
-
Accessでのデータ消滅に...
おすすめ情報