回答お願いします。
[メインデータ]というアクセスファイルがあり、検査記録のテーブルがあります。
検査記録のテーブルには判定フィールドがあり合格、不合格が入力されます。
この不合格が入力されたレコードを、別のaccessファイル[異常記録]の社内異常記録テーブルにコピーしてきたいです。
この検査記録のフィールド名と社内異常記録のフィールド名は異なっています。
手順としては、
①異常記録ファイルに検査記録のリンクテーブルを作成する。
②クエリにてリンクテーブルから不合格のレコードを選択し、社内異常記録テーブルに追加する。
という方法を教えてもらったのですが、問題がでたので教えてもらいたいです。
この不合格のレコードは検査記録テーブルにそのまま残さなければならないデータなので、②の不合格レコードを抽出し追加するクエリを実行すると、毎回同じ不合格のレコードも追加されてしまいます。
例えば、検査記録に10件の不合格レコードがあり追加クエリで10件の不合格データを社内異常記録テーブルに移します。その後2件不合格のレコードが検査記録に入力されたとします。この時点で検査記録テーブルには12件の不合格レコードがあります。ここでもう一度追加クエリで不合格のレコードを追加クエリで移すと先の10件+12件で22件のレコードになってしまいます。当然前の10件は重複したレコードになっています。
これを解決する方法はありますか?
削除クエリで追加クエリ前に全データを削除も考えたのですが、社内異常記録のテーブルには手入力する箇所が複数あるので削除は使えません。
リンクテーブルも下手に触ってしまうと検査記録に支障が出てしまうので、出来ればリンクテーブルを使わない方法があれば教えてもらいたいです。
ややこしい話ですので、その都度追記させてもらいますのでよろしくお願いします。
No.4ベストアンサー
- 回答日時:
スッキリと分かるようになりました。
以下は異常記録.accdbのパスをE:\folderU\異常記録.accdbにしてある場合のSQL文です。
そちらの環境に合わせて変更してください。
そのSQL文をメインデータ.accdbの新規クエリのSQLビューにコピペし
出来た更新クエリを走らせてみてください。
INSERT INTO 社内異常記録 ( 検査番号, 社名, 品名, 測定値 ) IN 'E:\folderU\異常記録.accdb'
SELECT 検査番号, 社名, 品名, 測定値1 & '/' & 測定値2 AS 測定値
FROM 検査記録
WHERE 検査番号 NOT IN (SELECT 検査番号 FROM 社内異常記録 IN 'E:\folderU\異常記録.accdb');
なお、確認ですが
異常記録.accdb
社内異常記録
No オートナンバー型 主キー・インデックス有
検査番号 テキスト型 インデックス無
社名 同上
品名 同上
測定値 同上
の検査番号フィールドには、メインデータ.accdbの検査番号が入るのですよね?
でしたら、データ型を長整数型にしてください。
また、念のため、インデックス有・重複なしに設定しておいた方が安全のように思えます。
あと、Noというフィールド名は適切でないので、IDなどに変更をお勧めします。
No.3
- 回答日時:
ん~と・・・念のため、
ファイル名やオブジェクト名が分かりにくいので下記のように
列挙してもらえますか?
ファイルA.accdb
テーブルA名
フィールドA名 データ型 主キー・インデックスの有無
フィールドB名 同上
フィールドC名 同上
・・・・・
ファイルB.accdb
テーブルB名
フィールドA名 データ型 主キー・インデックスの有無
フィールドB名 同上
フィールドC名 同上
・・・・・
ファイルAからファイルBへ書き込むものとします。
ファイルAのテーブルAの各フィールドとテーブルBのフィールドとの対応も。
No.2
- 回答日時:
社内異常記録テーブルの中の適切なフィールドに
主キーを設定するか、インデックスあり/重複なしにすれば
追加クエリの際に重複するモノは弾かれます。
追加クエリを行った後で
検査記録のテーブルのレコードに付け足したい内容があり修正した場合、
これを更新クエリで変更するためには更新日時のフィールドが必要になってくると思います。
または
社内異常記録テーブルに追加日時フィールドを設定し
追加クエリ時の日時を記録するようにします。
重複クエリで
追加日時フィールドに最大、その他はグループ化などとすれば
最新のモノの一覧が得られるのではと思います。
・・・
何にせよ、テーブルのデザインが大きな鍵になっているのは間違いないかと。
No.1
- 回答日時:
元テーブルに、データが発生した日時を記録しておく。
テーブルを作って、追加クエリの最終実行時間を記録しておき、再度追加クエリを走らせる際には、抽出条件でそれ以降に発生したデータのみを対象とする。昇順で、インデックス振っているなら、それを使っても良い。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
これ何て呼びますか Part2
あなたのお住いの地域で、これ、何て呼びますか?
-
他ファイルのテーブルの情報を取得したい
Access(アクセス)
-
(ACCESS)複数mdbからのデータ取得方法
その他(Microsoft Office)
-
アクセスVBAで既に開いているエクセルを閉じたい
Yahoo!ショッピング
-
-
4
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
5
アクセスでレコードの内容が変更されたかどうかを調べるには
Access(アクセス)
-
6
AccessVBAで他テーブルのデータを取得する方法について。
Visual Basic(VBA)
-
7
2つ目のレコードの値を取得するには?
Access(アクセス)
-
8
Access サブフォームでの選択行の取得
その他(データベース)
-
9
ACCESSで別DBにあるクエリを実行する
Visual Basic(VBA)
-
10
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
11
他のMDBのテーブルに追加したい
その他(プログラミング・Web制作)
-
12
選択したチェックボックスのみチェックを入れたいのですが
その他(データベース)
-
13
アクセスで入力したデータの順番が変わってしまいます
その他(ビジネス・キャリア)
-
14
2つのテーブルに共通するレコードを削除したい
Access(アクセス)
-
15
AccessのSQL文で1件のみヒットしたら終了させる構文。
その他(データベース)
-
16
別テーブルからSELECTした値を持つ行を削除するSQLは?
その他(データベース)
-
17
ACCESSからSQLServerのデータを取得したい
その他(データベース)
-
18
1つ前のレコードのフィールドをコピーするVBAについて
Access(アクセス)
-
19
ACCESS 複数のフォームから同一テーブル参照
Access(アクセス)
-
20
ACCESS フォームをそのまま印刷について
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・【大喜利】【投稿~8/27】 こんなガソリンスタンド二度と来るか!なぜそう思った?
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・【お題】動物のキャッチフレーズ
- ・【お題】甲子園での思い出の残し方
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・自分用のお土産
- ・人生で一番お金がなかったとき
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・ちょっと先の未来クイズ第1問
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESS DCOUNTの抽出条件について
-
Access vbaで重複レコードの削...
-
データがあれば○○なければのSQL
-
【access】複数のフィールドの...
-
Accessで縦と横を入れ替えたい
-
SQLServer→Access インポート
-
ACCESSで実行時エラー3008
-
アクセスで定数を利用したい。
-
Access+VB コンボックスに値を...
-
ACCESSで購入回数を表示する方...
-
DAOでSQLServerに接続し、LeftJ...
-
「ご処理進めて頂きますようお...
-
CloseとDisposeの違い
-
エクセルで、日付を入力すると...
-
UPS警告音を止めたい
-
エクセルVBAで、MsgBox やInput...
-
エクセルの画面にユーザーフォ...
-
【Excel】特定の文字を含むセル...
-
Excelシート上のマクロを登録し...
-
DoEventsがやはり分からない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
データがあれば○○なければのSQL
-
ACCESS DCOUNTの抽出条件について
-
ACCESS VBAでテーブル内の特定...
-
【access】複数のフィールドの...
-
Access vbaで重複レコードの削...
-
重複した複数のレコードを1レ...
-
SQLServer→Access インポート
-
ACCESSのクエリ、SQLに変数を使...
-
別のaccessファイルからデータ...
-
Accessで縦と横を入れ替えたい
-
ACCESSで実行時エラー3008
-
アクセスで定数を利用したい。
-
抽出条件でデータ型が一致しま...
-
テーブル作成クエリを実行した...
-
社員名簿から検索する関数
-
ACCESSで購入回数を表示する方...
-
Access から Excelのシートをイ...
-
DataGridViewで複数条件の抽出...
-
アクセスで連続データをテーブ...
-
VBAからADOを使ってクエリのク...
おすすめ情報
異常記録ファイルの検査記録テーブルはリンクテーブルとしてのみ使うので、これを更新したりするつもりはありません。
この検査記録のテーブルから社内異常記録のテーブルに必要なフィールドのデータを追加クエリで移したいのですが、先に書いたように重複してしまうのですが、これは"インデックスあり/重複なし"で対応出来るのでしょうか?
検査記録テーブルには検査番号というオートナンバー型のフィールドがあるのでこの番号と重複しないものなど出来るのでしょうか?
社内異常記録テーブルに直接入力したいものはフォームを使って入力するつもりですので、そこは問題ないと思っています。
メインデータ.accdb
検査記録
検査番号 オートナンバー型 主キー・インデックス有
社名 テキスト型 インデックス無
品名 同上
測定値1 同上
測定値2 同上
判定 同上
異常記録.accdb
社内異常記録
No オートナンバー型 主キー・インデックス有
検査番号 テキスト型 インデックス無
社名 同上
品名 同上
測定値 同上
です。インデックスがよく分からないので何処が必要かが分かりません。
検査番号、社名、品名は同フィールドにいき、測定値1と2は/で区切って、社内異常記録の測定値フィールドでデータを結合したいです
判定は抽出条件のみ使うだけでデータを移す必要はありません
よろしくお願いします