ACCESS2000を使用しています。
FDのデータをテーブルにインポートしたいのですが、重複しているデータはインポートしたくありません。
キーとなるものは、「個人コード」と「入力日」です。
同じ個人コードでも入力日が違えば別データとしてインポートしたいと思います。
アドバイスの程よろしくお願いします。

※VBAを使って処理をするつもりです。
複数回の手順で行う方法でもよいので、良い方法があれば教えて下さい。

A 回答 (2件)

テーブルにキー設定、重複設定が


ちゃんとされていれば、重複データだけは
インポートされないと思います。

テーブルの設定を確認して
作業してみてください。
    • good
    • 0
この回答へのお礼

主キーだけではなく複数のコードにキーがはれるということですよね?
早速方法を調べてみます。
ありがとうございました。

お礼日時:2002/03/20 09:16

http://oshiete1.goo.ne.jp/kotaeru.php3?q=228783
に条件が増えたんですか?

ではまたSQL文で検出ではいかが?

select 個人コード,入力日,count(*)
from テーブル名
group by 個人コード,入力日
having count(*)>1
;


> FDのデータをテーブルにインポートしたいのですが
FD内のレコードと、もともとACCESS側のテーブルにある「レコードとの重複」なのか
FD内の「レコードとの重複」なのかがとても気になります。

コード(モジュール)で記述する方法の概略としては
1.FDの1レコードを読む。
2.「個人コード」と「入力日」をキーとして
ACCESSのレコードに該当があるか、読む。
(「個人コード・入力日」を主キーにしておくと検索が早い)
3.結果を判断。
該当のレコードがなければACCESSに書き込む。
あれば無視してFDの次のレコードを読む。
4.以下、FDのファイルのレコードが無くなるまで2.3.を繰り返す。
でしょうか。

VBAを使用して
1.ACCESS側に「主キー」を貼る。
2.FDのファイルをインポートする
(重複エラーは別ファイルに吐き出される。不要なら削除コードを記述)
3.インポート後に「主キー」を削除する
方法もありますよ。
    • good
    • 0
この回答へのお礼

