• ベストアンサー

1つのクエリを複数のフォームで使用したい!

1つのクエリを複数のフォームで使用したい! Win Xp access2003 いつもお世話になっております、今回はクエリについてアドバイスお願いいたします。 フォームAを開いているちきはフォームAのtxt顧客コードを条件にし フォームBを開いているときはフォームBのtxt顧客コードを条件に切替えたいのですが [forms]![フォームA]![txt顧客コード] Or [forms]![フォームB]![txt顧客コード] ではパラメータでもう片方の値を要求されてしまいます。 別のフォームを参照する場合はクエリを2つ作るしか無いのでしょうか? アドバイス宜しくお願いいたします、

質問者が選んだベストアンサー

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

>別のフォームを参照する場合はクエリを2つ作るしか無いのでしょうか? はい。 提案です。 パラメータクエリに条件が二つあれば必ず二回聞いてきます。 パラメータクエリをやめてしまって、フォームに非連結のテキストボックスを置きます。 名前を仮にTX1として その更新後イベントで処理してはいかが? txt顧客コードがテキスト型だとして Private Sub TX1_AfterUpdate() Me.Filter = "txt顧客コード = '" & Me!TX1 & "'" If Me.RecordsetClone.RecordCount = 0 Then Me.FilterOn = False Else Me.FilterOn = True End If End Sub これならクエリは1個で済みます。 ただ、二個のフォームを変更しなければなりませんけど。

KOUSUKE0409
質問者

お礼

早急な返答ありがとうございます。 やはりクエリは2つになりますか・・・ ではVBAでRecordsetより検索します。 ちなみにもう1つヒントをお願いします。 レコード数が1万件位ある中から1つの条件で抽出する時、クエリを使った時と VBAでFilter やSeek,Findで絞りこみをした場合スピードは大分違うものでしょうか? 返答宜しくお願いいたします。

