JavaScript データベースの Path(パス)を変更する方法について。

【講座名】
JavaScript初心者入門講座 に関する質問

【質問】
「Step3・データベースに接続」で問題が生じました。

データベースは Access2007を使用しています。

Access2007では、ダウンロードしたファイルの多くは、セキュリティを設定したフォルダーに格納しないと、動作の一部に不良を生じます。

今回も Cドライブ直下に SampleDB010.mdb を入れて見ましたが、接続できませんでした。

そこで、Eドライブにセキュリティを設定したフォルダ「E:\javascript」を作成し、SampleDB010.mdb を格納しました。

この場合、テキストの「DBQ=c:\\SampleDB010.mdb」部分は、どの様に記載すればよいでしょうか?

【回答】
Accessのファイルを Cドライブ直下以外の場所に配置する場合は、以下のような記述になります。

*「\」はWindowsでは円記号のことです。

DBQ=c:\\SampleDB010.mdb;

DBQ=c:\\javascript\\SampleDB010.mdb;

上記は Cドライブ直下に「javascript」フォルダを作成して、その中に SampleDB010.mdbを配置した場合です。

また、お問い合わせのように、Eドライブを使う場合は、以下のようになります。
DBQ=E:\\javascript\\SampleDB010.mdb;

Windows Vistaの場合も、セキュリティの問題から、ファイルの配置場所を、変更しなければならないことがあります。その時は、今回の説明と同じように、パスを変更してみてください。

【補足】
その後、読者様より、「接続に成功しました。」とのメールをいただきました。

JavaScript レコードを文字列で抽出する方法について。

【講座名】
JavaScript初心者入門講座 に関する質問

【質問】
SQL文を組み立てる部分について質問があります。
whereで特定の行を抽出する場合に、抽出条件を変数に代入したいのですが、上手くいきません。

以下のように数値を指定した場合は上手くいくのですが、
var one = "1";
var mySql = "select * from T01Prefecture where PREF_CD = " + one;
var recordSet = database.Execute(mySql);

文字列だと上手くいきません。
var fukuoka = "福岡県";
var mySql = "select * from T01Prefecture where PREF_NAME = " + fukuoka;
var recordSet = database.Execute(mySql);

SQLの組み立て時は変数の扱いが変わるのでしょうか?

また、SQL組み立て時に入力した文字列(コントロールまたは変数)+ワイルドカードでDBからデータを抽出したいのですが、可能でしょうか?

ご教授お願いします。

使用しているmdbは、ダウンロードさせて頂いた、SampleDB010です。

【回答】
文字列は「'」シングルクォートで囲む必要があります。

したがって、正しくは以下のようになります。
var mySql = "select * from T01Prefecture where PREF_NAME = '" + fukuoka + "'";

これがプログラムで組み立てられると、
select * from T01Prefecture where PREF_NAME = '福岡県'
というSQL文になります。

コツは組み立てたSQL文を、画面に表示してみることです。すると間違いに気付きやすくなります。アラートで表示してもかまいません。

また、ワイルドカードを使う場合は、次のようになります。
var mySql = "select * from T01Prefecture where PREF_NAME Like '*" + fukuoka + "*'";

プログラムで組み立てられると、
select * from T01Prefecture where PREF_NAME Like '*福*'
のようになります。

SQLについては、 Access SQL初心者入門講座 で詳しく説明しています。

【補足】
Accessでは、バージョンによって使えるワイルドカードが異なるようです。

Access2000では「*」を使いますが、Access2002以上では、ANSI規格の設定によって「%」が使えます。

JavaScript データの追加ができない件について。

【講座名】
JavaScript初心者入門講座 に関する質問

【質問】
お世話になります。
JavaScript初心者入門講座「Step5・データを追加」で行き詰っております。
下記のような状況です。何卒、ご教示のほどお願いいたします。

①プログラムはコピー&ペーストしています(sample010.html、sample010.jsとも)。
②データベースへの接続・切断はできます。
③「T01Prefecturer」の表示もできます。
④「99、テスト」のデータを追加しようとすると...
⑤sql文のアラートはでます(insert into T01Prefecture values(99,'テスト'))。
⑥ここで、「99、テスト」のデータが追加されません。
⑦エラーメッセージがでております。
  ライン:63
  文字:3
  エラー:[Microsoft][ODBC Microsoft Access Driver]更新可能なクエリであることが必要です。
⑧Accessの「T01Prefecture」をみても、データが追加されておりません。
⑨次の「Step7・変数の中身をブラウザに表示」を試して見ましたが、やはりデータの追加ができません。
変数の中身は表示されますが、「T01Prefecture」が更新されません。

なぜ、このようなエラーがでるのでしょうか?
ご参考まで、プログラムを添付いたしますが、ウェブサイトのものをコピー&ペーストしたものです。

以上、よろしくお願いします。

【回答】
送っていただいたファイルで、動作確認したところ、問題なく動作しました。

そこで、考えられる原因の一つは、パソコンを操作しているユーザーの権限です。

多分、ファイルを変更できないユーザーで、操作しようとしているのではないかと思います。

例えば、普段使っているユーザーではなく、学習用にユーザーを作成した場合が考えられます。

