🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

パス

パス(path)はファイルシステムの場所(階層)を明示したものです。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

解決済

2回答

4375閲覧

Accessへの接続方法(相対パスで記載したい)

Ecarlat

総合スコア6

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

パス

パス(path)はファイルシステムの場所(階層)を明示したものです。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

0クリップ

投稿2019/11/11 20:23

編集2019/11/11 21:04

サンプルコードを組み合わせて、使用している全くの初心者です。
ASP.NETとAccess(2013)を使用して、Webforms上にデータを表示させています。
<開発環境>Windows10、Acess2013、Expression web4.0(Visual Studioは使っていません)
.NET Framework 4.8(レジストリーから確認)、ASP.NET 4.8.4042.0(エラーコード画面から確認)

単純に、AccessがもっているクエリーをGridViewでデータリストを表示させています。
現在自宅のPCで作業をしているのですが、仕事場のPCに持っていきたいため、絶対パスで記載されている部分を
下記の相対パスに変え、自宅の同じPCを使って確認しましたが
「パス 'C:\WINDOWS\SysWOW64\inetsrv\App_Data\Sales-Dep_WebList.mdb' は正しくありません。
パス名に間違いがないことと、ファイルが置かれたサーバーに接続していることを確認してください。」とのエラーで表示されません。

きっと基本的なことなのだと思いますが、いくつかのサイトを見ましたがわかりませんでした。
対応方法についてご教示いただけると幸いです。
よろしくお願いします。

元のコード(これは接続表示されています) <asp:SqlDataSource   ID="SqlDataSource1"   runat="server"   ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;   Data Source=C:\inetpub\wwwroot\App_Data\Sales-Dep_WebList.mdb"     ProviderName="System.Data.OleDb"   SelectCommand="SELECT * FROM [Qry_BusinessReport]"> </asp:SqlDataSource> 相対パスにしたコード(これでは上記エラーが出てしまします) <asp:SqlDataSource   ID="SqlDataSource1"   runat="server"   ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;   Data Source=App_Data\Sales-Dep_WebList.mdb"     ProviderName="System.Data.OleDb"   SelectCommand="SELECT * FROM [Qry_BusinessReport]"> </asp:SqlDataSource>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/11/11 21:29

.NET のバージョンは、前のスレッドで書きましたが、web.config にありませんか? ASP.NET 開発なのに Visual Studio を使わない理由があるのですか? 特になければ使うようしましょう。Expression Web では、自分を含め、大多数の ASP.NET 開発者はサポートできないと思いますけど?
退会済みユーザー

退会済みユーザー

2019/11/11 21:44

.mdb ファイルはどこにあるのですか? 自宅の PC にしかなくて、会社の PC には無いというのではもちろんダメですけど。
Ecarlat

2019/11/11 22:15

いつもありがとうございます。 まずmdbファイルの件ですが、そもそも自宅で物理パス部分を相対パスに書き換えただけでダメでしたのでmdbファイルの場所は関係していないと思われます。 Visual studio を使っていないのは、自宅でそれほど複雑なことをしようと考えていなかったので手軽なExpression を使っていました。でもVisual studio がスタンダードのようなので導入するようにします。.netのバージョンは調べた限り4.8で間違い無いと思います。Expression で作成しているせいかweb.confgファイルは見当たりません。素人相手にご理解難しい箇所も多々あるかと思いますが、お付き合いお願いします。
退会済みユーザー

退会済みユーザー

2019/11/11 22:40

すみません、思い違いをしていたようです。会社の PC では作業してなくて、今はまだ .mdb ファイルが「元のコード」に書かれた場所に存在する自宅の PC で作業していて、自宅 PC のコードのパスを書き換えたということですね。 とすると、会社の PC でのフォルダ構造をどうするかによりますが、とにかくアプリケーションルート直下の App_Data フォルダに置くということでいいのですか? web.config がなくて ASP.NET Web アプリが動いているというのが不思議です。Visusl Studio を導入して、そのテンプレートを使ってアプリの雛形を作って、それをベースに話をしないと、話が通じにくいと思います。
Ecarlat

2019/11/11 22:54

誤解を招いてすみません。 記載いただいた通り、会社のpcではまだ作業していません。 aspxのファイルはapp_dataフォルダと同じ階層にあり、mdbファイルはapp_dataフォルダ内に配置しています。 Web.configは再度何処かな隠れていないか探してみます。
退会済みユーザー

