を 使った ソースコードを紹介する表示色の説明:ASP VBScriptは <% 〜 %> キーワードは です。
<%@LANGUAGE=VBScript%>
<% Response.CacheControl = "no-cache" %>
<% Response.AddHeader "Pragma", "no-cache" %>
<% Response.Expires = -1 %>
<html>
<head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=x-sjis">
<title>連続登録のチェックと初回の時はレコードを作成</title>
</head>
<body>
<h2>連続登録のチェックと初回の時はレコードを作成</h2>
test044-2.asp<br>
<hr>
連続登録のチェックを行います。
<hr>
<%
'値の代入
KUBUN = Request.QueryString("KUBUN")
NO = Request.QueryString("NO")
A = Request.QueryString("A")
'テストで値を表示
Response.Write "<Font Color='BLUE'>受取った値は</Font><BR>"
'For Each で Request.QueryStringの値を取出す
For Each RQ In Request.QueryString
Response.Write RQ & "=" '名称表示
Response.Write Request.QueryString(RQ) & "<BR>" '値の表示
Next
'パラメータのチェックを行う
ret = errchk() 'チェック用の関数を呼ぶ
If ret = -1 Then 'エラーか?
Response.Write "<Font Color='red'>"
Response.Write "受取ったパラメータが異常です"
Response.Write "</Font>"
Else '正常時
Response.Write "パラメータは正常です<hr>"
ret = cntDATA() '連続登録のチェックとデータ加算
If ret = -1 Then
Response.Write "<Font Color='red'>"
Response.Write "連続投票はできません"
Response.Write "</Font>"
End If
End If
%>
<hr>
テスト用(連続で押して、チェックしてください)<br>
<A HREF="test044-2.asp?KUBUN=ASP&NO=44&A=5">test044-2.asp?KUBUN=ASP&NO=44&A=5</A><br>
<A HREF="test044-2.asp?KUBUN=ASP&NO=45&A=4">test044-2.asp?KUBUN=ASP&NO=45&A=4</A><br>
<A HREF="test044-2.asp?KUBUN=VBA&NO=1&A=3">test044-2.asp?KUBUN=VBA&NO=1&A=3</A><br>
<A HREF="test044-2.asp?KUBUN=VBA&NO=2&A=2">test044-2.asp?KUBUN=VBA&NO=2&A=2</A><br>
<A HREF="test044-2.asp?KUBUN=24H&NO=44&A=1">test044-2.asp?KUBUN=24H&NO=44&A=1</A><br>
<br>
<br>
</body>
</html>
<% '外側に関数を書いてます(どこでもいいんだけど)
Function errchk() 'パラメータのエラーをチェックします 0:正常 -1:エラー
errchk = 0 'エラーを無しにする(初期値で代入)
'KUBUN が 無し(スペース)
If Len(KUBUN) = 0 Then errchk = -1
'NO が無し Or 0の時
If Len(NO) = 0 Then errchk = -1
If CInt(NO) = 0 Then errchk = -1
'A か 1〜5以外の時(範囲外の時)
If A < 1 Or 5 < A Then errchk = -1
End Function
Function cntDATA() '連続登録のチェックとデータ加算 0:正常 -1:エラー
'ADO DB Connection オブジェクトを作成する
Set db=Server.CreateObject("ADODB.Connection")
'データアクセスにはJet.OLEDB.4.0を使うことを設定
db.Provider = "Microsoft.Jet.OLEDB.4.0"
'次に、接続DBの位置を渡すので、Server.MapPathで変換して渡す
db.ConnectionString = Server.MapPath("db044.mdb")
'やっとデータベースを開ける
db.open
'検索するSQLを作成する
strSQL = "Select * From ans "
strSQL = strSQL & "Where KUBUN = '" & KUBUN & "' And MNO = " & NO
'オマケで画面にデータ表示
Response.Write "<hr>発行する(した)SQL文は<br><B><font color='green'>"
Response.Write strSQL & "</font></B><br>です<hr>"
Set rs = db.Execute(strSQL) 'SQL文を発行してレコードセットを作成
If rs.EOF = True Then 'データが見つからなかった時
strINSSQL = "INSERT INTO ans (KUBUN, MNO) VALUES ("
strINSSQL = strINSSQL & "'" & KUBUN & "'" '区分
strINSSQL = strINSSQL & ", " & NO & ")" 'NO
'オマケで画面にデータ表示
Response.Write "<hr>発行する(した)SQL INSERT文は<br><B><font color='green'>"
Response.Write strINSSQL & "</font></B><br>です<hr>"
'SQL INSERT文を発行
db.Execute(strINSSQL)
Else 'データ在りの時
'前回のIPアドレスと同じかチェックする
If rs("IP") = Request.ServerVariables("REMOTE_ADDR") Then
cntDATA = -1 'エラーにする
rs.Close
Exit Function '関数を途中で抜ける
End If
End If
rs.Close 'レコードセットを閉じる
'UPDATEのSQL文を作成する
strUSQL = "UPDATE ans Set " 'ansテーブルを更新
strUSQL = strUSQL & "IP = '" & Request.ServerVariables("REMOTE_ADDR") & "'"
strUSQL = strUSQL & ", WriteTime = #" & Now & "#"
strUSQL = strUSQL & ", A" & A & " = A" & A & " + 1" 'カウントアップ
strUSQL = strUSQL & " Where KUBUN = '" & KUBUN & "' And MNO = " & NO '条件
'オマケで画面にデータ表示
Response.Write "<hr>発行する(した)SQL UPDATE文は<br><B><font color='green'>"
Response.Write strUSQL & "</font></B><br>です<hr>"
'SQL文を発行
db.Execute(strUSQL)
'更新結果を読み直す
Set rs = db.Execute(strSQL) 'SQL文を発行してレコードセットを作成
Response.Write "更新結果<br>"
Response.Write "KUBUN=<b>" & rs("KUBUN") & "</b><br>"
Response.Write "MNO=<b>" & rs("MNO") & "</b><br>"
Response.Write "A5=<b>" & rs("A5") & "</b><br>"
Response.Write "A4=<b>" & rs("A4") & "</b><br>"
Response.Write "A3=<b>" & rs("A3") & "</b><br>"
Response.Write "A2=<b>" & rs("A2") & "</b><br>"
Response.Write "A1=<b>" & rs("A1") & "</b><br>"
Response.Write "IP=<b>" & rs("IP") & "</b><br>"
Response.Write "WriteTime=<b>" & rs("WriteTime") & "</b><br>"
'リターン値をセットして関数終了
cntDATA = 0 '正常終了
End Function
%>
|
|