- PR -

64ビット版VistaでDataGridViewにデータが表示されない(Vistaでの注意事項は?)

投稿者投稿内容
Haru
常連さん
会議室デビュー日: 2009/02/18
投稿数: 37
投稿日時: 2009-03-03 14:17
お世話になります。
64ビット版VistaでVB2008でのアプリにおいて、DataGridViewにデータが表示されないと
いう現象に悩まされておりますが対処方法を教えて頂けないでしょうか。

DBはAccess2003です。

データを3件ほど入力済みのテーブルを用意しDataGridViewに内容を表示したいのですが
クエリビルダのクエリの実行では内容を表示できるのにアプリを実行したときには
内容を表示することができません。(0件になります)
データベースファイルをプロジェクトにコピーして利用するかどうかは両方とも試しました。

同様の手順で32ビット版XPではデータの表示ができるのは確認しています。
(元々はXPで動作しているプロジェクトをVistaに持っていったら動きませんでした。
そこで新規にプロジェクトを作成したのですが改善されませんでした)

今回は64ビット版Vistaでしたが、別アプリ(32ビット版Vista)で同じようにDBへの接続に
失敗するという事象が出ており、もしかしたらXPとVistaでDB接続時に何か違いがあるのでは
ないかと思い質問させて頂きました。

アドバイスよろしくお願いします
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2009-03-03 18:29
もうちょっと、原因が特定できるように、調査をしていただけないでしょうか。

Vista 32 でデータベースとの接続に失敗するとのことですが、どの様なメッセージが出ますか?

Vista 64 ですが、プロジェクトが Any CPU 向けに作成されていると思います。それを、x86 向けに 32bit アプリケーションとして作成すると、動作が変わったりしませんか?
Haru
常連さん
会議室デビュー日: 2009/02/18
投稿数: 37
投稿日時: 2009-03-04 00:19
ご協力ありがとうございます。

引用:

Jittaさんの書き込み (2009-03-03 18:29) より:
もうちょっと、原因が特定できるように、調査をしていただけないでしょうか。

Vista 32 でデータベースとの接続に失敗するとのことですが、どの様なメッセージが出ますか?


明日確認します。

引用:

Vista 64 ですが、プロジェクトが Any CPU 向けに作成されていると思います。それを、x86 向けに 32bit アプリケーションとして作成すると、動作が変わったりしませんか?


変更の方法が合ってるかわかりませんのでやった手順を説明させて頂きます。
1.MyProjectのコンパイルタグを開く
2.プラットフォーム(M)の所を見たらアクティブ(AnyCPU)しかありませんでしたのでそのままにした
3.同画面の一番下の詳細コンパイルオプションボタンをクリック
4.コンパイラの詳細設定画面が表示されたのでターゲットCPU(U)のところでX86を選択
5.ソリューションのリビルドを実行

上記手順を行ったらDBの中身が表示されるようになりました。

関係ないかも知れませんがDBをSQL Server Compact3.5に変更して試してみました。
上記4でターゲットCPUがX86だとDBの中身が表示されますが、CPUをAnyCPUにするとアプリ実行時にDBの中身が表示されず、アプリ終了時に「DLL'sqlceme35.dll'を読み込めません:指定されたモジュールが見つかりません。(HRESULTからの例外:0x8007007E)」が表示されます。

めだか
大ベテラン
会議室デビュー日: 2004/11/11
投稿数: 109
投稿日時: 2009-03-04 10:37
64ビットアプリとして作成するなら
sql native clientもx64のが必要なのかも??
Haru
常連さん
会議室デビュー日: 2009/02/18
投稿数: 37
投稿日時: 2009-03-04 10:59
引用:

めだかさんの書き込み (2009-03-04 10:37) より:
64ビットアプリとして作成するなら
sql native clientもx64のが必要なのかも??



AnyCPUで作成しているから環境に合わせて動作
  ↓
64ビット環境だからx64として動作
  ↓
x64用のDLLを探したけど見つからない(エラー表示)

※x64用のsql native clientが必要

ということでしょうか?
この理屈でいくと、Accessの時もx64用のDLLで動作したことになりますね。
Accessのx64用のDLLには問題があるのでしょうか?
めだか
大ベテラン
会議室デビュー日: 2004/11/11
投稿数: 109
投稿日時: 2009-03-04 11:06
使用しているドライバが違っているとか・・・
ACCESSはODBCドライバ使用でx64のがインストールされていた
VB2008ではsql clientを使用してx86のものしか入っていなかったとか
そうするとVBでもODBC clientを使用すれば動くかもしれませんね
Haru
常連さん
会議室デビュー日: 2009/02/18
投稿数: 37
投稿日時: 2009-03-04 16:18
引用:

めだかさんの書き込み (2009-03-04 11:06) より:
使用しているドライバが違っているとか・・・
ACCESSはODBCドライバ使用でx64のがインストールされていた
VB2008ではsql clientを使用してx86のものしか入っていなかったとか
そうするとVBでもODBC clientを使用すれば動くかもしれませんね


データソースの選択で「Microsoft Access データベースファイル」を
選択しています。
説明欄には「.NET Framework OLE DB用データプロバイダを通じて
Microsoft Accessデータベースファイルに接続するにはこの選択を
行います。」と書いてありますのでODBCではないのではないかと思います。

それはともかく、Visual Studioをインストールしているマシンに
x64用のドライバーが入らないというのは如何なものかと思います。
インストールの時に注意すれば済む話なのでしょうか?
確かフルインストールしたと思うので、別にインストールしないと
いけないのでしょうか?

それとAccessは落ちなかっただけで動作はしていません。(DBの内容が表示されません)
つまりAnyCPUだとどちらも正常に動かない訳です。


[ メッセージ編集済み 編集者: Haru 編集日時 2009-03-04 16:21 ]
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2009-03-04 18:31
Access というか、Office System は、32ビット アプリケーションしか提供されていないと思います。
当然、JET Driver も、32ビットでしょう。64ビット アプリケーションは、32ビット DLL をロード出来ません。

スキルアップ/キャリアアップ(JOB@IT)