• 締切済み

Access2000のODBCで困っています

Access2000(Windows)でBtrieveデータベースからODBCをつかって、 DoCmd.TransferDatabase acImport, "ODBC", "ODBC;DSN=Btrieve", acTable, "BtrieveTable名", "AccessTable名", False で、インポートすると1つのテーブルだけでレコード数が135,000程度、ファイルサイズが30MB程度(最適化直後)になってしまいます。時間も(マシンやネットワークの環境によりますが)10分近くかかってしまいます。 実際このテーブルの中で必要なレコード数は500程度なので、まるまるインポートし ないで必要なだけにして、時間とファイルサイズを稼ぎたいのですが、何か方法があるのでしょうか? いったんリンクしてから SELECT INTO や INSERT INTO すれば10秒もかからないでできます。 しかし、BtrieveTable名が毎月変わっていくので、お手上げ状態になり、上の方法を思いついたのです。 もしもこんな条件でリンクの設定ができればベストなのですが、ODBCソフトがメラント社のDatadirectというものでVBAからの設定が可能なのかどうかもわかりません。 よろしくご教授願います。

みんなの回答

  • -boya-
  • ベストアンサー率35% (176/494)
回答No.2

下の回答を書いた者です。 下記の通り、「メラント社のDatadirect」については 分からないんですが、、、 ホームページやドキュメント類はご覧になりましたでしょうか? ホームページでは手動でリンクを張る方法を説明していましたが 「データの更新を行う時には」メッセージが出るようです。 (リンクテーブルを削除してみても無理ですかね?) 出さなくする方法もあるような気がするんですが、知識も 検証環境も無いですし、これ以上の技術的コメントは 私からは、、、中途半端ですみません。

参考URL:
http://www.merant.co.jp/datadirect/technote/odbc_btrieve.asp
  • -boya-
  • ベストアンサー率35% (176/494)
回答No.1

DoCmd.TransferDatabase acImport,,,(省略) の「acImport」を「acLink」にしてリンクをはり、その後で SELECTやINSERTをすれば良いのでは? 「メラント社のDatadirect」については分かりません。

tajikun_376
質問者

お礼

ご回答ありがとうございました。 早速試してみました。 ご指導いただいた方法では、LINKが作成される前にDataDirectの"固有レコード識別子の選択"ボックスが表示されて、一旦停止してしまいます。 ここでOKをクリックすればLINKが作成されるのですが、それはそれで仕方がないのでしょうか?

