3

バックエンドで SQL Server に接続し、VBA を使用して MS ACCESS 2007 で記述されたアプリケーションがあります。Access と SQL Server の両方がローカルで実行されています。私のマシンは、Access 2010 と MS SQL Server Express 2008 R2 (両方とも 32 ビット、WinXP 上) を問題なく実行しています。

Access 2010 と SQL Server 2008 (R2 ではない) 64 ビットの両方を実行している別のマシン、Win7 64 ビットがあります。

64 ビット マシンで Access アプリケーションを実行すると、さまざまなデータベースを保持する SQL Server を選択するためのドロップダウン ボックスが表示されます。サーバーを選択すると、数秒後に次のエラーが表示されます。

実行時エラー '-2147024703 (800700c1)':

オートメーション エラー %1 は有効な Win32 アプリケーションではありません。

[デバッグ] オプションを選択すると、黄色の矢印は次を指します。 Set oServer = New SQLDMO.SQLServer

次の行は次のとおりです。 oServer.Connect ServerName, strSQLUser, strSQLPwd

ウォッチ リストでは、、、および strSQLPwd が、SQL Server にアクセスするための適切な値を保持しているServerNameことがわかります。strSQLUserこれらを sqlcmd でテストしたところ、テーブルを正常にクエリできました。

誰でもこれについて私を助けてもらえますか?次に何をすべきかわかりません。

4

2 に答える 2

0

これをありがとう。

SQLDMO.DLL 64 ビット バージョンを探しましたが、x64 用の Backwards Comparability パッケージを使用しても、MSI を使用してインストールしてもうまくいきませんでした。

ファイルを手動で抽出し、正しいバージョン (x86 バージョンよりも 2 MB 大きい) を配置し、コマンド ラインで 'regsvr32 sqldmo.dll ' を実行する必要がありました (非常に重要:これを成功させるには、管理者として cmd を実行する必要があります)。

モジュールが登録された後、私の Access フロント エンドは問題なく動作します。

于 2012-08-01T00:15:23.997 に答える
0

64 ビット インスタンスへの接続に使用されている 32 ビット SQLDMO をシステムに登録したようです。レジストリ/ファイル システムで SQLDMO.dll のバージョンを確認し、正しいバージョンを登録してください。

SQLDMO は SQL Server 2008 R2 の後に削除される予定だったため、MSDN の「SQL-DMO のインストール」も確認してください。

新しい開発作業でこの機能を使用することは避け、現在この機能を使用しているアプリケーションを変更することを計画してください。

SQL Server データベース管理オブジェクト (SQL-DMO) は、SQL Server 2008 R2 Express および SQL Server 2008 R2 Feature Pack から削除されました。SQL-DMO は、SQL Server 2000 以降に導入されたデータベース エンジンの機能もサポートしていません。現在この機能を使用しているアプリケーションをできるだけ早く変更することをお勧めします。SQL-DMO をサポートする必要がある場合は、Microsoft ダウンロード センターから SQL Server 2008 Feature Pack の下位互換性コンポーネントをインストールします。新しい開発作業では SQL-DMO を使用しないでください。代わりに SQL Server 管理オブジェクト (SMO) を使用してください。SMO のドキュメントは、SQL Server 2008 R2 Books Online をインストールすることで入手できます。

于 2012-07-30T08:53:44.013 に答える