• 締切済み

Access2000でAccess97のテーブルを利用する方法

Access97からAccess2000へのコンバージョンを行っています。様々な問題が発生しているのですが、解消困難な問題があり質問させて頂きます。 まず、背景・環境など長くなりますが、説明します。 自社で開発したプログラムの97→2000への移行を行っていますが、予算とマシンスペックの問題で、ユーザーのOS(95、98、2000、XP)、Office(97、2000)共に混在する状況となります。また、一人のユーザーが複数の事業所で仕事をしており、使用するマシンも一定ではなく、一台のマシンを複数のユーザーが使用します。 問題となっているプログラムは、プログラム本体とデータ部分がそれぞれ別のmdbファイルとして構成されており、本体からテーブルのリンクでデータ用mdbを利用しています。 また、ワークグループを利用しパスワードによるアクセス管理を行っています。 データ部分は、他のプログラムでも利用しており、そのプログラムも97版と2000版が混在しています。 そのため、データmdbは97で利用したいと思っています。 ところが、2000のプログラムでDlookup関数を使用し、97データの取得結果が正しくありません。途中で切れたり、余計な文字が後ろについてしまいます。リンクテーブルを選択クエリにしても同じでした。 例 (正)東京三菱銀行→(誤)東京三菱銀行??○!! (正)123456→(誤)1234 Dlookup("フィールド名" & "","リンクテーブル名") という風に文字列の後に空文字を加えると正しく表示されます。 ただ、すべてのDlookup関数を調べ処理を追加するには数も多く、今後の保守に問題が残ります。 また、データを2000に変換すると問題が発生しません。しかし、互換のため、97形式でデータmdbを作成することも考えたのですが、設定したワークグループセキュリティが解除されることも判明しています。 解決方法か関連情報をお持ちの方、ご教授お願いします。

noname#85865
noname#85865

みんなの回答

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.2

それは、、、辛いかもしれませんが、作り直しましょう・・・・ ご存知かとは思いますが、SQL文には規格があります。 バージョンが変わっても、そちらの方が安心して使用できるかと思いますが、、、 「がんばってください」としか言いようがないのが残念です。。。

noname#85865
質問者

お礼

なかなか思い通りにはいかないですね。プログラム群の開発に2億ほどかかったものですが、すでにAccess2000対応の保守調査だけで4~500万は使っています。 1年半後にシステム更新する予定で、オラクルベースのシステム開発がスタートしています。こちらは10億くらいかけて大手ベンダーでの開発なので、OSやソフトの更新にさほど心配はしていません。 新システム稼動までのつなぎの為の保守なので、なんとか数人の自社スタッフで解決しようとしていたのですが・・・

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.1

DLookUpはAccessのライブラリの関数です。バージョンの違うDBに、バージョンの違う同名のAccess関数を使用するのはどうかと、、、 SQL文で問い合わせても一緒ですか? 可能であれば、ADOを利用することをお勧めします。

noname#85865
質問者

補足

回答ありがとうございます。 周りにも聞いてみましたが、同じ問題を抱えている人がいました。 その人がマイクロソフトに問い合わせたところ、Access2000からAccess97のデータにDlookup関数は使用できない(サポート外)そうです。 40個ほどのプログラムファイルがあり、Dlookup関数も数百箇所で使用しています。 ActiveXもクライアントの設定・保守が面倒そうで・・・

