0

Excel シートとして出力するオンライン フォームからデータベースの新しいデータを取得します。データベースのデータを正規化するために、複数の列を 1 つの行に結合したいと考えています。

例として、次のようなデータが必要です。

ID | 自宅電話 | 携帯電話 | 勤務先の電話

1 .... 555-1234 ...... 555-3737 ... 555-3837

これになるには:

電話番号 | ID | 電話番号 | 電話の種類

1 ………… 1 …… 555-1234 …… ホーム

2 ………… 1 …… 555-3737 …… セル

3 ………… 1 …… 555-3837 ……作品

データをインポートするために、スプレッドシートを検索し、一連のクエリを実行してデータを追加するボタンがあります。

このデータを既存のテーブルの最後に追加するクエリを作成して、レコードが重複しないようにするにはどうすればよいですか? Web サイトから取得したデータはすべて、古いデータを削除せずに更新される Excel シートに保存およびアーカイブされます (この余分なバックアップを失いたくありません)。以前に入力したデータ。

元のスプレッドシートからすべてを正しく一覧表示するクエリを作成できました (外部スプレッドシートを Access の正規化されていないテーブルに入力してテストしました) が、それを電話番号テーブルに追加しようとすると、すべてが追加されます。データの繰り返し。重複データを削除するクエリを使用して削除できますが、そのままにしておくのは好ましくありません。

4

2 に答える 2

1

この問題にはいくつかのアプローチが考えられます。どちらを選択するかは、処理される更新の数に対するデータセットのサイズによって異なります。基本的に、選択肢は次のとおりです。 1) 宛先テーブルに一意のインデックスを追加して、Access が重複レコードの追加を拒否するようにします。可能性のある警告 (「インデックス違反のため、Access は xxx レコードを追加できませんでした」など) を処理する必要があります。2) 受信データをステージング テーブルにインポートし、ステージング テーブルを宛先テーブルに外部結合し、宛先テーブルのキー フィールドが null であるレコードのみを追加します (つまり、宛先テーブルに一致するレコードがありません)。 .

私は過去に両方のアプローチを使用しました。必要に応じて追加する前に、受信データで多くのことを実行できるため、単純なインデックス アプローチが好きで、柔軟性があるステージング アプローチが好きです。

于 2014-03-25T14:50:13.140 に答える
-3

クエリ対象のデータを格納するテーブルで削除クエリを実行してから、インポートを実行できます。

データのみが更新されていると仮定します。

削除クエリはすべてのレコードを削除し、インポートを実行してテーブルを再作成できるため、重複はありません。

于 2014-08-20T08:37:43.400 に答える