回答お願いします。
[メインデータ]というアクセスファイルがあり、検査記録のテーブルがあります。
検査記録のテーブルには判定フィールドがあり合格、不合格が入力されます。
この不合格が入力されたレコードを、別の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で質問しましょう!
似たような質問が見つかりました
- Access(アクセス) アクセスの更新クエリでカレントレコードのみ更新したい 1 2022/06/02 23:32
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- PHP クエリObjectをforeachで回す時に、次のレコードへ移動せずに次のレコードを取得したい 2 2022/07/28 15:29
- その他(データベース) IT用語について質問です。 以前ITパスポートの試験を受けた際にデータベースが何の集まりかについての 2 2022/12/10 12:29
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- Access(アクセス) Access DAOのExecuteメソッドのオプション(RecordsetOptionEnum)に 1 2022/09/19 07:34
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
このQ&Aを見た人はこんなQ&Aも見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
他ファイルのテーブルの情報を取得したい
Access(アクセス)
-
2つのテーブルに共通するレコードを削除したい
Access(アクセス)
-
ACCESS フォームをそのまま印刷について
その他(データベース)
-
-
4
Accessで別mdbのテーブルをコピー
その他(プログラミング・Web制作)
-
5
AccessVBAで他テーブルのデータを取得する方法について。
Visual Basic(VBA)
-
6
ACCESSで値を代入できないとは?
Visual Basic(VBA)
-
7
アクセスで数値型のフィールドにNullをいれたい
その他(データベース)
-
8
Accessのテーブルデータを一気にVBAで追加したい・・
その他(データベース)
-
9
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
10
ACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ
Access(アクセス)
-
11
他のMDBのテーブルに追加したい
その他(プログラミング・Web制作)
-
12
Accessを開きなおすとテキストボックスの値がエラー#Name?になる
その他(データベース)
-
13
AccessからExcelにエクスポートする時に常に上書きしたい
Excel(エクセル)
-
14
Access クエリの結果が0件だった場合、エラーを表示させる方法
Access(アクセス)
-
15
カレントレコードが無い事を判定させる方法
Visual Basic(VBA)
-
16
アクセスで入力したデータの順番が変わってしまいます
その他(ビジネス・キャリア)
-
17
アクセスでレコードの内容が変更されたかどうかを調べるには
Access(アクセス)
-
18
アクセスでテキストボックスの値が空白だったら
Access(アクセス)
-
19
ACCESSでフォームのチェックボックスにチェックを入れて任意の数値を入力したい!!!
Access(アクセス)
-
20
Accessでレコードが更新された時に発生するイベント。
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access vbaで重複レコードの削...
-
Access2013の式ビルダーでユー...
-
sql文で削除クエリを書く
-
重複した複数のレコードを1レ...
-
データがあれば○○なければのSQL
-
ルックアップフィールドについて
-
DAOでSQLServerに接続し、LeftJ...
-
別のaccessファイルからデータ...
-
アクセスで定数を利用したい。
-
ACCESS VBAでテーブル内の特定...
-
「ご処理進めて頂きますようお...
-
CloseとDisposeの違い
-
エクセルで、日付を入力すると...
-
VBAでループ内で使う変数名を可...
-
switch の範囲指定
-
【Excel】特定の文字を含むセル...
-
VBA エンターキーでイベントに...
-
アクセスVBAのMe!と[ ]
-
VBAにてメッセージボックスを最...
-
エクセルVBAで、MsgBox やInput...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
データがあれば○○なければのSQL
-
【access】複数のフィールドの...
-
ACCESS VBAでテーブル内の特定...
-
Access vbaで重複レコードの削...
-
ACCESS DCOUNTの抽出条件について
-
Accessで縦と横を入れ替えたい
-
VBAでテーブル名とカラム名を動...
-
DataGridViewで複数条件の抽出...
-
Access から Excelのシートをイ...
-
重複した複数のレコードを1レ...
-
DAOでSQLServerに接続し、LeftJ...
-
SQLServer→Access インポート
-
ACCESSで実行時エラー3008
-
sql文で削除クエリを書く
-
別のaccessファイルからデータ...
-
access追加クエリーでform入力...
-
抽出条件でデータ型が一致しま...
-
【PHP/MySQL】コード上で生成...
-
Accessリンクするテーブルが見...
-
ACCESSで購入回数を表示する方...
おすすめ情報
異常記録ファイルの検査記録テーブルはリンクテーブルとしてのみ使うので、これを更新したりするつもりはありません。
この検査記録のテーブルから社内異常記録のテーブルに必要なフィールドのデータを追加クエリで移したいのですが、先に書いたように重複してしまうのですが、これは"インデックスあり/重複なし"で対応出来るのでしょうか?
検査記録テーブルには検査番号というオートナンバー型のフィールドがあるのでこの番号と重複しないものなど出来るのでしょうか?
社内異常記録テーブルに直接入力したいものはフォームを使って入力するつもりですので、そこは問題ないと思っています。
メインデータ.accdb
検査記録
検査番号 オートナンバー型 主キー・インデックス有
社名 テキスト型 インデックス無
品名 同上
測定値1 同上
測定値2 同上
判定 同上
異常記録.accdb
社内異常記録
No オートナンバー型 主キー・インデックス有
検査番号 テキスト型 インデックス無
社名 同上
品名 同上
測定値 同上
です。インデックスがよく分からないので何処が必要かが分かりません。
検査番号、社名、品名は同フィールドにいき、測定値1と2は/で区切って、社内異常記録の測定値フィールドでデータを結合したいです
判定は抽出条件のみ使うだけでデータを移す必要はありません
よろしくお願いします