ACCESS2000を使用しています。
FDのデータをテーブルにインポートする処理があるのですが、データが重複しているかどうかのチェックはどうすれば出来るのでしょうか。
ご存知の方がいれば教えてください。
よろしくお願いします。
※重複をチェックする項目は「個人コード」です。

A 回答 (2件)

SQL文で検出ではいかが?



select 個人コード,count(*)
from テーブル名
group by 個人コード
having count(*)>1
;
内容:
個人コード別に件数をカウントする。
1より大きな(つまり2件以上の重複)コードを表示させる、です。


FD内のデータ形式が不明ですが、テキストファイルであっても適切な
ODBCドライバーを設定すれば検索可能です。
    • good
    • 0
この回答へのお礼

お礼が遅くなり申し訳ありませんでした。
質問とは別の作業が入り、そちらの作業におわれていました。
重複項目に関してはこれで抽出出来ました。
ただ、更に複雑な処理が必要になってしまいました T_T
もしそちらの質問もわかるようであればアドバイスお願いします。
http://www.okweb.ne.jp/kotaeru.php3?q=237996

お礼日時:2002/03/19 18:24

インポート先テーブルを作成しておいて、「個人コード」を主キーに


しておくと「重複エラー」で別テーブルになりませんでしたっけ?

この回答への補足

早速の回答ありがとうございます。
質問に書き忘れていたのですが、主キーを貼らずにデータをチェックしたいと考えています。
説明不足ですいませんでした。

補足日時:2002/03/04 11:31
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

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

QAccessのデータのインポートで重複分を排除

MicrosoftAccsessで最初から準備してあるデータベースに
外部から追加でデータをインポートする際、重複データがある場合に
インポートしない方法はありますか?

もしくは、インポートしてしまった後で重複する分だけ削除する方法はありますか?

よろしくお願いします。

Aベストアンサー

インポート先のテーブルの、重複を判断する各フィールドに
主キーかインデックス(重複なし)の設定をすれば
重複するレコードはインポート時に自動的にはじかれるはずです。

主キーの設定方法
http://www.officepro.jp/access/table/index6.html

インデックスの設定方法
http://www.officepro.jp/access/table/index12.html

QACCESS VBAでファイルを開くダイアログを表示させたい

ACCESSのフォームからコマンドボタンを押すことで、
ファイル開くダイアログが表示されて、
そこでファイル名をクリック指定することで、
実際にそのファイルがインポートされるように仕組みを作りたいと思っています。

VBAでどう記述するのでしょうか?
類似ケースの質問内容も調べましたがピンと来るものがありませんでした。
ご存知の方、教えて頂けるとありがたいです。よろしくお願いします。

Aベストアンサー

CSVファイルの場合ですが、こちらを参考に。
http://www.accessclub.jp/bbs3/0364/superbeg109189.html

Excelの場合は
DoCmd.TransferSpreadsheet acImport, 8, "テーブル名", strFileName, True, ""
のようになります。
詳しくは、TransferSpreadsheet をヘルプで調べてください。
マクロの「ワークシート変換」を 作成し
「マクロを Visual Basic に変換」で
VBA のコードにしてみるのも良いでしょう。

QACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ

ACCESSで空白のデーターをクエリで判定/識別する方法を教えてください。
EXCELでは空白を""で判定/識別表していますがACCESSではどうなるのでしょうか。

下の例はフィールドに試験番号があればその番号を、空白なら”欠席”と表示しようとしています。
IIf(([試験番号]="空白の場合何を入れる?"),[試験番号],"欠席")

Aベストアンサー

もうひとつの書き方は
式1: IIf([試験番号] Is Not Null,[試験番号],"欠席")
第2、第3引数の、質問の順序にあわせるとこうなる。

QAccessのRefresh・Requery・Repaintの違い

