• ベストアンサー

Accessのレポート作成について教えてください。

Access2003を使用しています。 「T取引先マスタ」と「T取引先の契約内容」があります。 それをT取引先マスタを親とし、T取引先の契約内容を子サブフォームとした「F取引先と契約内容」を作りました。 連結フィールドは取引先IDです。 次に「F取引先と契約内容」の項目全てをレポートにしました。(T取引先マスタとT取引先の契約内容をクエリで連結させました。) レポートは3種類必要です。 契約状況がキーになります。 1.契約の有無に関わらず取引先マスタ詳細すべて。 2.契約締結している取引先マスタ詳細すべて。 3.契約締結していない取引先マスタ詳細すべて。 契約締結日のところに「Null」値で条件付けしました。 1.は問題なく作成できました。 2.3.がうまく出来ません。 取引先IDが2件出てしまうのです。 取引先ID 取引先のもろもろの情報 契約種類 101    ・・・           基本 101    ・・・           業務委託 101    ・・・           基本 101    ・・・           業務委託 契約種類は「基本」と「業務委託」の2種類があります。 クエリのデータシートでは次のようになっています。 取引先ID-契約種類  101  - 基本  101  - 業務委託 取引先IDはひとつとして、サブフォームの2種類の契約内容を契約締結日をキーとした条件抽出のレポートを作成するには、どのようにしたらいいのでしょうか? 取引先ID-契約種類  101  - 基本  101  - 業務委託    102  - 基本  102  - 業務委託 どなたか教えてください! 宜しくお願いいたします。

  • 375k
  • お礼率60% (176/289)

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

  • ベストアンサー
  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.3

>T取引先マスタとT取引先の契約内容 名前だけで中身の情報無しでは推理のしようがありません >契約締結日のところに「Null」値で条件付けしました。 これもそうですね、いきなり契約締結日といわれたって >2.契約締結している取引先マスタ詳細すべて。 取引策マスタの主キー(取引先ID)の抽出条件欄に In (select 取引先ID from T取引先の契約内容) >3.契約締結していない取引先マスタ詳細すべて 同じく Not In (select 取引先ID from T取引先の契約内容)

375k
質問者

補足

ご回答ありがとうございます。 教えていただいたとおりにやってみたのですが、構文エラーが出てしまいました。 「クエリ式'(((取引先マスタ.取引先ID)In(select 取引先ID from T取引先_契約内容)) AND ((取引先_契約内容.契約締結日) Is Not Null) AND ((T取引先_契約内容.契約解決日) Is Null))'の構文エラー」 別の行にNULLの抽出値を入れているからでしょうか? 行を入れ替えてみると、構文エラーの配列は変わりますが、内容的には同じ物が表示されます。 In とは、In関数というものがあるのでしょうか? ご負担をかけて申し訳ないのですが、よろしかったら教えてください。

その他の回答 (3)

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.4

>「クエリ式'(((取引先マスタ.取引先ID)In(select 取引先ID from T取引先_契約内容)) AND ((取引先_契約内容>.契約締結日) Is Not Null) AND ((T取引先_契約内容.契約解決日) Is Null))'の構文エラー」 これはエラーメッセージそのままですか? だったらINの前後のスペースが向けていますね >In関数というものがあるのでしょうか? 関数ではありません。演算子です 後ろにレコードセットとかリストを書きその中のどれかに合致するものと言う意味になります

noname#140971
noname#140971
回答No.2

補足: クエリ1: SELECT 取引先.ID, 取引先.名称, 取引先契約履歴.契約区分, 取引先契約履歴.契約締結日 FROM 取引先 INNER JOIN 取引先契約履歴 ON 取引先.ID = 取引先契約履歴.取引先_ID; これだけでも事足りるでしょう。 ※つまり、テーブル設計次第です。

noname#140971
noname#140971
回答No.1

どうも質問内容がよく理解できません。 取引先: ID__名称 1___A社 2___B社 取引先契約履歴: ID__取引先_ID__契約区分__契約締結日 1___________1_________1__2007/11/01 2___________1_________2__2007/11/01 クエリ1: ID__名称__契約区分__契約締結 1___A社___基本______2007/11/01 1___A社___業務委託__2007/11/01 SELECT 取引先.ID, 取引先.名称, 取引先契約履歴.契約区分, 取引先契約履歴.契約締結日 FROM 取引先 INNER JOIN 取引先契約履歴 ON 取引先.ID = 取引先契約履歴.取引先_ID WHERE (((取引先契約履歴.契約締結日) Is Not Null)); どうも質問内容がという理由は、こういう結果もありえて当然ということです。 3.契約締結していない取引先マスタ詳細すべて。 これは、INNER JOIN か LEFT JOIN の問題ではないかと・・・。 クエリ2: ID__名称__契約区分__契約締結日 _______________________________ SELECT 取引先.ID, 取引先.名称, 取引先契約履歴.契約区分, 取引先契約履歴.契約締結日 FROM 取引先 INNER JOIN 取引先契約履歴 ON 取引先.ID = 取引先契約履歴.取引先_ID WHERE (((取引先契約履歴.契約締結日) Is Null)); クエリ3: ID__名称__契約区分__契約締結日 2___B社________________________ SELECT 取引先.ID, 取引先.名称, 取引先契約履歴.契約区分, 取引先契約履歴.契約締結日 FROM 取引先 LEFT JOIN 取引先契約履歴 ON 取引先.ID = 取引先契約履歴.取引先_ID WHERE (((取引先契約履歴.契約締結日) Is Null)); しかし、ここに書いている程度のテーブル設計とSQL文を示せば一発解決じゃないですか?

