重複しないデータのみ別テーブルへ保存する方法

このQ&Aのポイント
  • 得意先の売上管理を作成する際、重複しないデータのみ別テーブルに保存したいです。具体的には、売上データを入力するフォームを作成し、保存する際に売上データが重複している場合は別テーブルに保存しないようにしたいです。
  • もう一つのテーブルには、得意先の機番リストがあります。このテーブルには、会社名、機種、機番のリストが保存されています。売上データの保存時に、機番が重複していない場合は得意先の機番リストにも追加するようにしたいです。
  • 具体的な方法ですが、売上データを保存する際に、まず別テーブルで重複チェックを行います。もし売上データが既に存在している場合は保存しないようにします。また、機番が重複していなければ得意先の機番リストにも追加します。このようにすることで、重複しないデータのみが別テーブルに保存されます。
回答を見る
  • ベストアンサー

重複しないデータのみ別テーブルへ保存する方法

 現在、得意先の売上管理を作成しています。 「T_一覧」には、売上日付、会社名、(その会社が使用している)機種、(その会社が使用している機種の)機番、請求金額のフィールドがあります。  (イメージ)  売上日付   会社名   機種    機番    請求金額  2010/4/1  AAA会社   あああ    111    \1000  2010/4/10  BBB会社   いいい    222    \3000  2010/5/7   CCC会社   ううう    333    \2000  また別テーブル「T_得意先の機番リスト」には、会社名、(その会社が使用している)機種、(その会社が使用している機種の)機番のリストのフィールドがあります。  (イメージ)    会社名   機種    機番        AAA会社   あああ    111        BBB会社   いいい    222          CCC会社   ううう    333   「T_一覧」を基に、売上を入力するフォームを作成し、フォーム上に、保存を行なうコマンドボタンを作成しました。保存コマンドボタンを押下すると、「T_一覧」へデータが保存されていきます。  それと同時に、保存コマンドボタンを押下すると、機番が重複していなければ、「T_得意先の機番リスト」へも追加していくようにしたいのですが、どのようにすればよいかわからず困っています。 ご教授お願い致します。

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

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.3

たとえば、「T_一覧」が質問の場合ならばクエリを実行しても 「T_得意先の機番リスト」には何も追加されませんが、  売上日付   会社名   機種    機番    請求金額  2010/4/1  AAA会社   あああ    111    \1000  2010/4/10  BBB会社   いいい    222    \3000  2010/5/7   CCC会社   ううう    333    \2000  2010/6/10  AAA会社  あああ    111    \1000  2010/6/12  BBB会社  あああ    111    \1000  2010/6/13  AAA会社  いいい    222    \3000  2010/6/15  DDD会社  ううう    333    \2000 「T_一覧」が以下ならば、クエリを実行すると「T_得意先の機番リスト」は    会社名   機種    機番        AAA会社   あああ    111        BBB会社   いいい    222          CCC会社   ううう    333      BBB会社   あああ   111    AAA会社   いいい   222    DDD会社   ううう   333 のようになります。2010/6/10ではAAA会社に2010/4/1に 販売したものと同じ機種が販売されていますが、 「T_一覧」には二重登録はされません。 補足の、 >同じ機番のものまで追加されてしまいます。 >どうしてでしょうか? というのは、たとえば上記の「T_一覧」の 2010/6/10ではAAA会社が111をすでに保有 しているが、再び販売したときクエリを 実行するとAAA会社の111が再び「T_得意先の機番リスト」 に登録されて二重に登録される、ということですか。 こちらではそのようにはならないのですが。 他の会社に同じものを販売した場合には 「T_得意先の機番リスト」には他の会社名と 機種、機番が登録されますが。

その他の回答 (2)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

選択する項目で、機種が抜けていました。 以下で。 INSERT INTO T_得意先の機番リスト ( 会社名, 機番, 機種 ) SELECT T_一覧.会社名, T_一覧.機番, T_一覧.機種 FROM T_一覧 LEFT JOIN T_得意先の機番リスト ON (T_一覧.会社名 = T_得意先の機番リスト.会社名) AND (T_一覧.機番 = T_得意先の機番リスト.機番) WHERE (((T_得意先の機番リスト.機番) Is Null));

pannnamama
質問者

補足

たびたびありがとうございます。 T_得意先の機番リストへ会社名、機種、機番が追加されるようになったのですが、 同じ機番のものまで追加されてしまいます。 どうしてでしょうか?

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

