• 締切済み

テーブル内のレコードを別のテーブルに移す良い方法を教えてください

SQLサーバー7.0(ADO)とAccess97のVBAでアプリケーションの開発を行っております。SQLサーバー7.0(サーバー側)にあるテーブルの中身(レコード全件)をAccess97(ローカル)にあるテーブル(テーブル名とその中のフィールド名は全く同じだが中身はからっぽ)にまとめて移しかえる良い方法があれば教えてください。いま私はフォームオープンイベントでフィールドとレコードをループでまわして移しかえているのですが、テーブル数も多いため記述も長くなりますし、何よりもパフォーマンスが良くありません。テーブル単位で中身を別のテーブルに移す方法などがあれば是非教えてください。 (例) SQLサーバー(ホスト側)---テーブル名「T_社員マスター」フィールド数100項目、レコード数500件 ↓ ↓ フォームオープン時にそのまま移しかえたい ↓ ↓ Access97(端末側)-------テーブル名「T_社員マスター」フィールド数100項目、レコード数0件 よろしくお願いします。

みんなの回答

  • wow_hiro
  • ベストアンサー率100% (1/1)
回答No.3

私も同じ環境で逆のパターンをしています。(SQLServer→Access)その際使うのがSQLServerにあるDTS(データ変換サービス)です。高速にデータを変換してくれる上、パッケージ化しておけば、再度使いまわしができ、重宝しています。SQLServer→Accessの変換もできると思いますの1回試してみられたらどうでしょうか。

  • arata
  • ベストアンサー率49% (139/279)
回答No.2

SQLサーバーを良く知らないので、はずしているかもしれませんが、SQLでインサートしてはだめなのでしょうか? 通常、下記のようなSQLで、テーブルから抜いたデータを他のテーブルに追加することができます。 INSERT INTO 追加先のテーブル名 ( カラム名1,カラム名2,....) SELECT カラム名1,カラム名2,... FROM 追加元のテーブル名 WHERE 抜き出し条件 ACCESSで言うと追加クエリーですね。

  • mnabe
  • ベストアンサー率33% (427/1283)
回答No.1

 残念ながらその方法しかありません。  バッチ方式でよければ、いくらか方法はあるのですが...ね。  そもそもなんで、SQLのデータをAccessにコピーするのか解りません。アタッチでは、パフォーマンスが悪いから駄目なのでしょうか?  バッチなら、SQLで常に決まった場所にCSV形式でデータを書出して、Access君はこのCSVを読込む用にすればいくらかは早くなります(多分)。

関連するQ&A