- 締切済み
テーブル内のレコードを別のテーブルに移す良い方法を教えてください
SQLサーバー7.0(ADO)とAccess97のVBAでアプリケーションの開発を行っております。SQLサーバー7.0(サーバー側)にあるテーブルの中身(レコード全件)をAccess97(ローカル)にあるテーブル(テーブル名とその中のフィールド名は全く同じだが中身はからっぽ)にまとめて移しかえる良い方法があれば教えてください。いま私はフォームオープンイベントでフィールドとレコードをループでまわして移しかえているのですが、テーブル数も多いため記述も長くなりますし、何よりもパフォーマンスが良くありません。テーブル単位で中身を別のテーブルに移す方法などがあれば是非教えてください。 (例) SQLサーバー(ホスト側)---テーブル名「T_社員マスター」フィールド数100項目、レコード数500件 ↓ ↓ フォームオープン時にそのまま移しかえたい ↓ ↓ Access97(端末側)-------テーブル名「T_社員マスター」フィールド数100項目、レコード数0件 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- wow_hiro
- ベストアンサー率100% (1/1)
私も同じ環境で逆のパターンをしています。(SQLServer→Access)その際使うのがSQLServerにあるDTS(データ変換サービス)です。高速にデータを変換してくれる上、パッケージ化しておけば、再度使いまわしができ、重宝しています。SQLServer→Accessの変換もできると思いますの1回試してみられたらどうでしょうか。
- arata
- ベストアンサー率49% (139/279)
SQLサーバーを良く知らないので、はずしているかもしれませんが、SQLでインサートしてはだめなのでしょうか? 通常、下記のようなSQLで、テーブルから抜いたデータを他のテーブルに追加することができます。 INSERT INTO 追加先のテーブル名 ( カラム名1,カラム名2,....) SELECT カラム名1,カラム名2,... FROM 追加元のテーブル名 WHERE 抜き出し条件 ACCESSで言うと追加クエリーですね。
- mnabe
- ベストアンサー率33% (427/1283)
残念ながらその方法しかありません。 バッチ方式でよければ、いくらか方法はあるのですが...ね。 そもそもなんで、SQLのデータをAccessにコピーするのか解りません。アタッチでは、パフォーマンスが悪いから駄目なのでしょうか? バッチなら、SQLで常に決まった場所にCSV形式でデータを書出して、Access君はこのCSVを読込む用にすればいくらかは早くなります(多分)。