
過去の質問にも同じようなものがありましたので、参考にしながらやってみたのですが、うまくいかなかったので質問させて頂きます。
Windows2000・アクセス2000を利用しています。フォーム上で非連結のテキストボックス1つとサブフォームを作成しています。テキストボックスに[No]を入力で指定すると、テキストボックス更新時にサブフォームの内容が、その[No]のデータのみに抽出されて再表示するようにしたいと思っています。
SQLで並べ替えと抽出をしています。コードは下記のような感じで作成しています。
Private Sub 検索No_AfterUpdate()
Dim Db As Database
Dim Qd As QueryDef
Dim No As Integer
Dim Sql_Str As String
Set Db = CurrentDb
Set Qd = Db.QueryDefs("Q_抽出")
No = [検索No].Value
Sql_Str = "SELECT T_テンプレート明細.*" & _
" FROM T_テンプレート明細 INNER JOIN T_テンプレート ON T_テンプレート明細.テンプレートNo = T_テンプレート.テンプレートNo" & _
" WHERE [T_テンプレート明細].[テンプレートNo] = " & No & _
" ORDER BY [T_テンプレート明細].[テンプレートNo], [T_テンプレート明細].[テンプレートID];"
Qd.Sql = Sql_Str
サブフォーム名.Requery
Qd.Close
Db.Close
End Sub
サブフォームをrequeryすれば再表示するのかなと思っているのですが・・・・テキストボックスに更新をかけた後にクエリを確認するとSQLは一応指定出来ているようです。簡単な説明で分かりにくいかもしれませんがよろしくお願い致します。

No.1ベストアンサー
- 回答日時:
サブフォームの RecordSource が [Q_抽出] というクエリになっているようですが、これは必要ですか?
というのも、フォームの RecordSource はテーブルやクエリ以外に、SQL 文字列でも可能だからです。
もし必要じゃないなら、この場合 DAO の Db や Qd は必要ありません。
------------------------------------------------
必要か不必要かは、親フォームを開いた直後にどう表示させたいのか、ってところが関連しますね。
親フォームを開いた直後のサブフォームは全件表示でかまわないのなら、デザイン時(フォームを開いた直後の)サブフォームの RecordSource は質問に書いてある SQL 文字列の中から WHERE の部分を省いた形で OK です。どうせテキストボックスに数値を入力した時点で書き換わりますし。
と前置き。
Me.サブフォームコントロール名.Form.RecordSource = Sql_Str
Me.サブフォームコントロール名.Requery
これでいけると思います。
変数[Sql_Str] と変数[No] の中身は今のままでかまわないと思います。
ありがとうございます。うまくいきました!(>_<)!
まだまだVBAを十分理解で来ていないので、型に当てはめて作ることしか出来ず、ご指摘頂いたDbやQdも以前に良く似たコードを作ったときのまま利用していました。本当にありがとうございます。これからもっと勉強していきたいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) docmd.gotorecordを起動するには 5 2022/06/17 15:20
- PowerPoint(パワーポイント) エクセルのマクロについて教えてください。 1 2022/03/25 17:03
- Access(アクセス) ExcelのVBAコードについて教えてください。 4 2023/01/20 09:44
- Excel(エクセル) vba シート名の一覧を2列に分けるには 5 2023/04/24 08:56
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) Excel VBA でデータ転記について 1 2023/03/07 19:11
- Visual Basic(VBA) Sheet2の日付をキーにオートフィルターで2023年1月のデータを抽出し、Sheet3へ書き出すた 2 2023/03/06 23:57
- Access(アクセス) DoCmd.SearchForRecord が動かない時の解決方法 3 2022/07/22 15:31
- Access(アクセス) チェックボックスにチェックが入った後の挙動 1 2022/08/21 12:39
- Access(アクセス) アクセス テーブルの空白を変数に置換するボタンが作りたい 4 2022/07/08 11:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Googleフォーム・複数人の申し...
-
ACCESS、フォーム等のmdbを入れ...
-
バイク王のオンライン査定を作...
-
バイク王の買取り金額検索フォ...
-
C#でアプリの終了の仕方
-
C#でフォームの中にフォームを...
-
ACCESS2000 レコードセレクタ
-
Formの間に値を渡すことについて
-
PHP HTMLフォームの作成と取得...
-
VBAでフォームのスクロールバー...
-
ExcelVBAでユーザーフォーム内...
-
OCXのアイコンの登録の仕方
-
Access サブフォームに連番を...
-
フォームの再表示に関して
-
結果を引き継いで別フォームへ...
-
アクセスでフォームで入力 複...
-
フォームマンでの返信内容
-
ウインドウのサイズ変更
-
VBA リストボックスをダブルク...
-
Accessでサブフォームの合計を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Googleフォーム・複数人の申し...
-
VBA リストボックスをダブルク...
-
Accessでフォームから別フォー...
-
C# 別なフォームへ値を渡す (...
-
VBAにてメッセージボックスを最...
-
PDFフォームに本日の日付を自動...
-
アクセスVBA フォームのス...
-
サブフォームの新規レコードに...
-
メッセージボックスの背景色
-
VBプログラムの終了
-
メインフォームからサブフォー...
-
Access 無操作の場合、自動で閉...
-
子フォームから親フォームのオ...
-
リストボックスの選択解除
-
accessで2つ以上のフォームを起...
-
フォーム上の全てのコントロー...
-
ユーザーフォーム上にアイコン...
-
ExcelVBAでユーザーフォーム内...
-
ASP.NETとC#でWebフォームを呼...
-
PDFフォーム内で日付計算したい...
おすすめ情報