関連するQ&A

  • Accessで3つのテーブルの結合とフィールドについて教えてください。

    Access2003を使用しています。 「取引先マスタ」テーブルに契約の情報ものせることにしました。 契約は今のところ2種類ありますが、3種類になる可能性もありそうなので、応用が利くようにサブフォームにしました。http://questionbox.msn.co.jp/qa3473958.html 契約内容では弊社の誰が担当したのかわかるようにしたいです。 けれど担当者は新たにフィールドを設けずに、担当者マスタのテーブルから引っ張ってきたほうが良いのかなと思いました。 とすると、契約のテーブルには担当者IDだけでも加えないと結合できないなと思いました。 質問1.この考え方であっているでしょうか? 各テーブルは下記のようになっています。 質問2.T取引先マスタとT担当者マスタに「担当者」という同名のフィールドがありますが、意味合いは違います。これは「取引先担当者」と「弊社担当者」と名前を分けたほうがよいのでしょうか? 一緒でもなんとかいけるものでしょうか? テーブルの正規化いうものがしっかりと理解できていないので正しいのかどうがわかりかねています。 この3つのテーブルを結合させて、フォームとレポートを作りたいのです。 そして、契約締結済みと未締結との取引先に抽出わけをしたいのです・・・が、ここでつまずいてしまって困っております。 お手数をおかけして申し訳ないのですが、どなたかご教示ください。 よろしくお願いいたします。 T取引先マスタ  ID  取引先ID  取引先名  フリガナ   部署名   担当者名・・・・・・取引先の担当者名  郵便番号  都道府県  住所1  住所2  電話番号  FAX番号  URL  電子メール  備考   T取引先_契約内容  ID  取引先ID  契約種別・・・・・・基本と業務委託がある  契約締結日  契約終了日  契約者役職  取引先契約者名  担当者ID・・・・・・弊社の担当者を判別するもの。T担当者ますたと結合する。 T担当者  担当者ID  並べ替え  担当者名  フリガナ  備考  

  • アクセスでフォームに追加項目を増やす場合、サブフォームにしたほうがよいのか、しないほうがよいのか教えてください。

    Access2003を使用しています。 「取引先マスタ」という取引先の住所などが入ったフォームに契約書に関するデータも入力できるようにして欲しいと依頼が入りました。 それは契約の種別ごとに「契約締結日」、「取引先契約者」、「弊社担当者名」を設けます。 このような場合、契約書に関するデータは別のテーブルに入力してサブフォームにしたほうがよいのでしょうか? それとも「取引先マスタ」と同じフォームのなかに入れたほうがよいのでしょうか? あとで支障が出にくい方法をとりたいのですが、Accessに熟練されている方はどちらの方法を取られているのでしょうか? アドバイスをお願いいたします。

  • ACCESS2007 DMaxについて

    WinVistaでACCESS2007を使っております。 顧客との取引履歴のデータベースを少しずつ作っております。 現在のデータベース構成は簡単に書きますと、 「顧客T」 ・顧客ID ・顧客名 ・ ・ ・ ・最終取引日 「取引T」 ・取引ID ・顧客ID(顧客Tの顧客IDとリレーション) ・取引日 ・取引内容 という感じです。 顧客Tをソースに「顧客フォーム」を作り、そのフォーム内にサブフォームで 取引履歴として「取引履歴サブフォーム」。「取引日」「取引内容」のみ表示して 入力しております。 やりたいことは、フォームを開いた際に、サブフォーム内の取引日の中で 最新の日付をメインフォームの「最終取引日」フィールドに入力して、データ を更新していきたいです。 非連結のフィールドを作って表示だけすればいいのかもしれませんが、 現状データとして格納していきたいです。 VBAでメインのフォーム「開くとき」にDMaxで最大の日付を拾えばいいかと思い 試してみましたが、エラーが出てしまいます。 いろいろ試してみましたが、記述はこんな感じです。 Me.最終取引日=DMax("日付",Me.取引履歴サブフォーム) としてみました。 どなたかお力を貸してください。

  • 電子取引(BtoB)の場合の契約書の作成方法

    電子取引(企業対企業)を取引先と行う場合、関連サイトを検索すると 電子契約書が必要であるとされていますが、文書で作成された 取引基本契約書が締結されていることが前提に提示されています。 「取引基本契約書(既存)」+「電子取引基本契約書+システム運用規約(作成)」 取引基本契約書をわざわざ締結していない場合、「例えばA店から鉛筆10本を 購入した。」という場合、基本契約は締結していません。EDI取引を行う場合 必ず取引基本契約を締結していなければいけないのでしょうか? 「電子取引基本契約書+システム運用規約(作成)」の締結だけではいけないの でしょうか?

  • access2000のレポートについて。

    お世話になります。前に質問した件がまだ解決していないのに、また質問してすみません。 質問NO.217579の時のデータベースなのですが、T_グループ名の印刷フィールドのチェックボックスがonになっているものを選択クエリで作っています。そこにはT_個人名簿のグループIDが同じレコードも抽出されます。 このクエリをもとにレポートを作っているのですが、レポートの詳細にはクエリで表示された目的のグループIDに該当するすべてのデータが表示できました。でも、T_個人名簿の代表者フィールドのチェックボックスがonになっている人を、レポートのグループIDヘッダーにも表示させたいのです。 フィールドリストにない値って表示できないのでしょうか?どなたかご指導お願いします。

  • アクセスの設計のことについて教えてください。

    Access2003を使用しています。 前任者が作ったのを使用者(一人)に依頼されて、その都度、修正をしています。 使用者が思い立ったときに、依頼があります。 今は、取引先マスタに契約内容を入力できるようにして欲しいと言われております。 「契約締結日」を入れます。 契約が締結中かどうかを判断するフィールドは要りませんか?と聞くと、今はまだ要らないとの答え。 いずれ必要にはなるだろうけれど当分先(2,3年後)のことになるそうです。 でも、いずれは必要になるそうです。その時に設けて欲しいそうです。 そこで、教えていただきたいのですが、「必要になった時に追加する」のと、「初めから設けておく」のとどちらが良い手段のでしょうか? 操作方法が書いた本はいくつか持っていますが、設計の仕方までは書かれていないため、設計わかりません。 どなたか考え方もあわせてご教示いただけないでしょうか。 (設計を考えるときの良い本や、Webサイトがありましたらそちらも教えていただけると助かります。) 基本的な質問をしていたら申し訳ありません。 よろしくお願いいたします。

  • アクセス レポートの情報の並べ替え

    クエリからレポートボタンを作成しました。 業務請負先企業に配属している作業スタッフを管理するための表です。 10社の取引先について各20人の作業員をイメージしてください。 クエリでは取引先の営業所についてア行からの並べ替えによって情報を見やすくすることができるのに、レポートでは並べ替えルールが反映されていません。 これはレポートの性質によるものでしょうか。 それともレポートでも並べ替えが可能なのでしょうか。 ご回答お願いいたします。

  • NDA(秘密保持契約)について

    ある会社A社と取引の可能性検討をするために、昨年NDA(秘密保持契約)を締結しました。 最近、A社と取引すること自体は決定しました。 ただ、委託する内容は完全に確定していません。 NDA上の開示期間は来月までなので、委託する内容が完全に確定していないので、取引の可能性検討が完全に確定していないことから、NDAを延長(具体的には開示期間を延長する覚書を締結)する必要はありますでしょうか?  それとも、A社と取引すること自体は決定したので、NDAの目的は達成したので、NDAは延長する必要はないでしょうか? 私見では、A社とはすでにNDAを締結する前から、基本契約書を締結済で、その基本契約書に秘密保持規定があるし、A社と取引すること自体は決定したので、あとは基本契約書に従い、取引の打ち合わせ過程として、委託する内容を確定するだけよく、必ずしもNDAを延長する必要はないと思われますが。 よろしくお願いいたします。

  • Access2002レポートのページ印刷について

    質問させていただきます。 Access2002で取引先別の売上明細(売掛金元帳)を作成しています。 レポートヘッダー(または取引先ヘッダー)に取引先情報(名称等)、ページ番号を配置し、詳細に取引内容(品名、金額等)を配置しています。このレポートでは、1つの取引先の取引内容を1ページに表示し、次ページに次の取引先を表示します。このとき、1つ目の取引先の取引内容が1ページに収まらない場合は2ページ目に表示します。そこで、同一取引先の場合、ページ番号を1、2、3・・・とし、次の取引先ではページ番号を1に戻したいのですが、その方法がわかりません。どなたかお分かりのかたお教えください。

  • 取引基本契約と業務提携契約の違い

    取引基本契約を締結した会社(先方)に対して 業務提携契約を結ぶ事は、可能でしょうか? 現行、基本契約は、締結しているものの、当社からの 一方的な契約に近い形になっています。 それを甲と乙の関係では無く、平等に近い形にしたいのです。平等に近い形の契約は、どの種類の契約を締結したら良いでしょうか?