ASP+MSDE 実用Webアプリケーション作成ガイド「ASP実践プログラミング入門」
と言う本を頼りにASPを勉強中です。
現在は、
(1) SQL Server2000内にDBとTable(user_info)を作成。
(2) global.asaファイルを設置。
(3) 「ユーザ登録」aspを実行。(user_infoに追加された)
(4) 「ログオン」aspを実行。
と進めていますが、(4)を実行しID+パスワードを入力後に次のような
エラーがブラウザ上に表示されます。
どなたかお助け頂きたくお願いします。
Q1)『ADODB.Connection (0x800A0E79)オブジェクト・・』と怒られている
ようですが、何が原因なのでしょうか?
Q2) 解決に向けて調べるべき要点はどこでしょうか?
■発生したエラーはここから■
(IE上の表示です)
ページを表示できません
接続しようとするページに問題があるため、そのページを表示できません。
---------------------対処方法
・[更新] をクリックするか、後で再度実行してください。
・次のホームページ 1**.**.***.**6を開き、 必要な情報が記載されたページ
へのリンクを探します。
HTTP 500.100 - 内部サーバー エラー - ASP エラー
インターネット インフォメーション サービス
---------------------
技術情報 (サポート担当者用)
・エラー タイプ
ADODB.Connection (0x800A0E79)
オブジェクトが開いている場合は、操作は許可されません。
/mailhen/logon.asp, line 4
・ページ
POST 27 bytes to /mailhen/logon.asp
・POST Data:
user=mura****&pass=r*****k
■ここまで■
/mailhen/logon.asp, line 4
1:<% If Request.Form("user") <> "" Then
2: user_id = Request.Form("user")
3: password = Request.Form("pass")
4: adcn.Open Application("DBCN")
5: adrs.Open "select * from user_inf
No.1ベストアンサー
- 回答日時:
murasacoさん、はじめまして^^
コネクションエラーについてですが、DBまでのパスがあっているかどうかや、ファイル名の指定にミスが無いかどうかをまず確認すると良いと思います。
あとはSQLを実行させる際に、入力された文字などが正しく入ってきているかどうかを確認する為に、Response.writeでSQLの入っている変数を表示してみると良いと思います。
データベースソフトはACCSESSですかね?
その場合はファイルがロックされていないかどうかも確認してみると良いかもしれません^^
この回答への補足
global.asa
1:<!-- METADATA TYPE="TypeLib"
2: NAME="Microsoft ActiveX Data Objects 2.6 Library"
3: UUID="{00000206-0000-0010-8000-00AA006D2EA4}" -->
4:<!-- METADATA TYPE="typelib" NAME="Microsoft Scripting Runtime"
5: UUID="{420B2830-E718-11CF-893D-00A0C9054228}" -->
6:
7:<OBJECT RUNAT="server" SCOPE="session" ID="adcn"
8: PROGID="ADODB.Connection">
9:</OBJECT>
10:<OBJECT RUNAT="server" SCOPE="session" ID="adrs"
11: PROGID="ADODB.Recordset">
12:</OBJECT>
13:<OBJECT RUNAT="server" SCOPE="session" ID="fso"
14: PROGID="Scripting.FileSystemObject">
15:</OBJECT>
16:
17:<SCRIPT LANGUAGE="vbscript" RUNAT="server">
18:' Webアプリケーション起動処理
19:Sub Application_OnStart
20: ' 初期値
21: Application("FONTSIZE") = "9pt"
22: Application("HOME") = "/mailhen/"
23: Application("DBCN") = _
24: "PROVIDER=SQLOLEDB;SERVER=(local);DATABASE=mailhen;UID=sa;PWD="
25: ' アクセスカウンターの初期化処理
26: Application("COUNTER") = 0
27: name = fso.BuildPath(Server.MapPath("./"), "temp\access.cnt")
28: If fso.FileExists(name) Then
29: Set fh = fso.OpenTextFile(name)
30: Application("COUNTER") = CInt(fh.ReadLine)
31: fh.Close
32: End If
33: ' Webチャット用の初期化処理
34: Application("CHFLAG") = 0
35: Application("CHUSER") = ""
36: Application("CHMESS") = ""
37: ' ディスク管理用の初期化処理
38: Application("CURDRIVE") = "C"
39: ' データベース管理用の初期化処理
40: Application("DBKR") = "PROVIDER=SQLOLEDB;SERVER=(local);UID=sa;PWD="
41: Application("DEFDB") = "master"
42: Application("DATAMAX") = 10
43: Application("TYPELIST") = "bit,char,datetime,float,int,smallint,varchar"
44:End Sub
45:
46:' Webアプリケーション終了処理
47:Sub Application_OnEnd
48:End Sub
49:
50:' ユーザセッション開始処理
51:Sub Session_OnStart
52: ' ユーザー認証用の画面遷移
53: list = Split(LCase(Request.ServerVariables("SCRIPT_NAME")), "/")
54: scrp = list(UBound(list))
55: If scrp <> "logon.asp" And scrp <> "user_regist.asp" Then
56: Response.Redirect Application("HOME") & "logon.asp"
57: End If
58: ' ディスク管理用の初期化処理
59: Session("CURDRIVE") = Application("CURDRIVE")
60: Session("CURFOLDER") = Application("CURDRIVE") & ":\"
61: ' データベース管理用の初期化処理
62: Session("DATABASE") = Application("DEFDB")
63:End Sub
64:
65:' ユーザセッション終了処理
66:Sub Session_OnEnd
67:End Sub
68:</SCRIPT>
login.asp
1:<% If Request.Form("user") <> "" Then
2: user_id = Request.Form("user")
3: password = Request.Form("pass")
4: adcn.Open Application("DBCN")
5: adrs.Open "select * from user_info where user_id='" & user_id & _
6: "' and password='" & password & "'", adcn, _
7: adOpenStatic, adLockOptimistic, adCmdText
8: ' ユーザー情報にマッチしたら取得して最終ログオンを更新
9: If Not adrs.EOF Then
10: Session("USER") = adrs("user_id").Value
11: Session("AUTH") = adrs("authority").Value
12: adrs("last_logon").Value = Now
13: adrs.Update
14: ' ここにアクセスカウンター用スクリプトを記述する
15: Application.Lock
16: Application("COUNTER") = Application("COUNTER") + 1
17: name = fso.BuildPath(Server.MapPath("./"), "temp\access.cnt")
18: Set fh = fso.CreateTextFile(name, True)
19: fh.WriteLine CStr(Application("COUNTER"))
20: fh.Close
21: Session("COUNTER") = Application("COUNTER")
22: Application.UnLock
23: ' ここに接続履歴用スクリプトを記述する
24: adrs.Close
25: adrs.Open "accesslog", adcn, adOpenStatic, adLockOptimistic, adCmdTable
26: adrs.AddNew
27: adrs("access").Value = Now
28: adrs("ipaddr").Value = Request.ServerVariables("REMOTE_ADDR")
29: adrs("lang").Value = Request.ServerVariables("HTTP_ACCEPT_LANGUAGE")
30: adrs("agent").Value = Request.ServerVariables("HTTP_USER_AGENT")
31: adrs.Update
32: ' ユーザー情報にマッチしなかったらセッションを終了
33: Else
34: Session.Abandon
35: End If
36: adrs.Close
37: adcn.Close
38: Response.Redirect Application("HOME")
39: Else
40: ' 登録済みユーザー数取得
41: adcn.Open Application("DBCN")
42: adrs.Open "select count(*) from user_info", adcn, _
43: adOpenForwardOnly, adLockReadOnly, adCmdText
44: count = adrs(0).Value
45: adrs.Close
46: adcn.Close
47: ' ユーザー情報がない場合はユーザー登録画面に遷移
48: If count = 0 Then
49: Response.Redirect "user_regist.asp"
50: End If
51: End If %>
52:<HTML>
53:<HEAD>
54:<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=shift_jis">
55:<TITLE>ログオン</TITLE>
56:<STYLE TYPE="text/css">
57:<!--
57:BODY {font-size:<%= Application("FONTSIZE") %>;}
59:TD {font-size:<%= Application("FONTSIZE") %>;}
60:-->
61:</STYLE>
62:<SCRIPT LANGUAGE="javascript">
63:<!--
64:function fnSubmit() {
65: if (fm.user.value == "") {
66: alert("ユーザーIDを入力してください。");
67: return false;
68: }
69: return true;
70:}
71:-->
72:</SCRIPT>
73:</HEAD>
74:<BODY>
75:ユーザーログオン
76:<HR>
77:<FORM NAME="fm" METHOD="post" ACTION="logon.asp" onSubmit="return fnSubmit();">
78:<TABLE BORDER="0">
79:<TR>
80:<TD>ユーザーID:</TD>
81:<TD><INPUT NAME="user" TYPE="text"></TD>
82:</TR>
83:<TR>
84:<TD>パスワード:</TD>
85:<TD><INPUT NAME="pass" TYPE="password"></TD>
86:</TR>
87:</TABLE>
88:<HR>
89:<INPUT TYPE="submit" VALUE="ログオン">
90:<INPUT TYPE="button" VALUE="ユーザー登録"
91: onClick="document.location.href='user_regist.asp'">
92:</FORM>
93:</BODY>
94:</HTML>
95:<% Session.Abandon %>
WhiteMageさん
『ファイル名の指定にミスが無いか』と言うご指摘の通り、ファイルへのパス名に誤りがありました。あまりにも初歩的な間違いでお騒がせしてすみません。
これからも、どうぞ見捨てずに助けてください。どうもありがとうございました。
(誤)27: name = fso.BuildPath(Server.MapPath("./"), "temp\access.cnt")
(正)27: name = fso.BuildPath(Server.MapPath("./"), "tmp\access.cnt")
実際には、フォルダ名をtmp⇒tempに修正しました。
No.2
- 回答日時:
ごめんなさい、補足です^^;
オブジェクトが開いている場合は・・・・というエラーがでているようですが、できましたら、ソースを見せていただけるとうれしいです。
おそらくレコードセットやコネクションストリング変数の扱い部分ではないかとおもうのですが・・・・。
この回答への補足
WhiteMageさん
助けの手をさしのべて頂いてありがとうございます。
No.1の方に、(1)global.asa、(2)login.asp のソースを載せました。デバックして頂くようで恐縮しています。この(1)(2)は、本に掲載されていたサンプルプログラムを使用し、若干の修正をしています(DB名等)
IISのデバッガをかまして実行すると。
『例外の種類'ランタイムエラー'はハンドルできませんでした。アプリケーションのデバックを行いますか?』
(はい)
『'Microsoft VBScript実行時エラーパスが見つかりません。'の種類の例外はハンドルできません。』
(OK)
デバッカ内に以下のソースが表示されてます(最終行が実行時の最終ポイントかと思います)
---------------
<% If Request.Form("user") <> "" Then
user_id = Request.Form("user")
password = Request.Form("pass")
adcn.Open Application("DBCN")
adrs.Open "select * from user_info where user_id='" & user_id & _
"' and password='" & password & "'", adcn, _
adOpenStatic, adLockOptimistic, adCmdText
' ユーザー情報にマッチしたら取得して最終ログオンを更新
If Not adrs.EOF Then
Session("USER") = adrs("user_id").Value
Session("AUTH") = adrs("authority").Value
adrs("last_logon").Value = Now
adrs.Update
' ここにアクセスカウンター用スクリプトを記述する
Application.Lock
Application("COUNTER") = Application("COUNTER") + 1
name = fso.BuildPath(Server.MapPath("./"), "temp\access.cnt")
⇒ Set fh = fso.CreateTextFile(name, True)
---------------
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- オープンソース AWSドメイン名でApacheテスト・ページを表示させる方法を教えて下さい。 1 2023/04/26 15:59
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- PHP php ログイン 1 2022/11/01 00:24
- その他(プログラミング・Web制作) laravel 本番環境でメールが送れません。 1 2023/02/17 17:57
- その他(開発・運用・管理) Windowsバッチファイルでリモートデスクトップを自動ログインするが確認画面が出る対処方法 1 2022/12/19 15:48
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- PHP php テーブルが作成できない 1 2022/11/17 23:41
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C# try-catch でcatchに飛ばす方法
-
CreateObject("Excel.Applicati...
-
cmd.exe' の起動中にエラーが発...
-
winsock通信時エラーの回避
-
エラー 'ASP 0115'
-
SQLサーバーへの接続に 接...
-
エラー内容について
-
ASPからWscriptを利用して外部...
-
WinXPProにVC++6.0をイン...
-
SQLがどの処理かをC#側で判断す...
-
【C#】アップロード時に「アプ...
-
ASP.NETで使用しているJavascri...
-
エクセルVBA 宣言Dimの場所
-
VBSにてサーバー中のエクセルフ...
-
ASP内で他のASPファイルを読み...
-
名前が二重に定義されています
-
VBSでIEを起動し、拡大率を変更...
-
VB6でのPL/SQLの実行について
-
SqlDataSource SelectCommand ...
-
vbscriptの変数宣言
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C# try-catch でcatchに飛ばす方法
-
FileCopy時のエラー
-
EXECLマクロでshapeがグルーフ...
-
Outlookで添付ファイルの有無を...
-
エラー 'ASP 0115' について
-
このページの状態情報は無効で...
-
エラー 'ASP 0115'
-
fopenでエラーとなる
-
winsock通信時エラーの回避
-
VB6でRDOに接続できない
-
VBA RemoveDuplicatesで「アプ...
-
ASPプログラミングでADODB.C...
-
CreateObject("Excel.Applicati...
-
エラー内容について
-
オラクル接続をopenしようとす...
-
CAsyncSocket::Create()がエラ
-
ASPからWscriptを利用して外部...
-
オーバーフローが発生します
-
ASP.NETで使用しているJavascri...
-
IIS7.5の設定の仕方
おすすめ情報