プロが教える店舗&オフィスのセキュリティ対策術

はじめまして。カナと申します。
突然ASPで開発をすることになり、謎だらけで大変困っています。宜しくお願いいたします。

・windowsXP
・Vbscript
・IIS5.0

質問:SQLserver2000からデータを取得し、そのテーブルの件数を表示する

以下のように記述したところ、ブラウザで確認すると「ページを表示できません 」になってしまいます。

-------
<%@ LANGUAGE="VBScript" %>
<% option explicit %>
<%
Dim objCon ' DB接続コネクション
Dim objRS ' DB結果レコードセット
Dim sql ' SQL文
Dim errflg ' エラーフラグ

'DataSource名
Const DS = "111.111.0.1" ←IPアドレス。正しいものをいれてます
Const IC = "DB名"     
'ユーザ名
Const User = "sa"
'パスワード
Const Pwd = "sa"

Set objCon = Server.CreateObject("ADODB.Connection")
Set objRS = Server.CreateObject("ADODB.Recordset")

objCon.ConnectionString = "Provider=SQLOLEDB;" & _
"User ID=" & User & ";" & _
"Password=" & Pwd & ";" & _
"Data Source=" & DS & ";" & _
"Initial Catalog=" & IC

objCon.Open

sql = "select * from Aテーブル"
objRS.Open sql,objCon,adOpenStatic,adLockReadOnly


%>
レコード件数 <%=objRS.RecordCount%>
<%
' DBclose
objCon.Close()
Set objCon = Nothing
objRS.Close()
Set objRS = Nothing
%>


---------------

以上です。どこかおかしいのでしょうか・・・。
VBAは触ったことがあるのですが、VBAのようにブレークポイントを付けるデバッグが出来ないので、どこで落ちたのかもわからず困っています。
こういう場合の、上手なデバッグ方法があれば、それもご教授いただきたいです。ちなみに客先なので、ソフトやツールのインストールなどは出来ません・・・。

前に進めず、本当に困っています。
どなたか、宜しくお願いいたします!

A 回答 (2件)

SQLサーバーのデータベースへのアクセス出来るユーザーに


『IUSER_サーバー名』のユーザーは追加なさっていますか?

OfficeXP以降がインストールされているのであれば
Officeの一部である Microsoft Script Editor(MSE7.exe)でデバッグしてみてはいかがでしょう

どこまで動いているのか確認なさったほうがいいように思います
怪しいと思われる部分以前のコードにして Response.WriteなどでHTML出力してエラーの特定をしましょう
    • good
    • 0
この回答へのお礼

返信ありがとうございます。
確認したところ、おっしゃるとおりユーザー名の追加で解決できました!感謝感謝です。

あと、Microsoft Script Editorはインストールされていませんでした。
response.Writeで、「この辺かな?」とこまめに追っていくしかないのかなと思うのですが、いまいち使いこなせません。
例えば、コネクションが既にopenされているのにcloseせずにまたopenしようとすると、エラーになり2度目のopenはできませんが、ブラウザで確認するとなんのエラーメッセージも表示されず、確認が難しいです。

このような、DBに関わる部分の確認は、openしたあとに取得した項目を Response.Writeで表示するなどして確認していくしかないのでしょうか?
(出来るだけ、sprict editerなどは使わない方法だと・・・)
重ねて申し訳ありませんが、宜しくお願いいたします。

お礼日時:2008/02/09 15:47

ASPのデバッグだと こまめにRespose.Writeで書き出すしか無いでしょうね



VBSファイルなどで先にある程度デバッグしてからASPに更新して
といった手順もありますが 実行者がVBSとASPで異なりますので権限などの違いによりVBSではOKなのに ASPではNGといった現象も起きます
コマンドプロンプトなどで実行されるVBSではログインユーザーの権限で実行されるのですがASPでは『IUSER_XXX』で実行するので『Guests』グループの権限しかありませんので …

Connectionなら Stateプロパティで確認出来そうですよ
Const adStateClosed = 0
if cnn.State == adStateClosed then
  cnn.Open
End if
といった具合ですけど

私は開発時に Open/Closeなど対になっている物の場合先に両方をコーディングしてから中身の記述をする癖つけています
# たまには忘れてて … バグる時もありますが
    • good
    • 0
この回答へのお礼

返信ありがとうございます。
VBSで・・・でも確かに微妙に異なるのだと、ちょっと怖いですね。

>Connectionなら Stateプロパティで確認出来そうですよ

なるほど!参考にさせて頂きます。対の場合も、やっぱりクセづけて慣れていくのが一番なんですね。
地道に、追っていけるようがんばってみます。

大変参考になりました!
また質問させていただくと思いますが、その際は宜しくお願いいたします。
本当にありがとうございました。

お礼日時:2008/02/09 22:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!