Requeryはもう一度ソースレコード(テーブル)を読み込むようです。このとき、テーブルの先頭レコードに移動してしまいます。
Refreshは最新のレコード(テーブル)を再表示するような気がします。レコードの移動は起こらない気がします。
Repaintは、VBAでキャプションなどを変更したとき使っています。
でも、よくわかっていません。
どんなときにどんなメソッドを使えばいいのでしょうか?
詳しい方、よろしくお願いいたします。

Aベストアンサー

たびたびすみません。
調べてたらこんなのがでてきました。
http://www.nurs.or.jp/~ppoy/access/access/acF007.html

参考URL:http://www.nurs.or.jp/~ppoy/access/access/acF007.html

QACCESS フォームからサブフォームのデータを更新・入力したい

ACCESS フォームからサブフォームのデータを更新・入力したい

tbl_プロジェクトというテーブルにIDとプロジェクトコード、プロジェクトの基本情報を持たせ、f_プロジェクトフォームからプロジェクトコード、件名、契約日等のデータ及び、f_テーマサブフォームにテーマを入力できるようなフォームを作成しています。フォームで入力したものをそれぞれのテーブルに保存したいのですがうまくいかない部分があります。

フォームから入力すると、tbl_プロジェクトに所属する情報は更新されます。そのtbl_プロジェクトに所属するプロジェクトコードをサブフォームのtbl_テーマのプロジェクトコードにも反映したいのですがどのようにしたらよいでしょうか?
そういったことは可能でしょうか?分かりにくい説明で申し訳ないですが教えていただけると助かります。よろしくお願いします!



DBの構成
【テーブル】
tbl_プロジェクト (1件1件のIDとプロジェクトコードを持つ)
(フィールド:P_ID、プロジェクトコード、件名、契約日など)
tbl_テーマ(プロジェクト毎に関連のあるキーワードを持つ)
(フィールド:P_ID、プロジェクトコード、テーマ)←これのプロジェクトコードにtbl_プロジェクトのデータが入るようにしたい。
tbl_顧客(プロジェクトを依頼した顧客情報を持つ)
【クエリ】
q_テーマ(プロジェクト、テーマ、顧客を抽出するクエリ)
【フォーム】
f_プロジェクト (プロジェクトを1件ずつ表示・参照・新規作成するフォーム)
f_テーマサブフォーム (f_プロジェクトフォームのプロジェクトコードにづきテーマを
        表示・入力するサブフォーム)

リレーションはP_IDをキーに一対多で作成しています。

ACCESS フォームからサブフォームのデータを更新・入力したい

tbl_プロジェクトというテーブルにIDとプロジェクトコード、プロジェクトの基本情報を持たせ、f_プロジェクトフォームからプロジェクトコード、件名、契約日等のデータ及び、f_テーマサブフォームにテーマを入力できるようなフォームを作成しています。フォームで入力したものをそれぞれのテーブルに保存したいのですがうまくいかない部分があります。

フォームから入力すると、tbl_プロジェクトに所属する情報は更新されます。そのtbl_プロジェク...続きを読む

Aベストアンサー

No.4です。

前回の回答は、「レコードの新規登録」のみを想定していました(汗)
大変失礼致しました。


【「メインフォーム」-「サブフォームの新規レコード」間の不一致について】
(=No.4の補足での、2個目の「◆」の件)

メインフォーム側の「レコード移動時」イベントで、『プロジェクトコード』の
更新後イベントと同様の処理を行えば、解消すると思います。
(先頭1行が「Private Sub Form_Current()」となる他は、前回のVBAと全く
 同じなので、今回は省略します)


【既存レコードでの『プロジェクトコード』の空白について】
(=No.4の補足での、1個目の「◆」の件)

対処法としては、
 a)更新クエリを使用して、tbl_テーマの『プロジェクトコード』を一括更新
  (→tbl_テーマに入力済みの『P_ID』の再確認が不要な場合)
 b)「メインフォーム上のプロジェクトコードを、サブフォームの全レコードに
  一括代入」するためのコマンドボタンを、メインフォームに追加
  (→tbl_テーマの『P_ID』が正しいかを目視確認してから代入する場合)
の、2つの考え方があります。