「制限付きのアカウント」では、正常に機能しないことがあります。アカウントの種類を、「コンピュータの管理者」に変更してみてください。

これは XP でも起こりますが、特に Vista は、フォルダやファイルに対する権限が厳しいです。

ちなみに、データベースへの接続と、データの表示については、「読み取り専用」でも開くことができます。

接続や表示に関しては、Accessのファイルが変更されることが無いため、問題なく表示できたのだと思います。

しかし、データを変更する操作の場合は、ユーザーの権限が関係してきます。

Accessのテーブルを、直接変更できるユーザーでログインすれば、問題なく動作すると思います。


その後、読者様から返信がありましたので、以下に掲載します。同じような症状の場合は、参考にしてください。

【読書様からの返信内容】
こんばんは。

原因がわかりました。

proxyが悪さをしていたようです。
ウイルス対策のため、インターネット接続はproxyサーバ経由で行っています。
今回JavaScriptのプログラムからAccessのDBに接続するのは、インターネットを介さないと思っていましたが、どうやらproxyサーバでブロックされていたようです。

今日、PCをクリーンインストールして、proxyを使わないように設定してみたら、データの追加ができました。

当方、技術的に詳しくないため、なぜproxyが悪さをするのかわかりませんが、とりあえず、成功しました。

これで前に進めます。たいへんお騒がせし、申し訳ありませんでした。

JavaScript データベースに接続できないことについて。

【講座名】
JavaScript初心者入門講座 に関する質問

【質問】
データベースの接続で、コピー貼り付けで試してみたのですが、接続できないのです。何か設定に不備があるのでしょうか?

【回答】
JavaScript初心者入門講座のプログラムは、 WindowsXP と Internet Explorer 6.0 の組み合わせで動作確認しています。

データベースの接続に ActiveX を使っているので、他のブラウザでは動きません。


(1)IE7の場合は ActiveX を手動で有効にする必要がありますが、こちらでは動作確認していません。


(2)したがって学習中だけでも IE6 にすることをおすすめします。

IE6はマイクロソフトのホームページから ダウンロード できます。

*注意

今メールソフトの Outlook Express をお使いの場合、インストールする時に、 Outlook Express を上書きしないようにしてください。メールのデータが消える可能性があります。


(3)もし WindowsXP と IE6 の組み合わせで動かない場合は、ブラウザで JavaScript がブロックされているか、ウィルス対策ソフトなどでブロックされている可能性があります。


ちなみにデータベースには Access を使っていますが、Access のソフトウェア自体は必ずしも必要ではありません。

関連する記事もご覧ください。
JavaScript ブラウザによって動作しない。
JavaScript Accessがインストールされていない場合。


JavaScript Accessがインストールされていない場合。

【講座名】
JavaScript初心者入門講座

【質問】
JavaScript から データベースの Access を操作するサンプルプログラムがありますが、Access がないと学べないのでしょうか?

【回答】
JavaScript初心者入門講座では、データベースに Access を使っていますが、Access がインストールされていないパソコンでも大丈夫です。

もちろん Access がインストールされていないと「.mdb」ファイルを開くことはできません。しかし JavaScript からは問題なく操作することができます。

JavaScript で追加、修正、削除を行なう部分のステップまで進めれば、Webブラウザ上にデータを表示できるので何とかなります。(しばらくは不便かもしれませんが)

またどうしても「.mdb」ファイルを開きたい場合は、オープンソースで無料公開されている OpenOffice.org か、 StarSuite を使う手もあります。

OpenOffice.org や StarSuite には、 Base というデータベースアプリケーションが含まれています。(内容は同じです)

この Base を使えば、Access のファイルに接続して、操作することができます。

Base から Access のファイルに接続した様子
qa-06.gif

詳しくは OpenOffice.org 初心者入門講座 をご覧ください。


JavaScript ブラウザによって動作しない。

【講座名】
JavaScript初心者入門講座

【質問】
Internet Explorer 7.0 や Firefox では、JavaScript のサンプルプログラムは動かないのでしょうか?

【回答】
データベースに接続するサンプルプログラムからは、ActiveX を使っていますので、基本的に Internet Explorer でないと動きません。Internet Explorer 6.0 で動作確認しています。

(1)Internet Explorer 7.0 を使っている場合は、Webブラウザのセキュリティの設定で、ActiveX を「有効」にしてみてください。

「ツール → インターネットオプション → セキュリティ → レベルのカスタマイズ」


(2)それでも動かない場合は、学習の間だけでも Internet Explorer 6.0 にすることを検討してください。

IE6はマイクロソフトのホームページから ダウンロード できます。


(3)またはレンダリングエンジン切り替え可能なブラウザを試してみてはどうでしょうか。

・Sleipnir
http://www.fenrir.co.jp/sleipnir/

*Sleipnirでは動作確認できました。


・Firefox に IE Tab を組み込む
https://addons.mozilla.org/ja/firefox/addon/1419

「IE Tab」は、Firefoxで Internet Explorer のレンダリングエンジンを使って表示することができます。

*Firefoxでは確認していません。


スポンサードリンク


スポンサードリンク






プログラミング入門 Q&A TOPへ