関連するQ&A

  • SQLServer→Access インポート

    こんばんは。 Windows2000、Access2000でVBにて開発をしています。  1.SQLServerのリンクテーブルおよびAccessローカルテーブルからテーブル作成クエリを実行→TableA  2.TableAを「TableA_YYYY/MM/DD」としてSQLServerへコピー(YYYY/MM/DD=出力時の日付) 1.2.を前提に、前日のTableA_YYYY/MM/DDをAccessへ「TableB」としてインポートしたいのですが、 'SQLServerのデータベース名 Path = "ODBC;DSN=AAA;UID=BBB;PWD=CCC;DATABASE=DDD" DoCmd.TransferDatabase acImport, "ODBC データベース", Path, acTable, "TableA_" & DateAdd(d,-1,date), TableB, False, True とすると、 「クエリの構文エラーです。クエリの句が不完全です。」 とエラーになってしまいます。 どなたか、解決策を教えていただけたらと思います。

  • アクセス リンク先のバックアップテーブル削除

    お世話になっております。 以前、リンク先DBでリンクテーブルのバックアップをとり、 同じ名称のテーブルがあったら処理しない というVBAを教えていただいたのですが・・・ そこに付随して質問です。 Dim appAccess As Access.Application Set appAccess = CreateObject("Access.Application") With appAccess .OpenCurrentDatabase strLinkDB If numHantei = 1 Then .DoCmd.TransferDatabase acImport, "Microsoft Access", _ strLinkDB, acTable, "T_権限情報", "BK_テーブル1_" & Format(Date, "yymmdd") .DoCmd.TransferDatabase acImport, "Microsoft Access", _ strLinkDB, acTable, "T_社員情報", "BK_テーブル2_" & Format(Date, "yymmdd") End If .Quit End With Set appAccess = Nothing 7日以上経過したバックアップファイルを削除するには (DoCmd.DeleteObject acTableを使って削除になるかと思いますが)、 実際、どのようにしたら可能でしょうか。 初心者につき、ご教示いただけると幸いです。 よろしくお願い致します。

  • インポートの上書

    アクセス2003で DoCmd.TransferDatabase acImport, "Microsoft Access", "C:\DATA\データ.mdb", acTable, "データ", "データ"を実行してテーブルをインポートしましたが 実行する度にテーブルが データ データ1 データ2と増えていきます 上書させるにはどの様にすればよいでしょうか

  • AccessでODBC接続できない

    (1)コントロールパネル⇒管理ツール⇒ODBCを選択。 (2)「システムDSN」タブを選択し、「追加」を選択。 (3)ローカルにあるエクセルファイルを選択。データソース名はtest。 (4)Access2003を起動し、テーブルのリンクでODBCを選択し、(3)で作ったtestを選択すると、ODBCを使用して外部MicrosoftJet…のエラーメッセージ。 どなたか解決方法を教えてください。

  • テーブルのプロパティの説明欄消失

    ACCESS VBAで以下のような指定でインポートを行っています。 DoCmd.TransferDatabase acImport _ , "Microsoft Access" _ , S_FileName _ , acTable _ , hairetu(j) _ , hairetu(j) _ , False インポートは正常にできるのですが、テーブルのプロパティの説明の記述が消えてしまいます。 消えなくする方法はありますか? できなければ、プログラムで付与する方法はありますか?

  • ACCESSからのODBC接続について

    Windows2000サーバー上にあるアクセスファイル(別のOracle9サーバーにODBCリンクしている)をWindowsXpパソコンにコピーしましたが、「ODBC-xxxxへの接続が失敗しました」と表示されOracleデータを参照できません。 WindowsXpには、Oracleクライアントはインストール済み、DSNにもMicrosoft ODBC for Oracleを登録済みです。新規にODBCリンクすることは可能です。 エラーなく参照できるようにするにはどうすればいいでしょうか。

  • accessのマクロでODBC接続で外部データをインポートしたいのですが

    accessのマクロでODBC接続で外部データを自動でインポートしたいのですがうまくいきません。「ファイルから外部データの取込みでインポート→ファイルの種類でODBC DATABASES()を選択し、コンピュータデータソース指定→テーブルを指定」ではできたのですが、マクロで以下のように設定したのですがうまくいきません。 アクション・・データベース変換 変換の種類・・インポート データベースの種類・・ODBC データベース データベース名 ODBC;DSN=ACSKNSM1DS;APP=Microsoft® Access;WSID=JYOHO08;DATABASE=ACSKNSM1;Trusted_Connection=Yes;TABLE=dbo.tbl_bank オブジェクトの種類・・テーブル オブジェクト名・・dbo_tbl_bank 変換先名・・銀行T テーブルの構造のみ変換・・いいえ ※銀行Tのテーブルはアクセスのテーブルを作成しました。 どうか宜しくお願い致します。

  • AccessからODBC経由でのSQLServerへの接続

    Access(2002)からSQLServer2000(8.0 Developer Edition)へODBC経由で接続にいってテーブルを参照したのですが読み取り専用でデータの変更、レコードの追加・削除等ができません。 データの変更等ができるようにしたいのですが、どうすればよいのでしょうか? 接続するときのユーザーは接続先のデータベースに対してオーナー権限を持っています。また、DSNはシステムDSN、ファイルDSNでそれぞれ作り接続を試してみましたが両方とも読み取り専用で開いてしまいました。 ちなみにPHPでODBC接続してINSERTするプログラムを作り動かしたところ問題なく動きました。 宜しくお願い致します。

  • Access2000からネットワーク経由でMySqlにODBCでリンクテーブル

    Access2000からMySqlにODBC経由でリンクテーブルをつな げたいのですが。 以前この件で質問させていただきまして、その時はローカル 内のMYSQLにリンクテーブルを繋げることは出来たのですが ネットワーク経由で、リンクテーブルを設定する際につまずいて おります。 システムDSNを登録する際の[CONNECTER/ODBC]の設定で、SERVER の項目が問題だと思っているのですが、ここにMYSQLをインストール しているPCのコンピュータ名を入力したのですが、駄目でした。 ネットワーク経由でMYSQLを使用する際の[CONNECTER/ODBC]の設定 方法をどうかご教授して頂けませんでしょうか? 以上 宜しくお願い致します。 環 境    :WINXP,ACCESS2000   MySQL: Ver5.0.27 ODBCドライバ: MySql ODBC 3.51 Driver

  • ORACLEデータをACCESSへインポート VB

    OracleのデータをAccessへインポートする方法について、どなたかご教授ください。 VB.NETで OracleからAccessへのデータコンバート機能を作ることになりました。 (環境 OS;Win7 言語;VB2008 Oracle;10g Access;2010) 対象のテーブル数、フィールド数、データ数がかなり多いのですが、Accessへデータをインポート(コピー)する良い方法はないでしょうか? 普段、データ入力が専門のためプログラムは初心者です。 今のところOLE DBを使用して1行ずつデータを登録する方法しかできません・・・ ヘルプを参考に、ODBCでDSNレスのINTO(SQL)を挑戦しているのですが「入力テーブルまたはクエリが見つかりません」と出てしまいます。 ◇質問 (1).複数のテーブルをAccessへコピーするにはどんな方法がありますか?   また、このような対象テーブルが多い場合に有効な方法は? (2).ODBCでDSNレスのINTO(SQL)を作成するのに注意することはありますか? ちなみにエラーが出てしまうSQL文は以下です。違っているでしょうか? cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;data source=D:\DATA\DB.mdb" sql = "SELECT * INTO impテーブル名 " & _ "FROM [ODBC;DRIVER={Microsoft ODBC for Oracle};" & _ "SERVER=" & orSorc & ";" & _ "UID=" & orUsrID & ";" & _ "PWD=" & orPswd & "].expテーブル名" ※ Oracleは10g/11gのバージョンが存在するためODPは使用しません