読者です 読者をやめる 読者になる 読者になる

三流君のソースコード置き場

三流プログラマーが作成したコードが置いてあります。あまり参考にならないと思いますがヨロシクお願いします。

MDBを使ったアンケート集計を作る

元の三流解説は、
三流君ASP:MDBを使ったアンケート集計を作る
↑を見て、笑ってやってください。
ブログに過去のソースコードをアップして、ブログの検索機能で利用してます(利用予定です)
※古くさいコードが多いです・・・



パラメータをチェックする ソースコード

<%@LANGUAGE=VBScript%>
<html>
<head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=x-sjis">
<title>パラメータをチェックする</title>
</head>
<body>
<h2>パラメータをチェックする</h2>
test044-1.asp<br>
<hr>
エラー条件は、<br>
KUBUN が 無し(スペース)<br>
NO が無し Or 0の時<br>
A か 1~5以外の時(範囲外の時)<br>
<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 "パラメータは正常です"
  End If
%>
<hr>

正常パターンテスト用<br>
<A HREF="test044-1.asp?KUBUN=ASP&NO=44&A=5">test044-1.asp?KUBUN=ASP&NO=44&A=5</A><br>
<A HREF="test044-1.asp?KUBUN=ASP&NO=44&A=4">test044-1.asp?KUBUN=ASP&NO=44&A=4</A><br>
<A HREF="test044-1.asp?KUBUN=ASP&NO=44&A=3">test044-1.asp?KUBUN=ASP&NO=44&A=3</A><br>
<A HREF="test044-1.asp?KUBUN=ASP&NO=44&A=2">test044-1.asp?KUBUN=ASP&NO=44&A=2</A><br>
<A HREF="test044-1.asp?KUBUN=ASP&NO=44&A=1">test044-1.asp?KUBUN=ASP&NO=44&A=1</A><br>
<br>
エラーテスト用<br>
<A HREF="test044-1.asp?NO=44&A=1">test044-1.asp?NO=44&A=1 区分無し</A><br>
<A HREF="test044-1.asp?KUBUN=ASP&A=2">test044-1.asp?KUBUN=ASP&A=2 NO無し</A><br>
<A HREF="test044-1.asp?KUBUN=ASP&NO=44">test044-1.asp?KUBUN=ASP&NO=44 評価無し</A><br>
<A HREF="test044-1.asp?KUBUN=ASP&NO=44&A=6">test044-1.asp?KUBUN=ASP&NO=44&A=6 評価範囲外</A><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
%>

↑をテスト実行する→ http://www.ken3.org/cgi-bin/test/test044-1.asp?KUBUN=ASP&NO=44&A=3実行する



連続登録のチェックと初回の時はレコードを作成 ソースコード

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

%>

↑をテスト実行する→ http://www.ken3.org/cgi-bin/test/test044-2.asp?KUBUN=ASP&NO=6&A=2実行する


三流君ASPでフォーム関係の解説とサンプル
三流君ASPでADO MDB接続関係の解説とサンプル
三流君ASPでADO Excel接続関係の解説ページとサンプル
三流君ASPでADO CSV接続関係の解説ページとサンプル
三流君ASPでテキストファイル関係の解説とサンプルページ
三流君ASP VBScript関数の解説とサンプル



三流君ASPで遊ぶ、失敗する

SQL文 HAVING句でGroup化されたレコードに条件設定する

元の三流解説は、
三流君ASP:SQL文 HAVING句でGroup化されたレコードに条件設定する
↑を見て、笑ってやってください。
ブログに過去のソースコードをアップして、ブログの検索機能で利用してます(利用予定です)
※古くさいコードが多いです・・・



ソースコード

