• ベストアンサー

SQLServerからMDBへのデータバックアップ

SQLServer7.0からクライアントPCへMDB形式でデータバックアップを取ろうと考えており VBAを使って以下のPGを作成したのですがSQLServerのテーブルが参照できないらしく テーブルが見つかりませんとエラーが出てしまいます。 SQLServerのテーブル指定部分がいけないのは分かっているのですがどう記述すれば分かりません。 本来このようなレベルでは自分で調べなければいけないことは重々承知なのですが、 うちの会社には書籍がほとんど無いのです・・・。 下記の方法はネットで調べました。 DoCmd.CopyObject以外でももっ効率よくテーブルごと転送する方法はあるのでしょうか? お恥ずかしい話ですが、識者の方 ご教授よろしくお願い致します。 Dim db As DAO.database Dim DBname As String Dim DB_SQL As String DBname = "c:\temp\ZZZ.mdb" If Dir(DBname) <> "" Then Kill DBname End If Set db = CreateDatabase(DBname, dbLangJapanese) db.Close Set db = Nothing DB_SQL = "DRIVER={SQL Server};SERVER=XXX;DATABASE=XXX;UID=XXX;PWD=XXX" DoCmd.CopyObject DBname, , acTable, DB_SQL & ".テーブル名" Exit Sub

質問者が選んだベストアンサー

  • ベストアンサー
  • akiaki2
  • ベストアンサー率59% (16/27)
回答No.2

僕も似たようなことやってますが、バックアップを取るMDBにフォームを作って、次のような感じでやってます。 dim sSQL as String dim Rs as ADODB.Recordset 'バックアップを取るテーブル名の一覧を取ります sSQL = "select name from sysobjects where xtype='U' order by name" Set Rs = New ADODB.Recordset Rs.Open sSQL, [コネクション], adOpenForwardOnly,adLockReadOnly, adCmdText Do Until Rs.EOF  ' MDBのテーブルのドロップとSQLServerからのインポート  DeleteTable Rs("name")  DoCmd.TransferDatabase acImport, "ODBC データベース", [接続文字列], acTable, Rs("name"), Rs("name")  Rs.MoveNext Loop Rs.Close Set Rs = Nothing で、MDBを閉じる時に自動的に最適化するように設定してます。 コード部分は抜粋ですみませんが、ご参考になれば幸いです。

Y_Y
質問者

お礼

教えていただきましたソースを参考にして 無事に目的のPGを作ることが出来ました。 大変感謝しております。 ありがとう御座いました。

その他の回答 (1)

回答No.1

こちらを参考にしてみてください。 私は DoCmd.TransferDatabase が良さそうな気がします。 そのまま使っただけでは SQL-Server → 他のMDB にデータの転送はできませんけど。

参考URL:
http://www.f3.dion.ne.jp/~element/msaccess/AcTipsGnrlHowToAttachExternalMdb.html
Y_Y
質問者

お礼

参考URLを見まして、他にも色々と勉強できました。 ご回答ありがとう御座います。