• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ASPプログラミングでADODB.Connection (0x800A0E79)エラーが発生)

ASPプログラミングでADODB.Connection (0x800A0E79)エラーが発生

このQ&Aのポイント
  • ASPプログラミングでADODB.Connection (0x800A0E79)エラーが発生しています。
  • 現在、SQL Server2000内にDBとTable(user_info)を作成し、global.asaファイルを設置しています。
  • ユーザ登録を実行後にログオンを実行すると、ADODB.Connection (0x800A0E79)エラーが表示されます。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

murasacoさん、はじめまして^^ コネクションエラーについてですが、DBまでのパスがあっているかどうかや、ファイル名の指定にミスが無いかどうかをまず確認すると良いと思います。 あとはSQLを実行させる際に、入力された文字などが正しく入ってきているかどうかを確認する為に、Response.writeでSQLの入っている変数を表示してみると良いと思います。 データベースソフトはACCSESSですかね? その場合はファイルがロックされていないかどうかも確認してみると良いかもしれません^^

murasaco
質問者

お礼

WhiteMageさん  『ファイル名の指定にミスが無いか』と言うご指摘の通り、ファイルへのパス名に誤りがありました。あまりにも初歩的な間違いでお騒がせしてすみません。  これからも、どうぞ見捨てずに助けてください。どうもありがとうございました。 (誤)27: name = fso.BuildPath(Server.MapPath("./"), "temp\access.cnt") (正)27: name = fso.BuildPath(Server.MapPath("./"), "tmp\access.cnt")  実際には、フォルダ名をtmp⇒tempに修正しました。

murasaco
質問者

補足

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 %>

その他の回答 (1)

回答No.2

ごめんなさい、補足です^^; オブジェクトが開いている場合は・・・・というエラーがでているようですが、できましたら、ソースを見せていただけるとうれしいです。 おそらくレコードセットやコネクションストリング変数の扱い部分ではないかとおもうのですが・・・・。

murasaco
質問者

補足

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