- ベストアンサー
リンクテーブルを CopyObject するとリンク情報がコピーされる
ACCESSでリンクしたテーブルを DoCmd.CopyObject でカレントのmdbにコピーすると、テーブル本体ではなく、リンク情報がコピーされてしまいます。 リンクされたテーブルの本体をコピーするにはどうすれば良いのでしょうか。 データ用のmdbとプログラム用のmdbを分けていて、プログラム側からテーブルをバックアップしたいので、このような方法をとっていますが、他に良い方法があれば教えてください。
- bsi_taro
- お礼率20% (1/5)
- その他(データベース)
- 回答数2
- ありがとう数3
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
DAOを使用した方法ですが... 適当なフォームにコンボボックスとコマンドボタンを配置して下さい 下記コードによって、掲題の事は可能だと思われます アレンジすれば、リンクテーブルの作成とかも可能です ※参照設定にて「Micorosoft DAO *.* Object Library」をチェックして下さい '------------------------------------------------- Private Sub Form_Open(Cancel As Integer) Dim Dbs As DAO.Database Dim Tdf As DAO.TableDef Dim strTbls As String Set Dbs = CurrentDb 'リンクテーブル一覧作成 strTbls = "" For Each Tdf In Dbs.TableDefs If Left(Tdf.Name, 4) <> "MSys" And Tdf.Connect <> "" Then strTbls = strTbls & Tdf.Name & ";" End If Next Set Dbs = Nothing 'コンボボックスにリンクテーブルを設定 Me.cmbTableName.RowSourceType = "Value List" Me.cmbTableName.RowSource = strTbls End Sub Private Sub cmdInportTable_Click() Dim Dbs As DAO.Database Dim Tdf As DAO.TableDef Dim strSrcDbs As String Dim strSrcTbl As String Dim strCpyTbl As String 'テーブルが指定されなければ抜ける If IsNull(Me.cmbTableName.Value) = True Then Exit Sub '対象テーブル設定 Set Dbs = CurrentDb Set Tdf = Dbs.TableDefs(Me.cmbTableName.Value) 'リンク先DB、リンクテーブル、インポート後の名前指定 strSrcDbs = Mid(Tdf.Connect, 11) strSrcTbl = Tdf.SourceTableName strCpyTbl = Tdf.SourceTableName '対象リンクテーブルをインポート Dbs.TableDefs.Refresh DoCmd.TransferDatabase _ acImport, _ "Microsoft Access", _ strSrcDbs, _ acTable, _ strSrcTbl, _ strCpyTbl '完了メッセージ MsgBox "[" & Tdf.Name & "] をインポートしました" Set Tdf = Nothing Set Dbs = Nothing End Sub
その他の回答 (1)
- taka_tetsu
- ベストアンサー率65% (1020/1553)
本体って、データの内容をコピーしたいってことですよね? テーブル作成クエリーを使用します。
関連するQ&A
- リンクしているテーブルの上書き
はじめまして。 現在Accessで出勤管理システムを作っています。 処理の流れとしては 別mdbにあるテーブルの内容をクライアント側のmdbにあるワークテーブルにコピー ↓ 勤務情報を入力or編集 ↓ すべての入力or編集が終わったら、ワークテーブルの内容を元のテーブルにコピー という感じなのですが、最後の処理(元のテーブルにコピーする)の際に DoCmd.CopyObject "パス\data.mdb", "T勤務情報", acTable, "WK勤務情報" とやってコピーしているのですが、 「指定された名前は、このデータベースに含まれる同じ種類のオブジェクトで使われています。 既存の'T勤務情報'テーブルを置き換えますか?」 というダイアログが表示されます。 このダイアログを表示させずに自動的に上書きさせる方法はあるんでしょうか? どうかご教授お願いしますm(__)m
- ベストアンサー
- その他(データベース)
- Accessで別mdbのテーブルをコピー
VBで同じような質問をされている方はいたのですが、 ACCESS VBAでの方法がよくわからないので、教えてください。 別フォルダにあるmdbからテーブルをコピーしたいのですが、 どのようにしたらいいのでしょうか。 DoCmd.CopyObjectを使うと、コピー先を指定することはできるようですが、 コピー元を指定してコピーする方法を教えてください。 よろしくお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- リンクテーブルで繋げているテーブルがいきなり入力・変更ができなくなった!
○○.mdbと○○_be.mdbのファイルがあり、○○_be.mdbはテーブルのみで、 ○○.mdbには○○_be.mdbのテーブルのコピー(リンクテーブル)があります。 なぜか今リンクテーブルで繋げている○○.mdbファイルのテーブルが 入力できなってしまいました。 このAccessファイル(○○.mdb)で作成したテーブルは変更可能です。 リンクテーブルのみ、 値の変更も新規レコードの追加もできなくなったのですが なぜでしょうか!!?? Accessを一度落として、 ファイルを開く→「開く」で再起動しても変わりません。 リンクテーブルのもとは(○○_be.mdb)変更可能です。 しかしフォームなどは○○.mdbファイルにある為、 ○○.mdbのリンクテーブルでのデータを変更したいのですができません! 何かわかる方よろしくお願い致します!!!!! (オフィス2003です)
- 締切済み
- オフィス系ソフト
- リンクテーブル(Oracle)をAccessテーブルにコピーしたい
質問があります。 ODBC経由でリンクしたOracleテーブルの内容をコピーしてAccessテーブルとして扱いたいのですが、うまくできません。 作ったテーブルは一時的なものとして扱い処理が終了次第削除するという使用方法となります。 VBAを使ってやろうと思うのですが、コードが今ひとつ解りません。 Docmd.ObjectCopyで試してみたのですが、コピーされたテーブルもリンク扱いとなってしまいました。 やり方は問わないので、なにか良い方法がありましたら回答よろしくお願いします。 環境:Access2000 :Oracle8.1.5です。
- ベストアンサー
- オフィス系ソフト
- Accessにてリンクテーブルの削除、最適化、リンクの張り直しを行いたいのです。
こんにちは。 Access2000でプログラムを作成しています。その際、データ(テーブル)の入っているmdb(DT.mdbとします)と、テーブル以外のプログラムが入っているmdb(PG.mdbとします)に分けて、PG.mdbにテーブルをリンクしています。 データがどんどん大きくなるので、最適化をしようと思うのですが、プログラムのほうは、ツールのオプションで、「閉じるときに最適化を行う」にチェックを入れたので解決です。 DT.mdbの方はリンクしているため、プログラムのメニュー上にある「最適化」のボタンを押したら、いったんリンクを解除して、最適化を行い、もう一度リンクを張りなおす、という処理を行いたいのですが、書き方がわかりません。 今まではDAOを使用していて、DAOでの書き方はわかるのですが、このプログラムはADOで書かれており、しかもほかの人が作ったものなので解読に時間がかかってしまいます。一応、DT.mdbへの接続などはできているようです。 あと、PG.mdbの方では、ワークテーブル(データではない、一時的に利用したい)的なものは、使用できないのでしょうか?レコードセットをオープンしようとしたらエラーになってしまいましたので。 どなたかよい方法をご存知の方、回答よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- リンクテーブルについて・・・
Access97で仕事関連のシステムを開発しています。 実データはテーブルだけのMDBファイルに格納して、 リンクテーブルとしています。 自宅ではアプリケーションMDBファイル、実データMDB ファイル共、ローカルディスクに入れていますが、 仕事場では実データMDBファイルはネットワーク上の サーバに有ります。 その為、アプリ変更の都度「リンクテーブルマネー ジャー」を行わないといけないのですが、これが結構 やっかいです。 自宅の環境では、数十テーブルのリンクに関して、 1回だけリンク先のMDBファイルを指定してやれば、 全てのテーブルリンクが完了しますが、仕事場では 各テーブル毎に1件づつリンク先を指定しないと いけません・・・なんで? あと、2つのリンク環境を一発で更新するとか、 出来ませんかネェ?
- 締切済み
- その他(データベース)
- 「テーブルリンク」なのか「インポート」なのか?
アプリケーション(1).mdb アプリケーション(2).mdb アプリケーション(3).mdb と3つの空のデータベースを用意しました。 (1).mdbに新規テーブルを作成し、保存します。 (2).mdbを開いて、「テーブルのリンク」で(1).mdbのテーブルをリンクしました。 (3).mdbを開いて、「テーブルのリンク」で(2).mdbを接続した時に、先ほどリンクしたテーブル(1→2)は表示されません。 しかし、「インポート」にすると(2).mdbの(1→2)へリンクしているテーブルを(2→3)へリンクすることができました。 結果的にはこれは、「インポート」ではなく「テーブルリンク」ですよね? (1).mdbでテーブルのデータを追加して保存し、(3).mdbで確認すると、ちゃんとデータが更新されています。 よくわからなくなってきました。 これは「インポート」なのでしょうか? 「テーブルリンク」なのでしょうか? よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- ACCESSリンクテーブルでデータを入力しても表示されない。
ACCESSリンクテーブルでデータを入力しても表示されない。 MS ASSECC2003を使っています、 ORG_data.mdbに元データがあります USER.mdbからリンクテーブルで上記ORG_data.mdb のテーブルを参照しています。 USER.mdbを開いてORG_data.mdbのテーブルに新規データを追加しても USER.mdbをいったん閉じて再度開かないと追加されたデータが見えません 元データのORG_data.mdbのテーブルにはデータが追加されいますが、 リンクテーブルの設定とかあるのでしょうか? USER.mdbで追加したデータがすぐに更新されて見れる方法はありませんか? どなたかお知恵を拝借させてください。 リンクテーブルで参照
- ベストアンサー
- その他(データベース)
- Accessでリンクテーブルのパス変更
Accessで処理mdbとデータmdbに分けて、データmdbをリンクテーブルとして読み込んでいるのですが、データmdbのパスが変わったとき、処理mdbでデータmdbのパスを変更しなければなりません。 それが、面倒なので、手軽に変更できるように作っているのですが、「MSysObjects」の「Database」を書き換えるようと、VBAでADODB処理をしているのですが、アップデートすると「更新可能なクエリであることが必要です。」となり、書き換えることが出来ません。 strSQL = "SELECT * FROM MSysObjects;" ~ data.open strSQL ~ data("Database") = NewDatabase data.Update といった感じの処理です。因みに環境はAccess2000です。 何か、リンクテーブルを自動で書き換える簡単な方法は無いものでしょうか。
- 締切済み
- その他(データベース)
- SQLからACCESSテーブルへリンクではなく貼り付けたい
SQLのデータをACCESS経由でアクセスしているのですが、元のデータを変更させることがないように、ACCESS上に持ってきて編集したいのです。 コピーして、新しいmdbに貼り付けしてもリンク状態にて貼り付いてしまいます。 複写という形で、mdbに貼り付けする方法を教えてください。 表現が無茶苦茶ですが、宜しくお願い致します。
- ベストアンサー
- その他(データベース)