退会済みユーザー

2019/11/11 23:02

了解しました。今スマホしか使えないので、PC が使えるようになったら回答を書きます。しばしお待ちください。
Ecarlat

2019/11/12 03:25

お忙しい所、修正コードご提示いただきありがとうございます。 本日外出しているので、検証ができません。 帰宅後確認させていただき、結果を連絡させていただくようにします。
Ecarlat

2019/11/12 18:17

返信が遅くなって申し訳ありません。 無事接続できました。 Visual Studioを使用することにしました。 ネット上にVisual Studioの使用方法はたくさんあるようなので まずは自力でインストール、使用してみます。 自力で解決できないようであれば、質問させていただくようにします。
退会済みユーザー

退会済みユーザー

2019/11/13 01:28

回答へのコメント・返信は、ここではなく、回答のコメント欄に書くようお願いします。ここ質問へのコメント欄は上に書いてあるように「質問への追記・修正、ベストアンサー選択の依頼」のためのものです。
guest

回答2

0

ベストアンサー

aspxのファイルはapp_dataフォルダと同じ階層にあり、mdbファイルはapp_dataフォルダ内に配置しています。

ASP.NET アプリのアプリケーションルート直下の App_Data フォルダは |DataDirectory| で表せます。なので、そのフォルダに Sales-Dep_WebList.mdb を配置した場合、接続文字列の Data Source は以下のように設定すれば良いはずです。

Data Source=|DataDirectory|\Sales-Dep_WebList.mdb

お試しください。

以下蛇足ですが・・・

接続文字列は、質問者さんのコードのようにコード内にハードコーディングせず、web.config に設定することをお勧めします。

例えば、以下のように App_Data ファイルに Access.mdb というファイルを配置する場合(Visual Studio 2010 の画像です。赤枠を見てください)、web.config に青枠で囲った接続情報を記載します(Visual Studio のウィザードを使うと自動的にやってくれます)。

イメージ説明

内容は以下のようになっています。

<add name="Access" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\Access.mdb; Persist Security Info=True" providerName="System.Data.OleDb"/>

それを SqlDataSource で以下のように設定します。(Visual Studio のウィザードを使うと、自力で一行もコードを書かななくても全て自動生成されます)

イメージ説明

そうすれば、接続文字列に変更が必要な場合(開発環境・運用環境で接続文字列が違うことはよくあることです)、.aspx のコードはそのままで、web.config のみ書き換えれば対応できます。

投稿2019/11/12 01:21

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

相対パス、というのを使う場合は、必ず基準とするパスがどこか、というのを確認する必要があります
・実行するときのカレントパス
・そのコードが存在するパス
・コードを実行するユニット(プログラム)が存在するパス
・対象とするユニット(この場合はAccess?)が存在するパス
・ブラウザのパス
・ブラウザのキャッシュのパス
・その他のパス

このどれがこの場合の基準となるパスでしょうか。
いちど、そのAccessのコードで、カレントパスを表示させるコードを書いて、どこのパスなのか、を確認するようにしてみてください。

投稿2019/11/11 22:50

y_waiwai

総合スコア88038

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Ecarlat

2019/11/11 23:01

回答いただきありがとうございます。 素人なものでご質問の意味が十分に理解できませんが、C:\inetpub\wwwroot\App_Data\Sales-Dep_WebList.mdb これを意味しているのでは無いのでしょうか? aspxファイルはwwwroot フォルダ直下に保管しています。
y_waiwai

2019/11/11 23:05

それを実際のコードで確認してみましょう。 あなたの言うとおりなら、なぜ動かないのかという話になります。
退会済みユーザー

退会済みユーザー

2019/11/11 23:09

接続文字列の Data Source に設定する Access のパスの話ですので、html で一般的に言うパスの話とは違ってきます。
Ecarlat

2019/11/12 03:39

ありがとうございます。 現在外出しているので、帰宅後確認してみるようにします。
Ecarlat

2019/11/12 18:24

返信が遅くなり申し訳ありません。 >そのAccessのコードで、カレントパスを表示させるコードを書いて、どこのパスなのか、を確認するようにしてみてください。 の方法がわかりませんでした。ネットでもう少し調べてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問