無料HPでのMDBへの接続



0   名前:  : 2006/02/09 20:15
はじめて質問させて頂きます。
完全なWEB初心者です。

無料ホームページスペースを使用して、JavaスクリプトでMDBファイルから
データを取得したいと考えております。
しかし「var objADO = new ActiveXObject("ADODB.Connection");」の部分で
「ActiveXObject is not defined」とエラーが出てしまいます。
自PCにファイルを置いて実行するとうまく接続されるのですが、
サーバーにアップするとエラーになります。

「そもそもJavaスクリプトはクライアントサイドで動く」というふうに、
調べて解釈したのですが、それが間違いなのでしょうか?
そうなると、無料ホームページのサーバー側にADOが入っていないと、
DBへの接続ができないということになりますよね?

無料ホームページの会社の選び方の問題なのか、ドライバの問題なのか、
分かりかねている状態です。
かなり、漠然とした質問で恐縮ですが、調べても調べても、いまいち仕組みが
理解できていないので、なにとぞ宜しくお願い致します。

1   名前: Pid : 2006/02/09 20:15
念のため確認したいのですが,これは個人的な用途に限った話ですよね?

> 「ActiveXObject is not defined」とエラーが出てしまいます

WinIE のセキュリティ設定を下げてみて下さい(当然,試した後は戻しておくのをお忘れなく)。

> そもそもJavaスクリプトはクライアントサイドで動く」というふうに、調べて解釈した

えーと,「Java スクリプト」という言語は存在せず,あくまで「JavaScript」(前身は LiveScript,標準化されて ECMAScript)です。一般にはクライアント側で動作しますが,ASP などではサーバ側 JScript(ECMAScript をベースに Microsoft が開発)もあります。

2   名前: m035 : 2006/02/09 20:15  [URL
まず、あなたの使っている言語ははっきりいってJavaScriptではありません。
JScriptという、ブラウザならWinIE限定で動作するJavaScript互換の言語です。
エラーの原因ですが、Pid氏と同じ意見でセキュリティ関連でしょう。
セキュリティホールに対応するため、
年々スクリプトに対するセキュリティは高まっています。
Windowsアップデートなどでセキュリティの修正が加えられていたりと、
セキュリティ設定を下げても動かないこともあります。
ただし、ローカルでは動かせる、なんてことは大いに考えられます。

3   名前:  : 2006/02/09 20:15
Pidさん、m035さん、ご返信ありがとうございます。
個人的に勉強している状態です。

ご指摘通りIEの「イントラネット」のセキュリティを低にしましたが
状況変わらずです。。
「インターネット」のセキュリティは中より下にはならないようですね。
(それでもできる限り有効という設定にしましたが。)

ちなみにJavaScriptのソースはjsファイルに書いてあり、それをHTMLファイルから呼んでいるのですが、
jsファイルをダブルクリックで実行するとうまく接続できます。
やはりブラウザの設定なんでしょうか・・・
長くなりますが、2ファイルのソースを貼り付けますので確認頂けると助かります。

HTML=ここから==================================================
<head>
<script type="text/javascript" src="java_connection.js"></script>
</head>
<body>
<form name="form1">
<input type="submit" onClick="con()" value="OK">
</form>
</body>
</html>
HTML=ここまで==================================================

JS=ここから==================================================
function con()
{
var objADO = new ActiveXObject("ADODB.Connection");
objADO.Open("Driver={Microsoft Access Driver (*.mdb)}; DBQ=C:\\japan.mdb;");
var objRS = objADO.Execute("select * from 住所録テーブル");
if (objRS.Eof==true)
{
WScript.echo("データがありません。");
}
else
{
//SQLの実行結果をデータが無くなるまで表示
while(objRS.Eof==false)
{
WScript.echo("漢字氏名:" + objRS("漢字氏名") + " 性別:" + objRS("性別"));
objRS.MoveNext();
}
}
objRS.Close()
objADO.Close()
objRS = null;
objADO = null;
}
JS=ここまで==================================================

以上、宜しくお願い致します。

4   名前:  : 2006/02/09 20:15
自己レスです。

どうも「objADO.Open("Driver={Microsoft Access Driver (*.mdb)}; DBQ=C:\\japan.mdb;");

という書き方がよろしくなかったようで、下記のように自PCにデータソースを作れば
ブラウザ上でも動きました。
「objADO.Open("japan")」←japanというODBCデータソースをあらかじめ用意。

ただし、無料HPのサーバーにアップしてブラウザにて実行すると、
「このコンピュータの安全性の設定により、ほかのドメインのデータソースへのアクセスは禁止されています。」
と出てしまいます。

最初から質問が整理できていなかったので申し訳なかったのですが、
現時点での質問としましては、
・サーバー上にあるhtml内のJavaScriptで
MDBファイル(サーバー上でも自PCでもどちらでもかまわない)に
ODBCデータソースを作成せずにアクセスをする方法。
ということになります。

宜しくお願い致します。


5   名前: Qul : 2006/02/09 20:15
>「このコンピュータの安全性の設定により、ほかのドメインのデータソースへのアクセスは禁止されています。」

文字通りの意味です。
一般に、他ドメインのリソースにアクセスすることはセキュリティ上不可能です。
なので、データを呼び出しファイルと同じドメイン上に置く必要があります。
(スクリプトが実行されるのはクライアント側だが、スクリプトが所属する空間(URI)はサーバ側である…と言い方は正しいかな)

WinIEなら抜け道もありますが、ここでは書きません。

6   名前:  : 2006/02/09 20:15
Quiさん、返信ありがとうございます。

AccessのMDBファイルをサーバーに置くということですね。
調べてみるとレンタルサーバーへのODBCデータソースの作成にもお金がかかるという情報がありましたので
ひとまず、サーバーサイドでMDBを直接操作できないか調査します。

ありがとうございました。

一覧へ戻る