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

(例)
SQLサーバー(ホスト側)---テーブル名「T_社員マスター」フィールド数100項目、レコード数500件


フォームオープン時にそのまま移しかえたい


Access97(端末側)-------テーブル名「T_社員マスター」フィールド数100項目、レコード数0件


よろしくお願いします。

A 回答 (3件)

私も同じ環境で逆のパターンをしています。

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

SQLサーバーを良く知らないので、はずしているかもしれませんが、SQLでインサートしてはだめなのでしょうか?



通常、下記のようなSQLで、テーブルから抜いたデータを他のテーブルに追加することができます。

INSERT INTO 追加先のテーブル名
( カラム名1,カラム名2,....)
SELECT カラム名1,カラム名2,...
FROM 追加元のテーブル名
WHERE 抜き出し条件

ACCESSで言うと追加クエリーですね。
    • good
    • 0

 残念ながらその方法しかありません。


 バッチ方式でよければ、いくらか方法はあるのですが...ね。

 そもそもなんで、SQLのデータをAccessにコピーするのか解りません。アタッチでは、パフォーマンスが悪いから駄目なのでしょうか?

 バッチなら、SQLで常に決まった場所にCSV形式でデータを書出して、Access君はこのCSVを読込む用にすればいくらかは早くなります(多分)。
    • good
    • 0

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


このカテゴリの人気Q&Aランキング

おすすめ情報

カテゴリ