mdbに複数レコードを一括で書き込むには?

解決


一猫  2005-08-22 16:57:06  No: 91696  IP: [192.*.*.*]

はじめまして。
[WinXPPro],[VB6],[SQLサーバー2000],[Access2003]にて開発を行っています。

クライアント側PCからSQLサーバに接続してデータを取得し、ローカルのmdbファイルに書き込む制御をVBのプログラム上で行いたいと思っています。

件数が多い為、mdbへの書込みを1件ずつループさせると時間がかかってしまいます。
そこでmdbに一括で書き込む方法などがありましたらアドバイスお願いします。

編集 削除
もげ  2005-08-23 08:29:59  No: 91697  IP: [192.*.*.*]

丸ごとコピーするのであれば、
MDB上でSQLServerへのリンクテーブルを作成し、
SELECT * INTO [MDBテーブル] FROM [SQLServerテーブル]
とか、
リンクを作成しなくても、DAOであれば、
SELECT * INTO [MDBテーブル] 
FROM
[odbc;Driver=sql server;server=xx;database=xxx;uid=xxx;pwd=xxx].[SQLServerテーブル]
というSQL文を発行する方法があります。
ただし、データのチェックやフィールド単位でのデータの加工や、
「レコードがあったら更新、無ければINSERT」
のようなことをやるのであれば、
結果的に1件づつループしたほうが確実な場合もあるでしょうね。

編集 削除
魔界の仮面弁士  2005-08-23 09:17:12  No: 91698  IP: [192.*.*.*]

さしあたり、DTS(SQL Server データ変換サービス)を試してみるとか。
http://www.microsoft.com/japan/SQL/evaluation/explain/dts.asp
http://www.sqlpassj.org/bunkakai/dba/default.aspx

編集 削除
一猫  2005-08-23 12:30:37  No: 91699  IP: [192.*.*.*]

ありがとうございます。
2つ目のDAOを使って丸ごとコピーすることができました。

もうひとつ試してみたいことがあるのですが、SQLServerで2つ以上のテーブルを結合するSQL文を作成し、
そのデータをMDBにコピーする事は可能でしょうか?

編集 削除
もげ  2005-08-23 14:54:02  No: 91700  IP: [192.*.*.*]

可能ですよ。
SQLの構文はJetSQLのものになるので、
AccessのクエリーでJOINしてみてSQLビューでSQL文を確認すれば、
判りやすいかと思います。

編集 削除
一猫  2005-08-23 16:26:31  No: 91701  IP: [192.*.*.*]

ありがとうございました。

おかげさまでDAOの便利な使い方を知ることができました。

編集 削除
一猫  2005-08-23 16:30:13  No: 91702  IP: [192.*.*.*]

追伸
結合の方も無事できました。

編集 削除