関連するQ&A

  • access クエリ 検索フォームの作り方

    よろしくお願いします。 やりたいこと: フォーム上で、テキストボックスに入力した値を検索して表示したい。 本やウェブで調べて、なんとか一度はやっと出来たのですが、 誤って何かを変更してしまい、使えなくなってしまいました。 今となってはどの資料を見て作れたのかわからなくなりました。 やったこと: クエリ :クエリA   条件にforms!フォームA!txt0を入力 フォーム:フォームA ヘッダーに非連結のテキストボックスtxt0を作成 txt0の更新後処理:docmd.requeryを入力 しかし、txt0に入力しても検索されません。 フォームのプロパティのレコードソース欄にクエリAを選択するようですが、 選択するクエリ名が表示されないので、クエリ名を入力しましたがダメでした。 どこか間違っているのでしょうか。VBAまでは勉強できないので上記範囲内でお願いします!

  • サブフォームにデータが表示されない!

    サブフォームにデータが表示されない! フォーム(1)(非連結のtxt顧客コード) フォーム(1)にサブフォーム(2)(レコードソースはクエリ(3))を作り、 クエリ(3)顧客コードの抽出条件に[forms]![フォーム(1)].[form].[txt顧客コード]で選択しています。 フォーム(1)が開いた時にクエリ(3)は抽出しているのにそのデータがサブフォーム(2)に表示されません・・・ フォーム(1)を一度デザインビューにして開き直すとサブフォーム(2)に反映表示されます。 いろんな所にRequeryを入れたりしてみましたが、フォーム(1)を開いたときに一発で表示されません、教えてください!宜しくお願いいたします。

  • クエリの抽出条件をフォームで入力したものにしたい

    こんにちは。すみませんうまくいかないのでどなたか助言していただきたくお願いいたします。 クエリの抽出条件をフォームで入力した値にしたいと思っており、クエリの抽出条件欄に >=[集計フォーム]![開始日入力] と入力しました。「フォームの名前」!「テキスト名」です。 そしてフォームに値を入力してクエリ実行ボタンをクリックするとパラメータクエリのようになってしまいます。 フォーム内で何か設定をしないといけないのでしょうか? すみませんがよろしくお願いいたします。

  • フォームのテキストボックスを抽出条件とするクエリー

    Access2003を使って、「フォームのテキストボックスを抽出条件とするクエリー」 を作成していて困っています。 まず Like [Forms]![顧客氏名検索]![テキスト2] とすると、完全一致したものだけが抽出できています。そこで 【値の一部が一致】 Like "文字列*"   ※文字列にある文字列を直接入力するとちゃんと抽出できる。 これを参考に Like "[Forms]![顧客氏名検索]![テキスト2]*" とすると、値の一部が一致するものが抽出されません。(何を入力しても該当0件) 抽出条件が正しく設定されてないように思います。 フォームのテキストボックスの値を利用する場合、""や*の使い方がおかしいのでしょうか?

  • フォームから複数条件を指定してクエリを開く

    win10 、アクセス2016です フォームのテキストボックスに条件を記入して、この条件に基づき選択クエリ実行したいのですが、上手くいきません。 ご指導願います 条件入力フォーム名:フォームA 条件入力テキストボックス:txtMember 実際の入力条件:"日本 太郎" Or "東京 花子" クエリのデザインビューで[氏名]フィールの抽出条件:[Forms]![フォームA]![txtMember] これで選択が実行されません。 条件テキストを、直接デザインビューに入力すると上手くいきます。 何が、悪いのでしょうか。 ご指導よろしくお願いします。

  • ACCESSのあいまいな条件のクエリ 

    フォームで金額を入力します。 この入力された金額を使ってクエリの条件を作りたいと考えています。 <条件> ・金額が未入力の場合は、全て抽出。 ・金額が入力されている場合は、その金額以上を抽出   (例:1000と入力された場合は、>=1000) 下記のような条件式を入れたら、金額を入力しているにも関わらず、 何も入力されてきませんでした。 IIf(IsNull([Forms]![フォームA]![txt金額]),Like "*",>=Val([Forms]![フォームA]![txt金額]))

  • Accessで、コード実行中に、フォームのテキストボックスの値をデータソースとしたクエリーフィールドの値を取得したい

    Accessにおいて、frmMENUというフォームを作成し、txtYearというテキストボックスを配置しました。"式1: [Forms]![frmMENU]![txtYear]"というフィールドを含むクエリーを作成しました。 フォームを起動し、txtYearに値を入れた後、そのクエリーを開くと、"式1"には正しく値が入っているのですが、コードの実行中(例えばボタンクリック処理の間など)にクエリを開くと何も入っていません。このとき、クエリーに対するSQL(select 式1 from クエリ1)を実行しようとすると「パラメータが少なすぎます。1を指定してください。」というエラーが発生してしまいます。コード実行中にクエリーから"式1"の値を取得することはできないのでしょうか?

  • ACCESS フォームで入力した日付をクエリで読み

    ACCESS フォームで入力した日付をクエリで読み替えたい ACCESS フォームで入力した日付をクエリで使用しているテーブルの書式に変換したい フォーム テキスト名:日付にyyyymmdd で入力します クエリ テキスト名:日付はパラメータとして使用しています クエリ内で使用しているテーブルの日付書式は 日付:yyyy/mm/ddです パラメータは 「日付始」と「日付終」の2箇所のテキストに入力されたデータを使用しています。以下がパラメータです。 Between [Forms]![フォーム]![日付始] and [Forms]![フォーム]![日付終] フォームのテキストボックスにyyyymmddと入力してもクエリでエラーが出ることない パラメータを日付に設定したいのですがどうしたらよいでしょうか? ちなみに、以下の式を入れたらエラーです。 Between CDate(Format([Forms]![フォーム]![日付始],"yyyy/mm/dd")) and CDate(Format([Forms]![フォーム]![日付始],"yyyy/mm/dd")) と入力しましたところ、、、、「式が複雑すぎるか、、、」のエラーメッセージが出てしまいました。 どなたか助けてください。お願い致します。

  • クエリ抽出条件を動的に変更したい

    Win XP Access2003 顧客情報を入力するメインフォーム1に商品明細を入力するサブフォーム(帳票)のある 伝票作成用のフォームを作っています。 (サブフォームは選択クエリが元になっています) 入力用にはフォーム1を使い、その後確定した伝票はメインフォーム2で扱いたいのです。 商品明細(帳票サブフォーム)の内容は同じなので、クエリの伝票番号(フィールド)の 抽出条件を フォーム1で開いた時に[forms]![フォーム1]![txt伝票番号] フォーム2で開いた時は[forms]![フォーム2]![txt伝票番号] の様に動的に変更したいのですが,よい方法がありましたら宜しくお願い致します。

  • テーブルのデータをフォームに表示したい。

    テーブルのデータをフォームに表示したい。 Access2003で顧客管理のシステムを作成しています、 下記コードで検索フォームより顧客フォームを開き顧客テーブルのデータを渡していますが、 現在では顧客データを渡したいフォームが増えた為、各フォームにtxt顧客コードを設けて 標準モジュールで行った方が良いかと思うのですが、どの様にしたら良いか解りません。 良い方法がありましたらご教授よろしくお願いいたします。 Dim rs As ADODB.Recordset Set cn = CurrentProject.Connection Set rs = New ADODB.Recordset rs.Open "T顧客", cn, adOpenKeyset, adLockOptimistic rs.Find "顧客コード=" & Forms!F顧客検索!S顧客.Form.顧客コード Forms!F顧客!txt顧客コード = rs!顧客コード Forms!F顧客!cmb顧客区分 = rs!顧客区分 Forms!F顧客!txt顧客名 = rs!顧客名 rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing

専門家に質問してみよう