-PR-
解決済み

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

  • すぐに回答を!
  • 質問No.1585498
  • 閲覧数2274
  • ありがとう数2
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 81% (30/37)

OS:XP-Pro

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

どのようにすればよろしいでしょうか。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.2
レベル13

ベストアンサー率 69% (477/687)

簡易サンプルです。
・コピる
・不要データを削除する
という作りになっています。
不要データ削除の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文の発行で、必要なテーブルのデータだけエクスポートを行う
--------------------------------------------------------
この方法の欠点
エクスポート先のファイルをエクスポートするタイミングで毎回オープンを行うので、非常に遅い
--------------------------------------------------------

その他の回答 (全1件)

  • 回答No.1
レベル13

ベストアンサー率 69% (477/687)

複写して、不要データを削除
お礼コメント
you314

お礼率 81% (30/37)

ありがとうございます。

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

あと、具体的に教えて頂けるとありがたいのですが。
参考URLでも結構ですので、よろしくお願いします。
投稿日時 - 2005-08-17 14:39:52


このQ&Aのテーマ
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-

特集


開業・独立という夢を持つ人へ向けた情報満載!

ピックアップ

ページ先頭へ