aspエラーについて
下記のaspを動かすとエラーがでます。どこを修正すればよいのでしょうか?教えてください。
エラー タイプ
Microsoft VBScript コンパイル エラー (0x800A0400)
ステートメントがありません。
/NBC/bunrui/box_order.asp, line 76
End If
ブラウザ タイプ
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)
ページ
POST 536 bytes to /NBC/bunrui/box_order.asp
POST Data:
irai_nen=2007&irai_tuki=9&irai_hi=25&okyaku=1&tanto=%82P&box_1=11&biko_1=bunn&box_11=%81@&biko_11=%81@&box_2=%81@&biko_2=%81@&box_12=%81@&biko_12=%81@&box_3=%81@&biko_3=%81@&box_13=%81@&biko_13=%81@&b . . .
<%@ language = VBScript %>
<%
DC = Chr(&H22)
' 実行環境に合わせて、以下の7行目から25行目について適切な名称に変更してください。
' テーブル内のフィールド名は11行目から25行目までですので、これも適切な名称に変更
' してください。
DATABASE_NAME = "ABC" ' データベース名
DB_USERNAME = "AB" ' ユーザー名
DB_PASSWORD = "ABCD" ' パスワード
TABLE_NAME = "T31_管理_W" ' テーブル名
FLD_RECNO = "recNo" ' レコードNo.
FLD_IRAI = "inputdata" ' 依頼日
FLD_OKYAKU = "ucode" ' お客様名
FLD_TANTO = "tanto" ' 担当者名
FLD_BOX = "boxno" ' BOX No.1
FLD_BIKO1 = "bunrui" ' 書類内容1
FLD_BIKO2 = "bunrui" ' 書類内容2
FLD_BIKO3 = "bunrui" ' 書類内容3
FLD_YOBI1 = "yobi1" ' 予備1
FLD_YOBI2 = "yobi2" ' 予備2
FLD_YOBI3 = "yobi3" ' 予備3
'On Error Resume Next
' フォームの値を取得
iDt = Array(0, 0, 0)
iDt(0) = Trim(Request.Form("irai_nen"))
iDt(1) = Trim(Request.Form("irai_tuki"))
iDt(2) = Trim(Request.Form("irai_hi"))
irai = DateSerial(iDt(0), iDt(1), iDt(2))
okyaku = Trim(Request.Form("okyaku"))
tanto = Trim(Request.Form("tanto"))
ReDim box(20)
ReDim biko(20)
For i = 1 To 20
box(i) = Trim(Request.Form("box_" & CStr(i)))
biko(i) = Trim(Request.Form("biko_" & CStr(i)))
Next
RecDate = Now
' テーブルを開く
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=SQLOLEDB;" & _
"Data Source=(local);" & _
"Initial Catalog=" & DATABASE_NAME, DB_USERNAME, DB_PASSWORD
Set Rs = Server.CreateObject("ADODB.Recordset")
Conn.BeginTrans
On Error Resume Next
Rs.Open "SELECT * FROM " & TABLE_NAME & " WHERE ([RecNo] Like '" & _
Right(Year(RecDate),2) & Right("0" & Month(RecDate),2) & _
Right("0" & Day(RecDate),2) & Right("0" & Hour(RecDate),2) & _
Right("0" & Minute(RecDate),2) & "%');", Conn, 1, 3, 1
iRec = 0
Do Until Rs.EOF
If iRec < CInt(Right(Rs(FLD_RECNO), 2)) Then
iRec = CInt(Right(Rs(FLD_RECNO), 2))
End If
Rs.MoveNext
Loop
i = 1
Do Until i > 20
If IsNumeric(box(i)) = False Then Exit Do
If CLng(box(i)) = 0 Then Exit Do
iRec = iRec + 1
Rs.AddNew
Rs(FLD_RECNO) = Right(Year(RecDate),2) & Right("0" & Month(RecDate),2) & _
Right("0" & Day(RecDate),2) & Right("0" & Hour(RecDate),2) & _
Right("0" & Minute(RecDate),2) & Right("0" & iRec, 2)
Rs(FLD_IRAI) = irai
Rs(FLD_TANTO) = tanto
Rs(FLD_BOX) = CLng(box(i))
If biko(i) = "" Then
Rs(FLD_BIKO1) = " "
Else
Rs(FLD_BIKO1) = biko(i)
End If
Rs(FLD_BIKO2) = " "
Rs(FLD_BIKO3) = " "
End If
お礼
WhiteMageさん 『ファイル名の指定にミスが無いか』と言うご指摘の通り、ファイルへのパス名に誤りがありました。あまりにも初歩的な間違いでお騒がせしてすみません。 これからも、どうぞ見捨てずに助けてください。どうもありがとうございました。 (誤)27: name = fso.BuildPath(Server.MapPath("./"), "temp\access.cnt") (正)27: name = fso.BuildPath(Server.MapPath("./"), "tmp\access.cnt") 実際には、フォルダ名をtmp⇒tempに修正しました。
補足
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 %>