• ベストアンサー

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

OS:XP-Pro VB.netで、MDBのテーブルのデータの一部を、 外部メディアにあるMDB(コピー先と同じ構成)にコピーしたいんです。 どのようにすればよろしいでしょうか。

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

  • ベストアンサー
回答No.2

簡易サンプルです。 ・コピる ・不要データを削除する という作りになっています。 不要データ削除の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

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

you314
質問者

お礼

ありがとうございます。 そのMDBには全部で10テーブル程ある上、 必要なのはある一つのテーブルの一部のデータなので、必要部分だけをコピーしたいと思っています。 あと、具体的に教えて頂けるとありがたいのですが。 参考URLでも結構ですので、よろしくお願いします。

関連するQ&A

  • ACCESS テーブルのコピー

    XP-ProでVB.NETを使用しています。 複数のテーブルがあるMDBから、 一つのテーブルの中のデータの一部をコピーしたいと思います。 接続方法はADOです。

  • Accessで別mdbのテーブルをコピー

    VBで同じような質問をされている方はいたのですが、 ACCESS VBAでの方法がよくわからないので、教えてください。 別フォルダにあるmdbからテーブルをコピーしたいのですが、 どのようにしたらいいのでしょうか。 DoCmd.CopyObjectを使うと、コピー先を指定することはできるようですが、 コピー元を指定してコピーする方法を教えてください。 よろしくお願いします。

  • Accessデータを違うmdbにコピーしたい

    VB2005で、mdbをデータベースにして開発しています。 aaa.mdbのテーブル1のデータをbbb.mdbのテーブル1に読み込ませたいと思っています。 bbb.mdbのテーブル1は、aaa.mdbのテーブル1よりフィールド数が多く、 該当する列にデータを読み込ませたいと思っています。 今まで、バックアップはaaa.mdbを丸ごとコピーして圧縮ファイルにしていました。復元の時は、解凍して上書きする、という手法をとっていました。 しかし、今回どうしてもテーブル1に列を追加しなくてはならず、aaa.mdbのバックアップデータをbbb.mdbに読み込ませて、VB2005のフォームに表示したいと考えております。 以上のような操作は可能でしょうか?可能でしたらその手法を是非教えてください。 また、データベースアプリを作成する上でアプリ完成後に、カスタマイズや計算方法の変更により列の追加が必要になる、いうことはまずいことでしょうか?前もって考えてフィールドを持っておくべきなのでしょうか?経験がないため、わかりません。この点についてもアドバイスがありましたら宜しくお願い致します。

  • mdbのテーブルを別のmdbのテーブルに追加

    2種類のMDBがあり 一つは 毎日の入力にて使用、もう一つは 累積として使用している。 それぞれに 同一デザインのテーブルがあります。 毎日の入力用のMDB内ののテーブルのデータをすべて 二つ目のMDBのテーブルに 追加したいのですが 一件読み込んで 一件書き込むなどと プログラムしていましたが 毎日の入力用のMDBが たくさんになったため 処理が遅くてたいへんです。 なにか 簡単に かつ 高速にすることは可能でしょうか? 開発環境は VB6 SP6 WindowsXP ADOを使用しています。 よろしくお願いします。

  • テーブルのコピーについて

    VB初心者質問です。 開発環境 VB6 SP6 WIN2000  VB6を使用しテーブルをコピーしようと思っています。 サイトが見つけられませんのでどなたかアドバイスお願います。 (内容) a.mdbとb.mdbの2つがあり、それぞれaaaテーブル があります。(構造は同一です) a.mdbのaaaテーブルをb.mdbのaaaテーブルに上書きコピーするにはどのようにすればよろしいですか? よろしくお願いします。

  • テーブルデータの上書きをしたいです。

    MS-ACCESS:2000 OS:XP-HOME こんにちは。ご教授いただきたく質問します。 電話帳DBを作成しております。 複数パソコンで同時に閲覧したいため、データテーブル用MDBと作業用MDBを用意し、客先を抽出した際に、データテーブルから作業テーブルにデータをコピーし、作業するというようにしたいと考えています。 問題になっているのは、 抽出したデータを編集したときに、そのデータを元テーブルにコピーすることです。 「上書き」みたいにしたいのですが、どうもうまくできません。 更新クエリを使用して、コピー元テーブルとコピー先テーブルで更新しようとすると、エラーになります。 どのようにするのが、適切なのでしょうか? よろしくお願いします。

  • Accessのテーブルへのデータインポートについて

    Accessのテーブルへのデータインポートについて Access2002で、A.mdbのTESTテーブルからB.mdbのTESTテーブル(構造は同じ)へテーブルデータをインポートしたいのです。 TESTテーブルの主キーはSEQ(オートナンバー)しかありません。 そのときに、コピー元とコピー先の主キーに重複があった場合、オートナンバーなので自動で再付番しデータが追加して欲しかったのですが、 Accessの機能のエクスポート、インポートでは、コピー先に主キーに重複があったデータは上書きされてしまいます。 テーブルを開き、データをコピー&ペーストしますと、ペーストしたときにオートナンバーで自動で再付番されます。 この方法でもいいのですが、データが数百万件あるので、現実的ではありません。 Accessのインポート・エクスポートで、オートナンバーで主キーを再付番してから、B.mdbのTESTテーブルにデータ追加する方法はないでしょうか? よろしくお願いいたします。

  • 2つのMDB間でのコピー

    同一サーバ内の同一フォルダ内にA.mdbとB.mdbという2つのDBがあるとします。 A.mdbにあるA.tblをB.mdbにSQL(ASP)を使ってのテーブルのコピーは可能でしょうか?  Access97を使用していますが、Accessの機能のテーブル間のインポートではなくて他の方法があれば教えてください。 よろしくお願いします。 OS:WINDOWS2000SERVER  DBソフト:Access97 

  • アクセスMDBファイルが壊れた

    アクセスMDBファイル(access2000)が壊れたようでテーブルを開こうとすると下記のようなメッセージが出ます。(これは、このデータベースからデータを拾っているaspファイルの一部のようです。)そのままOKを押すと開けることもあれば、開けないこともあります。 #テーブルをコピーしてもだめ #「修復」をしてもだめ #MDBファイル全体をコピーしてもだめ #あとの手を思いつきません。 ----ここからメッセージ---- クエリ式 'szObject = wszTableName OR szReferencedObject = wszTableName' の 構文エラー

  • VB2005を使ってACCESSのテーブルを別のデータベースにエクスポートさせるには?

    例えば、VB2005を使ってACCESSのA.mdbにあるテーブルをB.mdbにエクスポートさせるには、どのようなプログラムを書けば良いのでしょうか? ちなみに、ACCESSのテーブルをデータセットに取得して、別のテーブルに書き込むと言うようなものを書いて見ましたが、処理が非常に遅いので使えませんでした。

専門家に質問してみよう