追加クエリで、 INSERT INTO T_得意先の機番リスト ( 会社名, 機種, 機番 ) SELECT T_一覧.会社名, T_一覧.機番 FROM T_一覧 LEFT JOIN T_得意先の機番リスト ON (T_一覧.機番 = T_得意先の機番リスト.機番) AND (T_一覧.会社名 = T_得意先の機番リスト.会社名) WHERE (((T_得意先の機番リスト.機番) Is Null));

pannnamama
質問者

補足

上記でやってみましたが、T_得意先の機番何も追加されませんでした。 どうしてでしょうか?

関連するQ&A

  • テーブルからテーブルへ移動するには?

    Access2000を使用しています。 1つのテーブルから同じフィールド名のデータ(複数あります)だけをもう1つのテーブルへ移動させる方法で、しかも、移動してくる側のフォーム上にコマンドボタンを置いて(例えば、追加ボタンとか)そのボタンを押すとフィールド名の一覧が出てきて、移動させたいフィールド名をそこでチェックすると、インポートされるみたいなイメージで、、、、、一番簡単な方法があればご教示ください。 是非、是非、ご存知の方、お願い致します。

  • アクセスでのデータ保存について。

    アクセスの登録画面で、ボタンをクリックしたときのみ保存したいのですが、×印を押して閉じても1つでもデータが入力されていたら、保存されてしまいます。保存というボタンをクリックして初めて、テーブルにデータが入っていくという風にはできないのでしょうか? tbl_商品・・・商品番号,商品名,更新日とあります。frm_商品・・・登録,修正,削除,参照,クリア,閉じるというコマンドボタンと商品番号,商品名,更新日のテキストボックスがあります。仕様としては、一画面で新規商品名入力やデータの修正、削除、商品一覧等が見れるようにしたいのです。frm_商品を開くときは、新規フォームだけが開けばいいのですが、入ってしまっているデータはやはり見れてしまうのでしょうか?参照をクリックすることでクエリを開かせて詳細情報が参照できるように作成したいのですが・・。

  • accessでの複数条件での検索について

    現在accessで売上管理を作成しています。 T_一覧には売上日付、担当者、品名、金額、入力者、入力日付のデータが格納されています。 F_一覧は、T_一覧を基に、すべてのデータが閲覧できるフォームです。 ヘッダー部分に、売上日付、担当者、入力者、入力日付のテキストボックスを配置し、「検索」コマンドボタンを押下すると、検索したい条件に一致するデータのみが表示されるようにしたいです。 現在は担当者と入力者に検索したい値を入力し、「検索」ボタンを押下すると、条件に合ったデータのみが表示されるのですが、売上日付と入力日付に検索したい日付を入力しても、なにも検索できません。 担当者と入力者はQ_検索をT_一覧より作成し、抽出条件にLikeを使っています。 日付はどのように抽出条件にかけばよいのでしょうか?

  • 別ブックのマクロよりコマンドボタンを押下する方法

    当方、VBAに関しては初心者です。 EXCEL2000のVBAで作成したプログラムAの操作を、マクロを使って別のブックに記録させたのですが、マクロを実行しても途中で操作が止まってしまいます。 マクロを変更することで解決できる方法がわかる方がいらっしゃったら教えてください。 ※RocketMouseのようなWindows操作制御ソフトが会社では利用禁止とされていて使えません。 ちなみにVBAで作成したプログラムAは ・ユーザーフォーム上に2つのコマンドボタン(「次へ」「終了」)と4つのラジオボタンがあります。 ・「次へ」を押下すると別のユーザーフォームへ遷移します。 ・遷移先のユーザーフォームにはコマンドボタン(「戻る」)があります。 ※ただし、会社の資産であるためプログラムAを変更することはできません。 マクロで記録した操作は以下の(1)~(4)です (1)ラジオボタンはデフォルト表示のままで (2)コマンドボタン「次へ」を押下して別のユーザーフォームへ遷移 (3)遷移先のユーザーフォームでコマンドボタン「戻る」を押下 (4)(1)のユーザーフォームに戻った後コマンドボタン「終了」を押下 別のブックに(1)~(4)の操作を記録させ実行しましたが、(2)でコマンドボタン「次へ」が押下されず、別のユーザーフォームへ遷移できません。 マクロの変更で別のユーザーフォームへ遷移させる方法を教えてください。 ※コマンドボタン「次へ」の関数はPublic Subで定義されてます。 よろしくお願いします。

  • パソコンへのデジカメデータ保存方法について

    デジカメのデータを保存ウィザードを使用しパソコンに保存したいのですが 「画像とビデオを読み込んでいます。 このデバイス上に新しい画像とビデオが見つかりませんでした。」となり保存ができない。保存ウィザードを使い、フォルダ名、ファイル名に名前がつけられるようにするにはどうすればよいですか? ・ウインドウズビスタです。 ・ダイナブックAX/53Dです。 ・一度保存ウィザードを使用しパソコンに保存したのですがフォルダ名が日付で、ファイル名が番号になってしまっている。 (つまり今回は同じデータの二回目の保存です。最初に保存したデータのは削除しました。) ・再起動してから接続したが状況は変わらず。 ・たとえばフォルダ名を「20080101京都」 にして、ファイル名を「20080101京都001」から始まる 通し番号にしたいのです。 ・カメラはソニーサイバーショットT10です。 よろしくお願いします。

  • Accessのデータをコマンドボタンをクリックしただけで、保存させたいのですが・・・

    Accessのデータをコマンドボタンをクリックで、Aというフォルダにcsv形式で保存させたいのですが、フォームのコマンドボタンのプロパティでどのように設定してよいかわかりません。 会社に誰も聞ける人がいなくてたいへん困っています。 どなたかわかる方教えてください。 よろしくお願いします。

  • ACCESS リストボックスに検索結果を表示したときに

    ACCESSのフォームで、 検索条件を入れて、【検索】ボタンを押下すると、 リストボックスにヒットした一覧を表示するというものを作っています。 そのとき、【検索】ボタンを押下した後、リストボックスの一番上にフォーカスがあたっているように(黒く選択されているように)することは可能でしょうか。 それはどのようにすればよいでしょうか。 よろしくお願いします

  • マクロで「名前を付けて保存」を実行したいのですが

    エクセル2000でマクロを作成しています。 そのマクロを作成したファイルを、各ユーザーが使用しますが、作業途中のファイルを「名前を付けて保存」したいと考えています。 しかし、各ユーザーのPC環境がまちまちなので、保存ファイルのパス名の記述が画一的に出来ない状況となっています。 そこで、エクセルの名前を付けて保存のショートカットキー『F12』の押下動作をユーザーフォーム上のコマンドボタンで出来るようにしたいのです。 単純にF12キーを押せばいいのですが、ユーザーはショートカットキー操作は全く慣れていないので、ユーザーフォーム上のオブジェクトだけで操作が出来るようにしたいと考えています。 どなたか、この方法がお分かりの方がおられましたら、ご教示頂きたくお願い致します。

  • DBから取得したデータをCSVファイルとして保存する方法

    またまたお世話になります。 DBから取得したデータを任意のパス、ファイル名でCSV形式で保存する方法がわかりません。 具体的に書きますと・・・ 現在の状態 ・データは取得できている。 ・コモンダイアログコントロールのShowSaveメソッドで「ファイル名をつけて保存」ダイアログは表示できている。 現在の状態で「保存」ボタンを押下したときにファイル名が正常(拡張子がCSVかつファイル名入力欄が空白でないこと)な場合にファイル名で決定したファイルを作成したいのですが、ファイルの読み込みについては理解しているのですが、書き込みついては分かりません。 よろしくご教授ください。

  • 違うシートのデータを1つのPDFファイル保存VBA

    Sub データPDFファイル化() If MsgBox("ファイルをPDF化し過去データとして保存します。よろしいでしょうか?", vbYesNo) = vbNo Then End End If If Range("L2").Value <> "" Then Dim Fn As String Fn = Format(Range("L2"), "yyyy年m月d日") & ".pdf" ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _ Filename:="D:\フォルダB\過去記録データ保存用フォルダ\データ\" & Fn Else MsgBox "セルL2にファイル名が入力されていません。", vbExclamation End If End Sub この様なコードがあります。エクセル2003では使用出来ないのでエクセル2007以降の使用です。 これはシート名「A」にコマンドボタンを設置し、そのコマンドボタンを押すとPDF化して保存するマクロです。 そこで質問ですがコマンドボタンを押すとシート名「A」と隣にあるシート名「B」をまとめてPDFファイルで保存する方法はどの様にすれば良いのでしょうか? PDF化した際は1ページ目がシート名「A」で2ページ目がシート名「B」を表示させ、名前はシート名「A」のL2(yyyy年m月d日)で保存します。

専門家に質問してみよう