「a」については添付画像をご覧いただくとして、ここでは「b」について説明
します。

メインフォームに『コード転記』コマンドボタンを作成したら、そのクリック時
イベントに以下のコードを記載して下さい:

Private Sub コード転記_Click()

  If MsgBox("サブフォームにプロジェクトコードを追記します", vbOKCancel, "確認") = vbCancel Then Exit Sub

  'サブフォームの全レコードを上書き更新
  With Me![サブフォームのコントロール名].Form.RecordsetClone
    Do Until .EOF
      .Edit
      !プロジェクトコード = Me!プロジェクトコード
      .Update
    Loop
  End With

  '更新を反映
  Me![サブフォームのコントロール名].Form.Refresh

  MsgBox "追記しました", , "確認"

End Sub


なお、「a/b」のどちらを採った場合でも、サブフォームの『P_ID』の上書き
編集に合わせて『プロジェクトコード』も連動して更新させるには、別途、
以下のような『P_ID』の更新後イベントでの対応が必要です:

Private Sub P_ID_AfterUpdate()
'メインではなくサブフォームの『P_ID』テキストボックスの更新後イベント

  If IsNull(Me!P_ID) Then
    Me!プロジェクトコード = Null
  Else
    Me!プロジェクトコード = DLookup("[プロジェクトコード]", "tbl_プロジェクト", "[P_ID]=" & Me!P_ID)
    '『P_ID』がテキスト型の場合は上記ではなく以下のコード
    'Me!プロジェクトコード = DLookup("[プロジェクトコード]", "tbl_プロジェクト", "[P_ID]='" & Me!P_ID & "'")
  End If

End Sub

また、この対応を組み込んで戴けば、

> テーマを修正するとフォーム上では10001が入力される。
> tbl_テーマには反映されない。

の件も解消すると思います。
(但し、別のレコードに移動したり、メニューから「レコード(R)→レコードの
 保存(O)」を選択する等して、レコードが保存してからでないと、テーブル
 には反映されないので、確認の際はご注意下さい)


・・・以上です。

No.4です。

前回の回答は、「レコードの新規登録」のみを想定していました(汗)
大変失礼致しました。


【「メインフォーム」-「サブフォームの新規レコード」間の不一致について】
(=No.4の補足での、2個目の「◆」の件)

メインフォーム側の「レコード移動時」イベントで、『プロジェクトコード』の
更新後イベントと同様の処理を行えば、解消すると思います。
(先頭1行が「Private Sub Form_Current()」となる他は、前回のVBAと全く
 同じなので、今回は省略します)


【既存レコードでの『プロジェクトコー...続きを読む

QAccess2010 「演算子がありません」エラー

フォーム上に別フォームを開くボタンがあるのですが、クリックすると実行時エラーが表示されます。

実行時エラー 3075
クエリ式”コード IN(○○,××)の構文エラー 演算子がありません。

コードを数値型からテキスト型に変更したのが原因だと思います。
エラーが出ない方法を教えていただければ助かります。
よろしくお願いいたします。

Dim rst As Recordset
Dim strWhere As String

Set rst = Me.RecordsetClone
With rst
If .RecordCount = 0 Then
Beep
Exit Sub
End If
.MoveFirst
strWhere = ""
Do Until .EOF
strWhere = strWhere & IIf(Len(strWhere) > 0, ",", "") & !コード
.MoveNext
Loop
.Close
strWhere = "コード IN (" & strWhere & ")"
End With

DoCmd.OpenForm "フォーム", , , strWhere

フォーム上に別フォームを開くボタンがあるのですが、クリックすると実行時エラーが表示されます。

実行時エラー 3075
クエリ式”コード IN(○○,××)の構文エラー 演算子がありません。

コードを数値型からテキスト型に変更したのが原因だと思います。
エラーが出ない方法を教えていただければ助かります。
よろしくお願いいたします。

Dim rst As Recordset
Dim strWhere As String

Set rst = Me.RecordsetClone
With rst
If .RecordCount = 0 Then
Beep
Exit Sub
End If
...続きを読む

