2016-10-10 9 views
0

(アクセス2013(32ビット))

http://www.accessmvp.com/djsteele/DSNLessLinks.html

パー私はDSN-を交換しようとしてきましたDSN-less接続を使用してAccessでテーブル定義を作成しました。

運マイクロソフトからドライバしよう:このため、特定の問題のオラクル

ため

のMicrosoft ODBCを:Windows 7の64ビットで

https://support.microsoft.com/en-us/kb/942976

、あなたが持っています32ビットODBC管理パネルを使用してODBCドライバ(DSN)を管理する場合は、アクセス2013 32ビット

しかし、私はにDSN-lessに行っているので、問題は解決しません。

私は、接続が動作しない理由は、私は私の接続文字列としてこれを使用する場合、Windowsが「親切」ドライバの64ビット版を選択していることであることを前提としています

strConnectionString = _ 
    "ODBC;DRIVER={Microsoft ODBC for Oracle};" & _ 
    "Server=" & ServerName & ";" & _ 
    "UID=" & UID & ";" & _ 
    "PWD=" & PWD & ";" 

問題があります両方のバージョン(32と64)は同じ名前のを持っているので、私はドライバの32ビットバージョンを指定することはできません。

方法はありますか?

ありがとう、 チャド。

答えて

0

は、ここで問題だとそれが解決された方法:おそらく、Access 97で始まっ

レガシーシステム(.MDB)現在アクセス2013(の.accdb)形式であること。

Oracleデータ・ソースには、何百ものリンクされたODBC表があり、実際にはほんの一部しか使用されていません。 15個のテーブルだけが直接使用されていたか、またはその後に他の.accdbデータベースによってリンクされていました。


問題のルートは、テーブルの4は現在行方不明DSN、欠落または期限切れのユーザID、または不正なパスワードのいずれかを使用して作成されていたことでした。

ユーザーは、プロセスの実行中に「ODBCリンクに失敗しました」というメッセージが表示され、リンクテーブルマネージャーに移動して、テーブルの名前をパズルして再リンクするものを特定する必要があります。(通常は200人すべてを選択します)。

その後、DSN/UID/PWDの更新を求めるメッセージが表示されます。

アクセス2013は、その情報をテーブルに保存しません。そのため、ユーザーがプロセスを再度実行しようとするたびに、再度ODBCエラーメッセージが表示されます。

ソリューション低下したことと、最新のDSNで 4つのリンクテーブルを再追加します。

また、ODBCリンクテーブルの短縮リスト(そのうちの15個のみ)を通過したメインフォーム上のボタンを追加し、テーブルのdefにTableDef(_TABLENAME_).RefreshLinkを実行しました。


洞察のためのアルバートとWernfriedの両方に感謝します。

(私は、来年、HTML5でフロントエンドを使用してSQL ServerやOracle(バックエンド)でシステムをすべて再構築するチームの一員になれば幸いですギャップ)。

0

「インプロセス」のx32プログラムは、x32ドライバのみをロードして使用するため、混乱する問題はありません。また、「インプロセス」のx64ビットプログラムは、x64ドライバをロードして使用するだけです。どちらも同じ名前を持つことができますが、OS上の異なる場所にインストールされています。

リンクされた記事を読む場合、簡単な解決策は、常に正しいバージョンのODBCマネージャを起動することです。そして、これを行う最も簡単な方法は、アクセスが常に正しいODBCマネージャを起動するため、アクセスの内側からリンクを作成することです。

DSNを使用していないため、使用しているリンクがゼロであることを意味します。

ドライバの名前が同じでも、OSとソフトウェアは同じビットサイズのソフトウェアのみを使用することができ、その場合に使用されるものがあなたのケースで使用されます。

チェックしたい唯一の問題は、Accessの中で、外部データタブで起動してODBCマネージャをインポートしてリンクしたい場合です。その時点で、そのマネージャを使用して単一の表をOracleにリンクすると、その接続文字列を取得(コピー)します。また、Oracleドライバがインストールされていない場合は、Oracleドライバをインストールする必要があります(ただし、Oracleドライバはすでに存在している可能性があります)。

は、その後、リンクが機能することを確認した後、単にデバッグウィンドウにジャンプし、このコマンドを使用して接続文字列の設定を表示するには、Ctrl-Gを打つ:

?接続の文字列が表示され、接続文字列に使用されている名前/構文が表示されます。

