みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ACCESSで、テーブルのデータの一部を別MDBにコピーする方法

OS:XP-Pro

VB.netで、MDBのテーブルのデータの一部を、
外部メディアにあるMDB(コピー先と同じ構成)にコピーしたいんです。

どのようにすればよろしいでしょうか。

投稿日時 - 2005-08-17 12:29:15

QNo.1585498

すぐに回答ほしいです

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

簡易サンプルです。
・コピる
・不要データを削除する
という作りになっています。
不要データ削除のSQL文がわからなければ、別の質問でお願いします。
できるだけ、履歴を検索しましょう。


Private Const COPY先 As String = "C:\db1.mdb"

'メイン
Sub Main()
  '自分をコピー
  Call 自分をコピる(COPY先)
  
  'DBの不要データを削除
  Call 不要データ削除(COPY先)
End Sub

Private Sub 自分をコピる(ByVal inCopy先 As String, Optional ByVal in上書きモード As Boolean = True)
  
  Call CreateObject("Scripting.FileSystemObject").CopyFile( _
      "C:\Documents and Settings\cac15402\デスクトップ\db1.mdb" _
      , inCopy先 _
      , in上書きモード _
  )
End Sub

Private Sub 不要データ削除(ByVal inMdbPath As String)
  Dim daoDB  As DAO.Database
  Dim strSQL As String
  
  Set daoDB = Workspaces(0).OpenDatabase(inMdbPath)
  
  strSQL = "DELETE FROM テーブル名1 WHERE 不要な条件を満たす文1"
  Call daoDB.Execute(strSQL)

  strSQL = "DELETE FROM テーブル名2 WHERE 不要な条件を満たす文2"
  Call daoDB.Execute(strSQL)

  strSQL = "DELETE FROM テーブル名3 WHERE 不要な条件を満たす文3"
  Call daoDB.Execute(strSQL)
End Sub

--------------------------------------------------------
この方法の欠点
モジュール/マクロなどなどもコピーされるので、DBが大きいことです。
--------------------------------------------------------




別に考えられる方法
・空DBを作る
Private Sub 新たに造る(ByVal inCopy先 As String)
  Dim accApp As Access.Application
  If Dir(inCopy先) <> "" Then
    Kill inCopy先
  End If
  
  Set accApp = New Access.Application
  Call accApp.NewAccessProject(inCopy先)
  accApp.CloseCurrentDatabase
  accApp.Quit
End Sub
・んで[DoCmd.TransferDatabase ~]でエクスポートしたいテーブルを丸ごとエクスポートを行う
・「不要データ削除」ロジックを行う

--------------------------------------------------------
この方法の欠点
テーブル数が多い場合、遅い
--------------------------------------------------------





さらに別に考えられる方法
・空DBを作る
・ファイルをまたがったSQL文の発行で、必要なテーブルのデータだけエクスポートを行う
--------------------------------------------------------
この方法の欠点
エクスポート先のファイルをエクスポートするタイミングで毎回オープンを行うので、非常に遅い
--------------------------------------------------------

投稿日時 - 2005-08-17 16:11:43

ANo.2

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

複写して、不要データを削除

投稿日時 - 2005-08-17 13:22:55

お礼

ありがとうございます。

そのMDBには全部で10テーブル程ある上、
必要なのはある一つのテーブルの一部のデータなので、必要部分だけをコピーしたいと思っています。

あと、具体的に教えて頂けるとありがたいのですが。
参考URLでも結構ですので、よろしくお願いします。

投稿日時 - 2005-08-17 14:39:52

あなたにオススメの質問