午前中に補足を書いたつもりだったのですが、最終確認のボタンを押すのを忘れてたみたいです ( ̄□ ̄;
返事が遅くなり申し訳ありませんでした。

>FD内のレコードと、もともとACCESS側の
>テーブルにある「レコードとの重複」なのか
>FD内の「レコードとの重複」なのか
FDやACCESS側のテーブル自体には重複はありません。
定期的にFDのデータをACCESSにインポートする必要があり、その際に重複チェックをかけたいと考えています。

アドバイス頂いた方法のいずれかで試してみたいと思います。

お礼日時:2002/03/20 20:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Qエクセルで作成した個人データのインポートの仕方

エクセルで作成した個人データを一括で、アクセスのテーブルにインポートしたいのですが、やり方がわかりません。どなたか、お分かりになる方、お願いします。

Aベストアンサー

アクセスを開いて、テーブルの所を出す。
何もない所で右クリック
インポートを選ぶ。
ファイルの種類をエクセルにする
目的のエクセルファイルを選んでインポート
目的のワークシートを選ぶ
先頭行に氏名・住所とかエクセルで入力している場合は、先頭行をフィールドとするにチェックを入れる
新規テーブルに保存する
データ型に間違いないか確認する。
IDが必要な場合は主キーを自動的に設定するにチェック
名前をつけて完了
こんな感じです。

ほかには、アクセスで名簿と同じ体裁のテーブルを作り、そのテーブルを開いて、エクセルデータをコピーして貼り付ける方法もあります。

QAccessでタブ区切りのテキストをインポートすると、71項目目以降のデータがインポートされない

WindowsXP
Access2000

いつもお世話になります。
どう対処してよいかわからなくなってしまったので質問
させてください。

社内システムから、ダウンロードしてきた、
テキストデータ(1登録あたり106項目、タブ区切りで保存、
登録データの切れ目は改行)があります。

エクセルに貼り付けてみると、↓のような見た目になります。
■=データ有りの意味


 A┃B┃C┃D・・┃・┃・┃BS┃BT┃BU┃BV┃・┃・┃DB
1■┃■┃■┃■・・┃■┃■┃■┃・┃・┃・┃・┃・┃・
2■┃■┃■┃■・・┃■┃■┃■┃・┃・┃・┃・┃・┃・
3■┃■┃■┃■・・┃■┃■┃■┃・┃・┃・┃・┃・┃・
・■┃■┃■┃■・・┃・┃・┃■┃・┃■┃■┃■┃・┃■
・■┃■┃■┃■・・┃・┃・┃■┃・┃■┃■┃■┃・┃■
・■┃■┃■┃■・・┃・┃・┃■┃・┃■┃■┃■┃・┃■

※BTの列は全て空白です。

それを、アクセスに取り込み、管理しようとしています。

登録数は特に決まっていません。
また、106項目は全て埋まっているわけではなく
空白の項目も多々あります。

インポート用のテーブルを用意し、インポートすると
何のエラーもなくインポートが完了するのですが、
なぜかBSの列までのデータは取り込むものの、
BT以降のデータは空白になります。

今回、200件弱のテスト用データで試したところ、
全てのデータにおいて、BT以降のデータが
空白になりました。

インポートできるデータには「○項目めまで」という
決まりがあるのでしょうか?

WindowsXP
Access2000

いつもお世話になります。
どう対処してよいかわからなくなってしまったので質問
させてください。

社内システムから、ダウンロードしてきた、
テキストデータ(1登録あたり106項目、タブ区切りで保存、
登録データの切れ目は改行)があります。

エクセルに貼り付けてみると、↓のような見た目になります。
■=データ有りの意味


 A┃B┃C┃D・・┃・┃・┃BS┃BT┃BU┃BV┃・┃・┃DB
1■┃■┃■┃■・・┃■┃■┃■┃・┃・┃・┃・┃・┃・
2■┃■┃■┃■・・┃■┃■┃■┃・┃・┃・┃・┃・┃・
3■┃■┃■...続きを読む

Aベストアンサー

回答がつかないようですので、たぶん見当違いでしょうが、コメントさせてもらいます。

Excel上で「※BTの列は全て空白です。」というのが気になりますね。

1行目のデータが70項目目の後ろで改行されている、ということはないのでしょうか。

そんなことはないのなら、データの先頭行はフィールド名ではないように見えますので、先頭に仮のフィールド名(例えば、a、b、c、・・・)のデータを1件分106項目、空白なしで加えて、インポートされてみてはいかがでしょうか。それでもだめでしたら、ごめんなさい。

Qアクセスで重複データの入力

アクセス97で顧客の管理しています。フォームから入力の際にカタカナで姓スペース名で入力していますが、入力の際に同じ名前があったら、メッセージでそのことが表示され、できれば内容が別フォームかテーブルでチェックできて、そこで入力を続行するか中止するか選択できるようにしたい。VBAが苦手なのでクエリーやマクロでできればうれしいのですが、簡単なVBAでできればVBAでも良いです。どなたか智恵をおかしください。

Aベストアンサー

「T顧客」テーブルに、主キーである[ID]フィールド及び、「氏名」フィールドがあって、[氏名]に氏名をカナで入力しているものとします。

また、顧客入力フォーム上にテキストボックス「氏名」があって、そこで氏名を入力するものとします。

また、別途、顧客を表示するフォーム「F顧客表示」があるものとします。

「氏名」の[更新前処理]を「イベントプロシージャ」にし、右の[…]をクリックし、以下の内容を入力してください。

Private Sub 氏名_BeforeUpdate(Cancel As Integer)
 Dim SQL As String
 Dim RS As Recordset
 
 SQL = "SELECT Count([氏名]) AS 重複氏名件数 FROM T顧客" _
  & " WHERE [ID] <> " & Nz(Me![ID]) _
   & " AND [氏名] Like '" & Trim(Me.[氏名].Text) & "';"
 Set RS = CurrentDb.OpenRecordset(SQL, dbOpenSnapshot)
 
 If RS![重複氏名件数] >= 1 Then
  '重複する指名があったときは、F顧客表示フォームを開く
  DoCmd.OpenForm "F顧客表示", acNormal, , "[氏名] Like '" & Trim(Me.[氏名].Text) & "'"

  '追加するかどうか確認する
  Select Case MsgBox("同じ氏名が既に入力されています。 もう一件追加しますか?" _
   , vbYesNo + vbDefaultButton2 + vbInformation, "重複入力の確認")
  Case vbYes
   '[はい]を選んだときはそのまま何もせずに続行。
  Case vbNo
   '[いいえ]を選んだときは、キャンセルし、データの更新を取り消す
   Cancel = True
   Me.氏名.Undo
   Me.Undo
  End Select
 End If

End Sub

今回は動作チェックしてないので「自身なし」です(^^;
動かなければ補足入れてくださいね。

「T顧客」テーブルに、主キーである[ID]フィールド及び、「氏名」フィールドがあって、[氏名]に氏名をカナで入力しているものとします。

また、顧客入力フォーム上にテキストボックス「氏名」があって、そこで氏名を入力するものとします。

また、別途、顧客を表示するフォーム「F顧客表示」があるものとします。

「氏名」の[更新前処理]を「イベントプロシージャ」にし、右の[…]をクリックし、以下の内容を入力してください。

Private Sub 氏名_BeforeUpdate(Cancel As Integer)
 Dim SQL As Strin...続きを読む

Qエクセルのデータをアクセスにインポートしたいのですが、フィールド名として使用できないデータがあるようで・・

 「先頭行に、Acsessのフィールド名として使用できないデータが含まれています。」とエラーが出ますが、どんな原因が考えられますか?
 同じ項目(先頭行)で別のエクセルのデータは読み込めます。見た目、まったく同じ文言(先頭項目)なのですが。

Aベストアンサー

ということは・・逆も確認されましたね。(インポートできる方のExcelデータを削除して、インポートできない方のデータを貼り付ける)
では、Excelのデータを範囲指定をして、コピーをしてみてください。
そして、データベースウインドウをクリックして(もちろんオブジェクトはテーブルで)貼り付けのボタンをクリック、もしくはCTRL+Vで貼り付けてみてください。

QAccessでのクエリーデータ表示で重複データ非表示できますか?

Accessでのクエリー表示で重複データを非表示にする方法はありますでしょうか?

Aベストアンサー

クエリプロパティの「固有の値」を「はい」にしてください。
クエリプロパティはクエリをデザインビューで開いて右クリックで出てきます。


人気Q&Aランキング

おすすめ情報