また、AccessからODBCマネージャを起動するときに、「デフォルト」タブが「ファイルデータソース」であることを指摘する必要があります。これは、AccessでDSNの接続が少ないことを常に作成します。したがって、デフォルトではAccessは常にDSNレス接続を使用して作成します。ファイルデータソースは、作成時にのみ使用されます。リンクされたテーブルを作成すると、たとえば、データベースを別のコンピュータに移動することができ、デフォルトでDSNリンクを使用しているため、テーブルリンクは正常に動作します(したがって、情報はテーブルのdef接続文字列そのリンクされたテーブルの場合、ODBCパネル経由で保存した元のファイルデータソースは無視され、使用されません。

ボトムライン: これらの記事へのリンクはすべて問題ではありませんoracleにアクセスする際にGUIを使用してリンクテーブルを作成するだけで済みます。上記のようにリンクテーブルの接続文字列を見るだけで、必要な正しいドライバ文字列が表示/表示されます使用する。

+0

"EXTERNAL DATA"リボンの "ODBCデータベース"オプションを使用してファイルDSNを作成すると、次のエラーが発生します。 '予約済みエラー(-7778) ;このエラーのメッセージはありません。 Oracleドライバ(instantclient_12_1のOracle)を使用しても接続されません。 'ODBC - 呼び出しに失敗しました。 システムエラー127のため、指定されたドライバをロードできませんでした:指定されたプロシージャが見つかりませんでした(Oracleはinstantclient_12_1; **ドライバdll **へのパス)。 (#160) ' マシンdsnsだけが動作するようです。 –

+0

Accessからの適切な起動ODBCパネル(正しいODBC設定画面を常に使用していることを確認します)サイトからx86 oracleドライバを削除して再インストールし、再度テーブルの再リンクを試みます。 DSNは動作しません。私はAccessを終了して、Accessショートカットを右クリックして、adminstatorとして実行してから、再度ODBCセットアップを試してみてください。私はファイルが保存されていることを意味しています - そして、私が指摘したように、DSNの接続が少なくなるので、ファイルはずっと良くなっています。 –

+0

上記のWernfriedに言及したように、私が克服できる必要があるのは、TableDefを再リンクするときの3151エラーです。アクセス自体は、DSN選択ダイアログをポップアップし、次に独自のダイアログを開くODBCドライバを呼び出すことによって、リンクテーブルマネージャでこれを行うようですr UID/PWD。私はその第二の部分を働かせるように見えません。それは私に3146を与えます。 –

1

レジストリで確認できるドライバの場所。 x86(32ビット)の場合はHKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBCINST.INI\Microsoft ODBC for Oracle\Driverをチェックしてください。最も可能性の高い値が今%WINDIR%\system32\msorcl32.dll

する必要があります(またはMSアクセス)でファイルmsorcl32.dllがありますので、場合にあなたは、(WoW64を参照)%WINDIR%\system32\が自動的%WINDIR%\SysWoW64\にリダイレクトされ、あなたのMS Accessのフォルダのようのx86アプリケーションを実行しますフォルダc:\Windows\SysWOW64\

原則としてx64の場合、レジストリ値HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\Microsoft ODBC for Oracle\Driverを確認する必要がありますが、Microsoft ODBCドライバはdeprecatedで、32ビットのみ使用できます。 64ビット版が必要な場合は、ODBCドライバfrom Oracleをダウンロードしてインストールする必要があります。

32ビットアクセスは、32ビットODBCドライバを使用しても問題なく動作します。

+0

コメントありがとうございました。 私は、DSNレスではなく、問題を回避することに決めました。レガシー・アクセス・システムには約200のリンクされたテーブルがあり、その多くはもはや使用されていません。私たちは来年までシステムの再構築を進める予算はない。私の仕事は、ODBCソース(複数)を自動的に再リンクすることによって絶え間なく落とされたODBCリンクの不快な問題に対処することです。私はDSNを活用することができますが、テーブルの接続が3151エラーで戻ってくることがあります。この時点で、私はちょうど(ct'd)が必要です... –

+0

...リンクされたテーブルに3151エラーがある場合、ユーザーは自分のマシンを再選択できるようにODBCドライバDSN選択ダイアログをポップアップできるようにするテーブルを再リンクします。 これは私が直面している唯一の問題です...マシンのDSNダイアログをコードからポップアップしてから、パスワード/ UIDをもう一度尋ねてリンクを修復するのが難しいと思っています。 –

+0

接続が使用中で、その接続(リンクされたテーブル)が「失われている」場合は、アプリケーションを再起動する必要があります。すでに動作していた同じテーブルに再リンクすると、破損した接続を使用しようとします。 –

関連する問題