2011-07-14 3 views
0

私はAccess DBで作業しています。このDBのデータソースはExcelスプレッドシートです。私は、ユーザーがVBA関数を実行し、重複したレコードをインポートせずにこのデータをAccessにインポートすることで生のExcelデータを消去する機能を追加する必要があります。MS Access:高度な設計の推奨事項

私はこのアプローチする方法についていくつか質問があります。

1)私は、データをきれいにするVBAプロシージャとExcelで簡単なGUIを書くべきか、私は可能にAccessフォームでこれを含める必要がありますユーザーがExcelデータをテーブルにインポートする言い換えれば、データをAccessまたはAccessの外部でクリーニングする必要がありますか?

2)重複レコードをテーブルにインポートするのを防ぐ最良の方法は何ですか?これを行うためのVBAコードを記述する必要がありますか、またはテーブルのプロパティを設定する必要があります(可能な場合)。

3)ユーザーはExcelでデータを消去し、フォームにコードを書き込むのではなく、データテーブルにデータをインポートできるようにするために、Accessでインポートウィザードを使用するようにしてください?

ありがとうございます!

答えて

0

データベース内の重複レコードを防ぐ最も良い方法は、一意のキーを構成する列に一意のインデックスを定義することです。あなたが専門あたり1個以下の専門医が病院システムに病院ごとがあったことを確認したい場合たとえば、あなたがhypothethetical HospitalSpecialistsテーブルでこれを行うことができ

   id    autoincrementing integer primary key 
      hospitalid  integer foreign key references hospitals(id) 
      physicianid  integer foreign key references physicians(id) 
      specialityid  integer foreign key references specialties(id) 


      unique composite index on (hospitalid, physicianid, specialtyid) 

次にあなたがcouldn重複を挿入しないでください。

まず、テーブルの重複を構成するものを決定する必要があります。列のサブセットをまとめると、レコードの一意性が確立されますか?

0

ユーザーがExcelファイルにアクセスできる場合は、その時点で制御できないため、信頼できない/不潔なデータソースと考える必要があります。ユーザーは間違いを犯したり、指示を忘れたり、

Excelでクリーニングをしてもしなくても、必ずAccessでデータをチェックする必要があります。

これでデータをインポートして、重複レコードを防止しますか?これを行う1つの方法は、Excelファイルへのリンクを作成することです(つまり、Accessはテーブルのように扱います)。要件に応じてデータを消去し、最後にExcelテーブルを照会するCREATE TABLEクエリを作成しますSELECT DISTINCT ...)、結果を新しいAccess表に挿入します。

0

私はAccessプログラマーであり、Excelプログラマーではないので、私はAccessですべてを行うことに投票します。 @kuru kuru na ...が示唆しているように、ユーザーがExcelファイルを編集することができれば、それらをスクラブした後に「クリーン」なままにすることはできないため、すべてのクリーンアップをそれ自体にアクセスする。

重複をインポートして回避するには、@ Timの最後の段落、つまり「最初に重複を構成するものを特定する必要があります。それは聞こえるほど複雑なことがあります(たとえば、「Bob Smith」と「Robert Smith」を一致させるか、完全一致のみ一致させるかなど)。

関連する問題