
テーブル:T_管理1、T_管理2
フィールド: F1、F2(T_管理1)
ID、商品名(T_管理2)
となっています。
T_管理1は一時テーブルでレコードをT_管理2に放り込みます。
ただ、放り込む際にIDが重複しては困るのでそのチェック
をかけたいと思いますが、どこでかけるといいのでしょうか?
VBAでレコードセットをループさせ有無チェックをしてから
AddNewをするのであればわかるのですが、できればアクション
クエリで解決できればと思っています。
INSERT INTO T_管理2 ( ID, 商品名 )
SELECT F1, F2
FROM T_管理1
WHERE (((F1) Not In (SELECT ID FROM T_管理2)));
でどうかと思ったのですが、レコードは1件も抽出されませんでした。
Access2000
No.2
- 回答日時:
> WHERE (((F1) Not In (SELECT ID FROM T_管理2)));
>を WHERE (((F1) In (SELECT ID FROM T_管理2)));
>で、逆にするとヒットするのです。
ということは、矢張りデータなのではないでしょうか?
T_管理1 に入力されているデータが全件、既にT_管理2にも入っている、ということになりませんか?
もしこの仮説が外れているようであれば、後はデータの破損くらいしか考えられないような気がします。
(データベースの修復とかを試してみると・・・?)
この回答への補足
修復しても直らなかったのですが、なぜか、#3さんのクエリをかました後、Not In でも 対象となるレコードが表示されるようになりました。
理由はわかりませんが、とりあえず、OKの状態です。
ありがとうございました。
No.1
- 回答日時:
一番楽そうなのは、T_管理2のIDフィールドにインデックス(重複なし)を付けることだと思います。
このようにしておけば、単純にT_管理1の全件をT_管理2に追加する、みたいなやり方でも問題なく、重複しない商品だけを追加してくれると思います。
ちなみに、お書きになったSQL自体は問題ないように思えます。
T_管理1.F1のデータ型とT_管理2.IDのデータ型とが等しいかとか、実際に1件も出てこないようなデータになっていないかどうか、とかをチェックしてみられては如何でしょうか。
この回答への補足
> T_管理2のIDフィールドにインデックス(重複なし)を付けること
そうかもしれません。
> WHERE (((F1) Not In (SELECT ID FROM T_管理2)));
を WHERE (((F1) In (SELECT ID FROM T_管理2)));
で、逆にするとヒットするのです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
access追加クエリ実行時の重複を防ぎたい
その他(コンピューター・テクノロジー)
-
Accessの追加クエリで既存のテーブルに上書き追加をしたい
その他(データベース)
-
ACCESS テーブルを見比べて、一致しないレコードを追加したいです
Access(アクセス)
-
-
4
Accessのデータのインポートで重複分を排除
その他(Microsoft Office)
-
5
access テキストボックスの値取得
Access(アクセス)
-
6
Access2010 「演算子がありません」エラー
その他(データベース)
-
7
Accessのテーブルデータを一気にVBAで追加したい・・
その他(データベース)
-
8
Accessでデータシートに同じデータがいくつもでてしまいます。
その他(データベース)
-
9
クエリのデータをテーブルに入れたい
Access(アクセス)
-
10
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
11
アクセスでの追加クエリでのエラー表示について。
Access(アクセス)
-
12
Access 同じデータをたくさんのレコード(同一列)に一度に入力するには
Access(アクセス)
-
13
アクセスのフォームで、文字を中央揃えにしたい
Access(アクセス)
-
14
Accessの画面更新を一時的に停止する方法。
その他(データベース)
-
15
ACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ
Access(アクセス)
-
16
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
17
ACCESS2007 フォーム 「バリアント型でない変数にNull値を代入しようとしました」エラーの
SQL Server
-
18
アクセス VBAについて FROM句の構文エラー
Access(アクセス)
-
19
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
20
Access 最後のレコードに到達するまでループ処理を行う方法
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
pandasでsqlite3にテーブル作成...
-
EXCELで外部データの取り込みが...
-
SELECT INTOで一度に複数の変数...
-
【SQL】他テーブルに含まれる値...
-
PostgreSQLのtimestamp型で時間...
-
フラグをたてるってどういうこ...
-
sqlに記述できない文字
-
既存データをINSERT文にして出...
-
truncate tableを使って複数の...
-
SQLで、Join句で結合したテ...
-
UPDATEで既存のレコードに文字...
-
dumpでインデックスだけ抜きたい
-
エラーを起こす方法
-
MySQLで数字の値のもののみを取...
-
T-SQLで任意の箇所で強制終了す...
-
Access にて "mm:ss.0" 形式の ...
-
PLPGSQLでの複数行複数列
-
副問合せを使わずにUNIONと同様...
-
1つのSQLで2段階の抽出を行い...
-
オラクルのUPDATEで複数テーブル
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
csvデータ不要列の削除をbatフ...
-
【VB】セルが空になるまで処理...
-
Excel VBAのユーザーフォームで...
-
pandasでsqlite3にテーブル作成...
-
追加クエリで重複データなしで...
-
VBA初心者
-
マクロでファイルを読み込み、...
-
ACCESS VBAでSeekメソッドの処...
-
Accessでパラメーター以外の削...
-
EXCELで外部データの取り込みが...
-
JDBCを使ってdate型へのINSERT...
-
リストボックスとDataGridコン...
-
エクセル 2つの列にある値の完...
-
重複データをなくす
-
Excelについて
-
MySQLでauto_incrementをつかわ...
-
アクセス2003 最適化/修復...
-
ListBoxにAddItemする際、重複...
-
VBAでの行数を揃える方法
-
VBA コードの削除に関する質問...
おすすめ情報