関連するQ&A

  • Accessにてリンクテーブルの削除、最適化、リンクの張り直しを行いたいのです。

    こんにちは。 Access2000でプログラムを作成しています。その際、データ(テーブル)の入っているmdb(DT.mdbとします)と、テーブル以外のプログラムが入っているmdb(PG.mdbとします)に分けて、PG.mdbにテーブルをリンクしています。 データがどんどん大きくなるので、最適化をしようと思うのですが、プログラムのほうは、ツールのオプションで、「閉じるときに最適化を行う」にチェックを入れたので解決です。 DT.mdbの方はリンクしているため、プログラムのメニュー上にある「最適化」のボタンを押したら、いったんリンクを解除して、最適化を行い、もう一度リンクを張りなおす、という処理を行いたいのですが、書き方がわかりません。 今まではDAOを使用していて、DAOでの書き方はわかるのですが、このプログラムはADOで書かれており、しかもほかの人が作ったものなので解読に時間がかかってしまいます。一応、DT.mdbへの接続などはできているようです。 あと、PG.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にて ネットワーク上で テーブルをリンクしたいと思っています  Windows7に 作成されている Demo.mdb に対してテーブルのリンクをかけようとするのですが   「このファイルを開けません  このファイルはイントラネット外または信用されていないサイトに保存されています セキュリティ上問題がある可能性があるためファイルを開きません   ファイルを開くにはローカルマシンまたはアクセスできるネットワークの保存場所にいったんコピーしてください」 という メッセージが出てきます もちろん同じネットワーク上にありますし 変更可能な共有もWindows7には行っています どうしたらいいのでしょうか 有識者の方よろしくお願いします

  • リンクテーブルを CopyObject するとリンク情報がコピーされる

    ACCESSでリンクしたテーブルを DoCmd.CopyObject でカレントのmdbにコピーすると、テーブル本体ではなく、リンク情報がコピーされてしまいます。 リンクされたテーブルの本体をコピーするにはどうすれば良いのでしょうか。 データ用のmdbとプログラム用のmdbを分けていて、プログラム側からテーブルをバックアップしたいので、このような方法をとっていますが、他に良い方法があれば教えてください。

  • リンクテーブルで繋げているテーブルがいきなり入力・変更ができなくなった!

    ○○.mdbと○○_be.mdbのファイルがあり、○○_be.mdbはテーブルのみで、 ○○.mdbには○○_be.mdbのテーブルのコピー(リンクテーブル)があります。 なぜか今リンクテーブルで繋げている○○.mdbファイルのテーブルが 入力できなってしまいました。 このAccessファイル(○○.mdb)で作成したテーブルは変更可能です。 リンクテーブルのみ、 値の変更も新規レコードの追加もできなくなったのですが なぜでしょうか!!?? Accessを一度落として、 ファイルを開く→「開く」で再起動しても変わりません。 リンクテーブルのもとは(○○_be.mdb)変更可能です。 しかしフォームなどは○○.mdbファイルにある為、 ○○.mdbのリンクテーブルでのデータを変更したいのですができません! 何かわかる方よろしくお願い致します!!!!! (オフィス2003です)

  • Accessのテーブルへのリンク

    いま、ASPのDBとして使っているAccessのファイル A.mdbがあります その中の一つのテーブルを別のAccessファイル B.mdbにリンクして、参照したいと思っています。 しかし、B.mdbからリンクするときに インポートすると、A.mdbの変更が反映されず、 リンクすると、B.mdbで変更したものがA.mdbにも反映されて困っています. やりたいことはB.mdbから安全に(変更なしで)A.mdbのテーブルを 閲覧したいのです. ・A.mdbの変更をB.mdbに反映したい ・B.mdbのテーブルの変更はA.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です。 何か、リンクテーブルを自動で書き換える簡単な方法は無いものでしょうか。

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

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

  • Access2000について

    Accessでの質問です。(排他処理について) フォームにとあるテーブル(リンクテーブルを使用 しています)のデータを一覧表示させています。 一覧表示させるテーブルの項目にはチェックボックスの 項目があり、フォーム上でそのチェックボックスを クリックして「削除」ボタンをクリックすると、 チェックがついたものだけをフィルタをかけて 表示させたあとで、モジュール内でそのチェックのついた データを削除する処理をしています。 このフォームを複数ユーザーで使用します。 それぞれのマシンごとにmdbはコピーして使うのですが、 リンクテーブル先は同じです。 (1)のマシンにてフォーム上でチェックボックスにチェックをつけ、「削除」ボタンはクリックしないまま、 そのままにしておいて、 (2)のマシンにて同じデータにチェックを付け、 「削除」ボタンクリックにてそのデータを削除したあと、 (1)のマシンにて「削除」ボタンをクリックすると、 (1)のマシンのmdbが異常終了してしまいます。 どうやら(1)のマシンが削除させようとして フィルターをかける時点で、既に(2)のマシンによって そのデータはテーブルから削除されているので 異常終了しているみたいです。 これを異常終了させないようにするには どうしたらいいのでしょうか? わかりづらい文章になってしまってすみません。 どうかアドバイスを宜しくお願いします。

  • Accessのデータを共有すると重くなるのを回避する方法

    Access2000ですが、データテーブルを独立させ、 フォーム等ユーザーインターフェイスは、別のMDBファイルに作っています。 で、データが小さいシステムのときは感じなかったんですが、 データが大きいシステムを構築したら、LAN上で1つのプログラムからデータを参照していると、 他のPC上のプログラムを起動すると、画面表示まで時間がかかります。 表示してからは、動きは速くなるんですが、開くまでの時間がちょっと、長すぎます。 MDBファイル(Accessのデータベース)の特性で、リンクしているすべてのデータをPC上に読み込んでから、動くみたいなんですが、これとの関係でしょうか? 何か、起動を早くする方法はないでしょうか? わかる方、よろしく、お知恵を拝借したいと思います。 お願いいたします。