サブフォーム1をQuery.Q_Transactionをコントロールにして作ってあります。
この検索をSQLを使って、
Me.sbf1.SourceObject = "Query.Q_Transaction"
Me.sbf1.Form.RecourSource = strSQL
で、表示させています。この結果がデータシートビューで出てきます。
デフォルトは帳票フォームをデフォルトビューとしているのですが、検索後も帳票フォームの形で出すのはどうすればいいのでしょうか。
サブフォーム1をQuery.Q_Transactionをコントロールにして作ってあります。
この検索をSQLを使って、
Me.sbf1.SourceObject = "Query.Q_Transaction"
Me.sbf1.Form.RecourSource = strSQL
で、表示させています。この結果がデータシートビューで出てきます。
デフォルトは帳票フォームをデフォルトビューとしているのですが、検索後も帳票フォームの形で出すのはどうすればいいのでしょうか。
用語の使い方が間違っているようなので、正確に状況が伝わりません。
「サブフォーム1」という名前のフォームのレコードソースプロパティにクエリ名「Q_Transaction」を設定してあるということでしょうか。
それとも「サブフォーム1」というサブフォームコントロールの「ソースオブジェクト」プロパティに「Query.Q_Transaction」とクエリを設定しているということでしょうか。
これはVBAで「sbf1」というサブフォームコントロールの「ソースオブジェクト」プロパティに「Query.Q_Transaction」とクエリを設定して、さらにレコードソースのSQLを書き換えてますね。
その帳票フォームの名前はなんでしょうか。その帳票フォームはどこで使用してますか。
正確の用語を使って、状況を説明してください。
ご回答ありがとうございます
レコードソースプロパティにクエリ名「Q_Transaction」を設定してあります。(このクエリを基にフォームウィザードで作りました)
sbf1のプロパティーシートのDefault ViewをContinuous Formsにしています。フォーム"F_Display_Transaction"にサブフォーム"sbf1"を作って表示しています。
このフォームに検索用のテキストボックスなどがあり、これを基にしたstrSQLで動的に表示しなおしています。
SQLだけでサブフォームを作って表示させようとするとエラーが出てしまった(エラー内容は忘れました)ので、もとになるWHERE句のないクエリでサブフォームを作ってから、再度SQLで代入するような形で対処しました。
やろうとしていることは
T_Transactionのデータ(付随するマスターテーブルデータがある)について、T_Time(IN/Outの時刻)とM_ID(原料ID)で、期間内の各原料の取引のデータを帳票形式データで表示させること。その後、そのデータを修正、削除できるようにすることです。
Error2467 The expression you entered refers to an object that is closed or doesn't exist
でした
フォームにはWhere句だけを後から設定・変更できるプロパティ(意訳)がありますよ
このフォームの名前が「sbf1」ということですか。
ひょっとしてお使いのAccessは英語版ですか。
日本語版なら「既定のビュー」プロパティが「帳票フォーム」に設定してあるということですね。
フォーム"F_Display_Transaction"上にサブフォームコントロールを配置して、そのコントロール名も「sbf1」ということでしょうか。
ちなみに、サブフォームコントロールとサブフォーム本体とは別ものですのでこの点はご留意ください。(下記リンク参照)
サブフォームとサブフォームコントロールの違いとは? - hatena chips
この場合は、サブフォームコントロール名とサブフォーム名がたまたま同じということになりますね。
この状態で、
を実行したら、ソースオブジェクトは「sbf1」フォームから「Q_Transaction」クエリに置き換わります。クエリはデータシートビュー表示しかできませんので、当然データシートビュー表示に切り替わります。
SourceObject は変更せずに(フォームのままで)、そのフォームに対して抽出条件を設定すればいいでしょう。
方法は、hirotonさんの回答を参照ください。
ご教示ありがとうございました。おかげで助かりました。
また、よろしくお願いいたします。