<%@LANGUAGE=VBScript%>
<html>
<head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=x-sjis">
<title>SQL文 HAVING句でGroup化されたレコードに条件設定する</title>
</head>
<body>
<h1>SQL文 HAVING句でGroup化されたレコードに条件設定する</h1>
test043-1.asp<br>
<hr>
cnt_asp.mdb から訪問されたURLをグループ化して集計、降順に表示<br>
<b>HAVING句で訪問者50人以上を表示</b><br>
<font color="red"><strong>HAVING Count(URL) >= 50</strong>
と設定してみました</font><br>
<hr>
<%
  'ADO DB Connection オブジェクトを作成する、英文そのままじゃん
  Set db=Server.CreateObject("ADODB.Connection")

  '.Provider?プロバイダー?通信会社?じゃなくって
  'データアクセスにはJet.OLEDB.4.0を使うことを設定
  db.Provider = "Microsoft.Jet.OLEDB.4.0"

  '次に、接続DBの位置を渡すので、Server.MapPathで変換して渡す
  db.ConnectionString = Server.MapPath("cnt_asp.mdb")

  'やっとデータベースを開ける
  db.open

  'お約束のレコードセットの作成 テーブル名URLを指定
  'GROUP BY句 で グループ化 Count関数で集計 ORDER BY句で並べ替え
  strSQL = "Select URL, Count(URL) As URLCNT "
  strSQL = strSQL & "From log "
  strSQL = strSQL & "GROUP BY URL "
  strSQL = strSQL & "HAVING Count(URL) >= 50 "  'グループ化集計50人以上
  strSQL = strSQL & "ORDER BY Count(URL) DESC"

  'オマケで画面にデータ表示
  Response.Write "<hr>発行する(した)SQL文は<br><B><font color='green'>"
  Response.Write strSQL & "</font></B><br>です<hr>"

  Set rs = db.Execute(strSQL)

  'データの表示をテーブルで行う
  Response.Write "<TABLE Border='1'>"

  '見出しをバカっぽく、そのまま書き込む
  Response.Write "<TR>"
  Response.Write "<TD>No.</TD>"
  Response.Write "<TD>URL</TD>"
  Response.Write "<TD>訪問者</TD>"
  Response.Write "</TR>"

  'EOFまでループ
  nCNT = 1
  Do While rs.EOF = False   '.EOFがFalseの間
    Response.Write "<TR>"   '内容を表示する
    Response.Write "<TD>" & nCNT & "</TD>"

    Response.Write "<TD><A HREF='" & rs.Fields.Item("URL") & "' Target='_blank'>"
    Response.Write rs.Fields.Item("URL") & "</A></TD>"

    Response.Write "<TD ALIGN=RIGHT>" & rs.Fields.Item("URLCNT") & "人</TD>"

    Response.Write "</TR>" & Chr(13) & Chr(10)
    '次のレコードにポインタを移動する
    rs.MoveNext    'これを忘れると悲惨なことに、、、
    'カウンタを増やす
    nCNT = nCNT + 1
  Loop

  Response.Write "</TABLE>"  'テーブルは終わりです

  '開いていたレコードセットを閉じる
  rs.Close

  'データベースも閉じようよ
  db.Close

  'お行儀よくオブジェクトも開放しましょう(通常は自動的に解放されるけど)
  Set db = Nothing

%>
<hr>
終了です。<br>
<A HREF="test039-1.asp">URLでグループ化した集計値を全て表示</A><br>
<A HREF="test037-1.asp">cnt_asp.mdb 最近訪問した人のデータ30件を表示</A><br>
<br>
</body>
</html>

↑をテスト実行する→ http://www.ken3.org/cgi-bin/test/test043-1.asp実行する


三流君ASPでフォーム関係の解説とサンプル
三流君ASPでADO MDB接続関係の解説とサンプル
三流君ASPでADO Excel接続関係の解説ページとサンプル
三流君ASPでADO CSV接続関係の解説ページとサンプル
三流君ASPでテキストファイル関係の解説とサンプルページ
三流君ASP VBScript関数の解説とサンプル



三流君ASPで遊ぶ、失敗する

Application("XXXX") Application変数のテスト

元の三流解説は、
三流君ASP:Application("XXXX") Application変数のテスト
↑を見て、笑ってやってください。
ブログに過去のソースコードをアップして、ブログの検索機能で利用してます(利用予定です)
※古くさいコードが多いです・・・



ソースコード

<%@LANGUAGE=VBScript%>
<% '頭でパラメータのチェックとセット処理
  If IsEmpty(Request.QueryString("SETDATA")) = False Then
    Application("test042data") = Letf(Request.QueryString("SETDATA"),20) 'データセット
    Application("test042time") = Now   '現在時刻のセット
  End If    
  Application("test042cnt") = Application("test042cnt") + 1   '+1する
%>
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=x-sjis">
<title>Application("XXXX") 共通変数のテスト</title>
</head>
<body>
<h2>Application("XXXX") 共通変数のテスト</h2>
test042-1.asp<br>
<hr>
Application("test042data")=[<b><%=Application("test042data")%></b>]が<br>
Application("test042time")=[<b><%=Application("test042time")%></b>]に書きこまれました<br>
Application("test042cnt")=[<b><%=Application("test042cnt")%></b>]回目のアクセスです<br>
(がセットされてます。)
<hr>
<br>
<b>好きな文字を入れて送信して下さい</b><br>
<FORM ACTION="test042-1.asp" METHOD="GET"><!-- 自分自身を呼ぶ -->
<font color="blue">セットする文字は</font><br>
<INPUT TYPE="text" SIZE="20" NAME="SETDATA" VALUE="ABCDE好きな文字"><br>
<br>
<INPUT TYPE="submit" VALUE="データセット(送信)">
</FORM>

<hr>
</body>
</html>

↑をテスト実行する→
http://www.ken3.org/cgi-bin/test/test042-1.asp
http://www.ken3.org/cgi-bin/test/test042-2.asp
実行する


三流君ASPでフォーム関係の解説とサンプル
三流君ASPでADO MDB接続関係の解説とサンプル
三流君ASPでADO Excel接続関係の解説ページとサンプル
三流君ASPでADO CSV接続関係の解説ページとサンプル
三流君ASPでテキストファイル関係の解説とサンプルページ
三流君ASP VBScript関数の解説とサンプル



三流君ASPで遊ぶ、失敗する