2016-08-04 5 views
0

こんにちは私は、Accessデータベースを使用する単純なアプリケーションを開発しました。私のアプリケーションでは、私のプロバイダやDBのデータファイルのパスは、私は別のコンピュータにインストールファイルをダウンロードするたびに、私は明示的なパス定義[Cを使用しているため、それが動作しないことを知っているVisual Basic 2010プロジェクト(他のPC用の.exeファイル)のパブリッシュ/デプロイ

Dim provider As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source =" 
Dim dataFile As String = "C:\Users\blanca\Desktop\Serna Impresos 2016\Serna Impresos 2016\Serna Impresos 2016\bin\Debug\SIDB.accdb" 
Dim connString As String = provider & dataFile 

です:..... \ file.accdb]は自分のローカルファイルを参照します。 作業ディレクトリパスはどのように使用しますか?それは(開発に使用されるものではない)別のコンピュータ上で動作するためにどのようなパスを使うべき

エラーメッセージは、これを変更し、まだ

Dim provider As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source =" 
Dim dataFile As String = "\SIDB.accdb" 
Dim startup As String = Application.StartupPath 
Dim connString As String = provider & startup & dataFile 
を動作しません。この... clic for image

です

+0

'Environment.GetFolderPath'はすべてのUserフォルダ名へのアクセスを提供します。 – Plutonix

+0

例?このコマンドを使用するにはどうすればいいですか(私はVB.netを初めて使用しています) –

+0

私の答えをチェックしてください、あなたのためにgetfolderpathを説明しています – Rootel

答えて

0

まず、アプリケーションディレクトリにデータベースを置かないでください。下位レベルの特権を持つユーザーは書き込みアクセス権を得ることができず、Windowsの一部のバージョンでは「トリック」があることを理解するまで、さまざまなユーザーが異なるデータで終わる理由を理解しようとしています管理者権限を持たない場合は、ユーザーごとにファイルのコピーを作成します。

まず、データベースがすべてのユーザーに対して同じであると想定されているかどうか、または各ユーザーがそれぞれ独自のコピーを持っているかどうかを判断します。

彼らは自分のコピー、データベースを置きたいと思い

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 

があるAppDataフォルダを持っている必要があります。

すべてを1つのコピーで処理する必要がある場合は、パスをアプリケーション設定にして、セットアッププロセスの一部としてデータベースをステージングし、そのパスを特定する必要があります。

関連する問題