Aベストアンサー

補足をよんでいなかったので、In句の中身の使い道
がわかりませんでした。

コード IN(○○,××)

○○,××は、元フォームに表示されているレコードになりますので


ということならば、No3の方の回答の、

strWhere = ",'" & !コード & "'"



strWhere = strWhere & ",'" & !コード & "'"

にすればよろしいかと。

Qaccess インポート時、既にあるデータは上書き

accessで、データをインポートする時に、すでにあるデータは、上書きしたいです。
(既にあるIDの場合上書き、ないIDの場合追加されるようにする。)

そこで、検索すると、「更新クエリと追加クエリ」で出来ることがわかりました。
参考にしたページのアドレス
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1224631687

ここからが質問なのですが、
さらに、上書きするデータ(すでにあるデータ)は、バックアップとして別テーブルを作って
そこに更新前のデータをためていきたいのですが、どうすればいいでしょうか?

よろしくお願いします。

Aベストアンサー

画像が小さい・・ので再添付。
素人ですみません>_<

Q「Nullの使い方が不正です」のエラー

AccsessとVB間でデータの参照・登録・削除を行うプログラムを作成中です。
テキストボックスにデータを入力せずに更新するとAccess側はNull値が入るので、参照をした際に
「Nullの使い方が不正です」のエラーが表示されます。

Null値が表示可能ならその方法を教えてください。

Aベストアンサー

読み込んだ際にIsNull()で判断してみては?
If IsNull(Fields) Then
Text1.Text = ""
Else
Text1.Text = Fields
End If

Qエクセルのデータをアクセスへ自動インポート(エクスポート)したい。

いつも大変お世話になっております。m(_ _)m
質問させてください。

エクセルに存在するデータベースのデータを、アクセスにインポートしたいのですが、アクセス側の「取り込み」みたいなボタンを押せば、ある程度自動的にするような仕組みを作りたいです。
「ある程度」というのは、「ボタン1つですべて実行されるように」というところまで自動化されなくても大丈夫です。
参照先、インポート先のテーブル名などのマウス操作は入っても大丈夫です。

そのようなことができますでしょうか?

できるだけ具体的に教えていただけると助かります。
よろしくお願いします。

Aベストアンサー

こんにちは。

VBAで、DoCmdオブジェクトのTransferSpreadsheetメソッドでよいのではありませんか?

 DoCmd.TransferSpreadsheet acImport,
      [シートのタイプ],
      [テープル名],
      [ファイル名],
      [Excel側のフィールドを使うかどうか],
      [Excelの範囲]

実際のコード
 DoCmd.TransferSpreadsheet acImport, , "TestTable", "D:\Test.xls", True, "Sheet1!A1:D20"


"Sheet1!A1:D20"
これはなくてもよいです。

Qcsvファイルをアクセスにインポート

こんにちは。Access2000について質問させてください。よろしくお願いいたします。


csvファイル内のデータをAccess2000に作成したデータベースにインポートしたいんのですが、どうすれば良いでしょうか?

何を調べたらいいかもわからない状態で…

どなかかご存知の方がいらっしゃったら教えて下さい。なにとぞ宜しくお願いいたします。

Aベストアンサー

メニューのファイルメニューから外部データの取り込みを選択するかデータベースウィンドウ上で右クリックしインポートを選択します。
ファイルの種類をテキストファイルに設定しcsvファイルのあるフォルダを開きファイルを指定しインポートボタンをクリックするとインポートウィザードが開きますので順次従って進めればできます。
データを保存する場所で既存のテーブルに保存したければ次のテーブルで指定します。ウィザードの設定が終わったら完了ボタンでインポートできます。
ウィザードにある設定ボタンをクリックすればインポート定義を登録できます。インポート定義を登録すれば次回からフィールドの設定などしなくてインポート定義を使って同様のデータ構成のファイルはインポートできるようになります。
ヘルプでインポートで検索すれば出てきますのでそちらも参照してください。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング