クエリ抽出条件を動的に変更する方法

このQ&Aのポイント
  • 顧客情報を入力するメインフォーム1に商品明細を入力するサブフォームの伝票作成用のフォームを作っています。
  • 入力用にはフォーム1を使い、その後確定した伝票はメインフォーム2で扱いたいのです。
  • 商品明細の内容は同じなので、クエリの伝票番号の抽出条件をフォーム1とフォーム2で動的に変更したいです。
回答を見る
  • ベストアンサー

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

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

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

  • ベストアンサー
  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.2

解釈が間違っているかもしれませんが、 >(サブフォームは選択クエリが元になっています) > 商品明細(帳票サブフォーム)の内容は同じなので、クエリの伝票番号(フィールド)の > 抽出条件を > フォーム1で開いた時に[forms]![フォーム1]![txt伝票番号] > フォーム2で開いた時は[forms]![フォーム2]![txt伝票番号] ということなので、メイン/サブフォーム間で関連付けが出来れば良いと考えます。 そこで、サブフォームに指定していたクエリの抽出条件から、フォームの参照を削除します。 つまり、サブフォーム単独では、全て表示できるようにしておきます。 ここで、サブフォームコントロールのプロパティの中に、 リンク親フィールド、リンク子フィールドがあります。 リンク親フィールドには、txt伝票番号 を記述し、 リンク子フィールドに、親の txt伝票番号 と関連付ける 伝票番号 を記述しておきます。 これにより、親の txt伝票番号 が変わると、その内容を 伝票番号 と解釈し、 サブフォーム内の表示が切り替わります。 イメージしていた動きは、上記で大丈夫だったでしょうか。どうでしょうか・・・

ey2eizs
質問者

お礼

丁重なレスありがとうございます。 >リンク親フィールドには、txt伝票番号 を記述し、 リンク子フィールドに、親の txt伝票番号 と関連付ける 伝票番号 を記述しておきます。 記述しようとしましたが"非連結フォームにリンクを作成することはできません" とエラーになってしまいます。 簡単に考えすぎて説明不足でした、申し訳ありません。 現在メインフォームに 1、請求先情報 2、自動車情報 と二つの情報がそれぞれのクエリから表示するようにしていまして・・・ さらにメインフォームとサブフォームのクエリが別なのでエラーになってしまうと思います。 もう一度最初から設計を考え直します、また必ず壁にブチ当たるので その時はまた宜しくお願い致します。 ありがとうございました。

その他の回答 (1)

回答No.1

そういうのが発生すること自体、正規化がまともにできていない。 設計からやり直し。

ey2eizs
質問者

お礼

なるほど! 自分でもスッキリしない流れだと思っていました。 いろいろな方の見積り伝票のサンプルを元に作成しているのですが、 見積書までで終わっていまして・・・ その後、売上までの流れがいまいち分からず伝票情報テーブルに 伝票区分フィールドを設け 見積の状態の時には”見積” 売上をしたら”売上”を入れて区分しています。 請求書を発行する時に見積フォームとは別の請求書フォームから出力しようと思い 今回の質問になりました。 よろしけらば、その辺りの流れのヒントを頂ければと思いますので宜しくお願い致します。

関連するQ&A

  • サブフォームを利用したクエリーの抽出条件について

    環境:ACCESS2003&XP Pro メインフォーム&サブフォームのフォームを作成しています。 このサブフォームにテキストボックスをつけ、このテキストボックスの値を抽出条件にしたクエリーを作成しましたが、抽出条件がうまくいかないようで クエリー実行時にパラメータを聞いてきます。 クエリーの抽出条件は forms![メインフォーム名].[サブフォーム名].[テキストボックス名] です。 上記の書き方がおかしいのだと思います。 よろしくお願いします。

  • クエリの抽出条件

    クエリの抽出条件を手入力では無く、コンボボックス方式で プルダウンでリストを選びたいと思い下記の抽出条件を入力 [Forms]![フォーム名]![コンボ名] しかし、パラメータ入力時の名前が、Forms!フォーム名!コンボ名と変わるのみで プルダウンになりません クエリを過去のデータ検索のみで使用したいと思ってます。 ネットをくぐると、メインフォームを開いてとありますが、それでも駄目です。 また、クエリー検索だけで、メインフォームを開かないでプルダウン方式には 出来ないものでしょうか よろしくお願い致します

  • AccessでBetween条件を含むクエリーで、Between条件を

    AccessでBetween条件を含むクエリーで、Between条件を入力しなくてもデータを抽出するには? Access97でデータの抽出を行いたいと思います。 「顧客名」「商品名」「出荷日」という項目を含むクエリーから、希望のデータを抽出するフォーム(名:検索フォーム)を作成しています。 検索フォームにそれぞれ「顧客名」「商品名」「出荷開始」「出荷終了」という名前の非連結のテキストボックスを作り(規定値を"*"にしています)、それに値を入力すると、これらのテキストボックスの下に配置したサブフォームに抽出されたデータが抽出される様にしたいのです。 現在、クエリーの「顧客名」項目の抽出条件に「[forms]![検索フォーム]![顧客名]」という様に入力し、同じ様な記述を「商品名」項目にも行い(条件は[商品名]としています)、出荷日に「Between[forms]![検索フォーム]![出荷開始]And[forms]![検索フォーム]![出荷終了]」と記述しています。(これらは全てAnd条件にしています) さて、この検索フォームの値入力項目で、全てのテキストボックスに入力しなくても(1つ以上値が入力されていれば)データをサブフォームに抽出できるようにしたいのです。 現在、「出荷開始」&「出荷終了」に値を入力すれば、その他の値(「顧客名」と「商品名」)を入力してもしなくてもデータが抽出できますが、「出荷開始」&「出荷終了」を入力しない限りデータが抽出されません。 この「出荷開始」&「出荷終了」を入力しないケースでもデータが抽出できる様なフォームを作成したいのですが、 どの様に記述を変えたらよいでしょうか?

  • メイン・サブフォームの内容を更新クエリで更新したい

    お世話になります。 現在、 tb受注日報(親)、tb受注伝票(子)で、受注伝票をサブフォームという形で組み込んだ【受注日報フォーム】と tb作業表(親)、tb作業表明細(子)で、作業表明細をサブフォームという形で組み込んだ【作業表フォーム】 があります。 【受注日報フォーム】上にあるコマンドボタンのマクロに、親同士、子同士での追加クエリを設定し、ボタンを押せば【受注日報フォーム】に入力した内容を【作業表フォーム】に反映させられるようにしています。 この要領でコマンドボタンを押せば以前に入力した【受注日報フォーム】の更新内容を【作業表フォーム】に反映させられるようにしたいと考えています。 そこで、親同士、子同士で更新クエリを作ってみた結果、親同士の更新は大丈夫でしたが、子同士の更新が一番目のレコードしか更新されませんでした。 更新クエリの抽出条件 親 フィールド 「識別番号」(オートナンバーです)   テーブル 「作業表」   抽出条件 [forms]![受注日報]![識別番号] 子 フィールド 「受注伝票番号」   テーブル 「作業表明細」   抽出条件 [forms]![受注日報]![受注伝票Sub].[form]![受注伝票番号] ちなみに親同士の追加クエリの抽出条件に使用した主キーは「識別番号」とは別の番号で、オートナンバーではなく、最大値に+1するやり方で振っている番号を使用していて、子同士の主キーは追加クエリも更新クエリもおなじ[受注伝票番号]を使用しています。 抽出条件かこの主キーの設定が問題なのかなあと思いますが、わからないのでどなたかご回答宜しくお願い致します。

  • (access )任意の数字以上でクエリ抽出したい

    フォーム上にテキストボックスと、サブフォームのクエリを配置しております テキストボックス(textbox1)に数字を入力し、その数字以上のフィールドを抽出したいのですが、上手く行きません 現在クエリの抽出条件に以下の式を入力していますが、レコードが一切表示されません。 (抽出はできますが) >=([Forms]![フォーム名]![textbox1]) どなたかご教授お願い致します

  • ACCESSでのクエリ抽出条件について

    ACCESS超初心者です。 自分なりに調べたのですが、知識不足によりお手上げ状態です。 クエリの抽出条件について、どなたかご教授いただけますでしょうか? OS:XP ACCESS:2000 ・フォーム上に自由に入力できるテキストを3つ用意します。 ・入力された3つのテキストが1つのフィールドに含まれるものをクエリで抽出したい。 ・3つのテキストが空欄の場合は全てのデータを抽出したい。 ■フォーム上のテキスト  テキスト1:テキスト10  テキスト2:テスト11  テキスト3:テスト12 ■テーブル  フィールド1:問合せ内容(1) ■クエリ内の抽出条件 Like "*" & [Forms]![F_検索テスト]![テキスト10] & "*" And Like "*" & [Forms]![F_検索テスト]![テスト11] & "*" And Like "*" & [Forms]![F_検索テスト]![テスト12] & "*" テキスト名がおかしいのですが、ご了承下さい。

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

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

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

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

  • ACCESS2003でクエリを使った検索フォームを作っています。

    ACCESS2003でクエリを使った検索フォームを作っています。 クエリは以下の様になっています。 ----------  番号   タイプ   品名  1111   AA     商品1  2222   AA     しょうひん2  3333   BB     商品しょうひん3 ---------- 品名のフィールドの抽出条件に ---------- Like "*" & [Forms]![品名検索フォーム]![品名検索] & "*" ---------- と入れています。 品名検索フォームは帳票タイプで、フォームヘッダーにテキストボックスを設け 「品名検索」と名前をつけています。 テキストボックスに【商品】と入力すれば番号1111と3333が、【しょうひん】と入力すれば 番号2222と3333が抽出されるように設定し、ここはうまく動きました。 ただ、このフォームを開いた際、テキストボックスは空欄になっているため、全レコードが 表示されてしまいます。テキストボックスが空欄の際は、何も表示したくないのですが どこを触ればいいのでしょうか? どうかよろしくお願いいたします。

  • ACCESS 追加クエリでレコード数の指定したい

    Win XP Access2003 見積伝票を作成しております。サブフォーム(帳票フォーム)の登録方法でご教授お願い致します。 "伝票明細テーブルW"(伝票番号,行番号,内容、数量、単価、・・・)を基にした "伝票明細クエリW"を作成し、入力しやすいようにフォームを開いた時に行番号(連番)を振り、30行表示するようになっています。 入力確認後に登録ボタンをクリックして追加クエリを開き"伝票明細テーブルW"から"伝票明細テーブル"に30件レコード保存するようになっているのですが、 場合によって内容が2~3行で終わる時があります。 このような時に無駄に30行のレコードを保存せず"内容"(フィールド)が入力されているの最終レコードまでで伝票明細テーブルに追加したいのですが、よい方法がありましたら宜しくお願い致します。 "内容"(フィールド)は途中に空白の時があります。 行番号    内容        数量  1     オイル交換      3.0  2  3     タイヤ交換       4.0