トップ回答者
Access型データベースファイルを実行ファイルフォルダ以外に置く方法

質問
-
「UAC確認ダイアログを出さない方法は」でご質問させていただきましたgirouでございます。先の質問では上手くいったと思ったのですが、再度試してみましたらどうも上手く行っていませんでしたので再度質問させてください。
Program Filesフォルダにアプリケーションを配置した場合、UACが壁として立ちはだかるため、対象となるファイルをApplicationDataフォルダに作成いたしました。
具体的に言いますと、Access型データベースを Visual C# Express Edition でGUIで作成(接続の追加でデータベース ファイル名を指定)しているのですが、作成したPCでは上手く行くのですが、他のPCでは動作しません。これは、データベースファイルに接続する際にベタで次のようにパスが固定されてしまっていることに起因するのですが、これを動的に任意に変更することはできないのでしょうか。Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\XXXX\AppData\Roaming\userData.mdb
ちなみに、実行ファイルと同一フォルダに作成した場合はこの接続文字列はの部分は|DataDirectory|となっており、環境を変えても上手くいきます。(ただし、Program FilesフォルダではUACの問題が出ます)
回答
-
なるほど。そういうことですね。以下を参考にしてみて下さい。
スコープがアプリケーションな接続文字列を動的に変更する方法(テスト系データベースと本番系データベースを動的に切り替える方法)
http://blogs.wankuma.com/trapemiya/archive/2008/03/21/128947.aspx実際にはk_kazuさんがコメントされているようにして下さい。
#型付データベースは型付データセットの誤りですよね。
すべての返信
-
なるほど。そういうことですね。以下を参考にしてみて下さい。
スコープがアプリケーションな接続文字列を動的に変更する方法(テスト系データベースと本番系データベースを動的に切り替える方法)
http://blogs.wankuma.com/trapemiya/archive/2008/03/21/128947.aspx実際にはk_kazuさんがコメントされているようにして下さい。
#型付データベースは型付データセットの誤りですよね。
-
大変お世話になりました。
セッターを追加したうえで次のようにコーディングしたところ上手く行きました。
XXXX.Properties.Settings.Default.userDataConnectionString2 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + toFile;
(toFileにはターゲットとなるAccessデータベースファイルへのパスです。)