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

三流プログラマーが作成したコードが置いてあります。ブログに過去のソースコードをアップして、ブログの検索機能で利用してます(利用予定です)※古くさいコードが多いです・・・



asp093.html 三流君ASP:FORM CHECKBOXから受け取った値を使用してWHERE句の作成

元の三流解説は、
三流君ASP:FORM CHECKBOXから受け取った値を使用してWHERE句の作成
↑を見て、笑ってやってください。
ブログに過去のソースコードをアップして、ブログの検索機能で利用してます(利用予定です)
※古くさいコードが多いです・・・



FORM CHECKBOX NAME=を個別に作成(Ifの嵐でWhere句を作成) ソースコード

<%@LANGUAGE=VBScript%>
<html>
<head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=x-sjis">
<title>FORM CHECKBOX NAME=を個別に作成(Ifの嵐でWhere句を作成)</title>
</head>
<body>
<h1>FORM CHECKBOX NAME=を個別に作成(Ifの嵐でWhere句を作成)</h1>
<FORM ACTION="test093-1.asp" METHOD="POST">
<font color="blue">CHECKBOX NAME=を個別に作成 Where句を作成するTEST</font><br>
表示したい・区分をチェックしてから検索ボタンを押してください<br>
<INPUT TYPE="CHECKBOX" NAME="ASP">ASP<br>
<INPUT TYPE="CHECKBOX" NAME="VBA">VBA<br>
<INPUT TYPE="CHECKBOX" NAME="24H">コンビニ系<br>
<INPUT TYPE="CHECKBOX" NAME="GUCHI">愚痴系<br>
<INPUT TYPE="submit" VALUE="検索する">
</FORM>

<%
  '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("db029.mdb")

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

  'WHERE句を作成する
  strWHERE = ""   '条件を初期化する
  '4つの区分をそれぞれ判断する
  If Request.Form("VBA") = "on" Then   'VBAの判断
    If strWHERE = "" Then
      strWHERE = " Where F_KUBUN='VBA' "
    Else
      strWHERE = strWHERE & " Or F_KUBUN='VBA'"
    End If
  End If

  If Request.Form("ASP") = "on" Then  'ASPの判断
    If strWHERE = "" Then
      strWHERE = " Where F_KUBUN='ASP' "
    Else
      strWHERE = strWHERE & " Or F_KUBUN='ASP'"
    End If
  End If

  If Request.Form("24H") = "on" Then  '24Hの判断
    If strWHERE = "" Then
      strWHERE = " Where F_KUBUN='24H' "
    Else
      strWHERE = strWHERE & " Or F_KUBUN='24H'"
    End If
  End If

  If Request.Form("GUCHI") = "on" Then  'GUCHIの判断
    If strWHERE = "" Then
      strWHERE = " Where F_KUBUN='GUCHI' "
    Else
      strWHERE = strWHERE & " Or F_KUBUN='GUCHI'"
    End If
  End If

  'SQL文を作成する (作成したWHERE句を組み合わせる)
  strSQL = "Select * From KANSOU "  '感想(KANSOU)テーブルから全項目(*)
  strSQL = strSQL & strWHERE
  strSQL = strSQL & " ORDER BY WriteTime DESC" '並べ替えは時間の降順

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

  'お約束のレコードセットの作成 SQL文の発行
  Set rs = db.Execute(strSQL)

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

  '見出しをバカっぽく、そのまま書き込む
  Response.Write "<TR>"
  Response.Write "<TD>日付</TD>"
  Response.Write "<TD>区分</TD>"
  Response.Write "<TD>メモ</TD>"
  Response.Write "</TR>"

  'お約束のEOFまでループは(データが無くなるまでループ)、
  Do While rs.EOF = False   'レコードセットの.EOFがFalseの間
    Response.Write "<TR>"   '内容を表示する、行開始のタグ<TR>
    'データの中身を表示
    Response.Write "<TD>" & rs.Fields.Item("WriteTime") & "</TD>"
    Response.Write "<TD>" & rs.Fields.Item("F_KUBUN") & "</TD>"
    Response.Write "<TD>" & rs.Fields.Item("F_MEMO") & "</TD>"
    Response.Write "</TR>"
    '次のレコードにポインタを移動する
    rs.MoveNext    'これを忘れると悲惨なことに、、、
  Loop

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

  rs.Close         '開いていたレコードセットを閉じる
  db.Close         'データベースも閉じようよ
  Set db = Nothing 'お行儀よくオブジェクトも開放しましょう

%>

<HR>
終了です。<br>
If文の連続で何も考えないで作成してみました(オイオイ・・・)<br>
<A href="test029-1.asp">データの登録(テストデータを増やす)</a><br>
</body>
</html>

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



ArrayとUboundで項目名を管理してWhere句を作成 ソースコード

<%@LANGUAGE=VBScript%>
<html>
<head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=x-sjis">
<title>FORM CHECKBOX NAME=を個別に作成(ArrayとUboundで項目名を管理してWhere句を作成)</title>
</head>
<body>
<h1>FORM CHECKBOX NAME=を個別に作成(ArrayとUboundで項目名を管理してWhere句を作成)</h1>
<FORM ACTION="test093-2.asp" METHOD="POST">
<font color="blue">CHECKBOX NAME=を個別に作成 Where句を作成するTEST</font><br>
表示したい・区分をチェックしてから検索ボタンを押してください<br>
<INPUT TYPE="CHECKBOX" NAME="ASP">ASP<br>
<INPUT TYPE="CHECKBOX" NAME="VBA">VBA<br>
<INPUT TYPE="CHECKBOX" NAME="24H">コンビニ系<br>
<INPUT TYPE="CHECKBOX" NAME="GUCHI">愚痴系<br>
<INPUT TYPE="submit" VALUE="検索する">
</FORM>

<%
  '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("db029.mdb")

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

  'WHERE句を作成する
  strKUBUN = Array("VBA", "ASP", "24H", "GUCHI")  '区分を配列にする
  strWHERE = ""   '条件を初期化する
  '区分の数だけループさせる
  For n = 0 To Ubound(strKUBUN)
    If Request.Form(strKUBUN(n)) = "on" Then  '区分n番目の項目がonか?
      If strWHERE = "" Then  '初めの項目か?チェックする
        strWHERE = " Where F_KUBUN='" & strKUBUN(n) & "' "
      Else  '2番目以降はorでつなぐ
        strWHERE = strWHERE & " Or F_KUBUN='" & strKUBUN(n) & "' "
      End If
    End If
  Next 

  'SQL文を作成する (作成したWHERE句を組み合わせる)
  strSQL = "Select * From KANSOU "  '感想(KANSOU)テーブルから全項目(*)
  strSQL = strSQL & strWHERE
  strSQL = strSQL & " ORDER BY WriteTime DESC" '並べ替えは時間の降順

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

  'お約束のレコードセットの作成 SQL文の発行
  Set rs = db.Execute(strSQL)

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

  '見出しをバカっぽく、そのまま書き込む
  Response.Write "<TR>"
  Response.Write "<TD>日付</TD>"
  Response.Write "<TD>区分</TD>"
  Response.Write "<TD>メモ</TD>"
  Response.Write "</TR>"

  'お約束のEOFまでループは(データが無くなるまでループ)、
  Do While rs.EOF = False   'レコードセットの.EOFがFalseの間
    Response.Write "<TR>"   '内容を表示する、行開始のタグ<TR>
    'データの中身を表示
    Response.Write "<TD>" & rs.Fields.Item("WriteTime") & "</TD>"
    Response.Write "<TD>" & rs.Fields.Item("F_KUBUN") & "</TD>"
    Response.Write "<TD>" & rs.Fields.Item("F_MEMO") & "</TD>"
    Response.Write "</TR>"
    '次のレコードにポインタを移動する
    rs.MoveNext    'これを忘れると悲惨なことに、、、
  Loop

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

  rs.Close         '開いていたレコードセットを閉じる
  db.Close         'データベースも閉じようよ
  Set db = Nothing 'お行儀よくオブジェクトも開放しましょう

%>

<HR>
終了です。<br>
チェックボックスの項目名をArrayで文字列配列を作成して、<br>
ループで回し、WHERE句を作成してみました(少しは進化した?)<br>
<A href="test029-1.asp">データの登録(テストデータを増やす)</a><br>
</body>
</html>

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



Replaceで途中の,を置換 WHERE IN句を使用する ソースコード

<%@LANGUAGE=VBScript%>
<html>
<head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=x-sjis">
<title>FORM CHECKBOX VALUE=を個別に作成(Replaceで途中の,を置換 WHERE IN句を使用する)</title>
</head>
<body>
<h1>FORM CHECKBOX VALUE=を個別に作成(Replaceで途中の,を置換 WHERE IN句を使用する)</h1>
<FORM ACTION="test093-3.asp" METHOD="POST">
<font color="blue">FORM CHECKBOX VALUE=を個別に作成 Where句を作成するTEST</font><br>
表示したい・区分をチェックしてから検索ボタンを押してください<br>
<INPUT TYPE="CHECKBOX" NAME="KUBUN" VALUE="ASP">ASP<br>
<INPUT TYPE="CHECKBOX" NAME="KUBUN" VALUE="VBA">VBA<br>
<INPUT TYPE="CHECKBOX" NAME="KUBUN" VALUE="24H">コンビニ系<br>
<INPUT TYPE="CHECKBOX" NAME="KUBUN" VALUE="GUCHI">愚痴系<br>
<INPUT TYPE="submit" VALUE="検索する">
</FORM>

<%
  '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("db029.mdb")

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

  'WHERE句を作成する
  strKUBUN = Request.Form("KUBUN") 'フォームから区分を受け取る
  If strKUBUN = "" Then '区分が選択されていなかったら
    strWHERE = ""   'データ無しの時は条件をカラにする
  Else  ',を変換してWHERE句を作成する
    ' ASP, 24Hの文字を", "(カンマとスペース1つ)を','に変換する
    strWORK = Replace(strKUBUN, ", ", "','")  '置き換える
    strWHERE = " Where F_KUBUN IN ('" & strWORK & "') "
  End If

  'SQL文を作成する (作成したWHERE句を組み合わせる)
  strSQL = "Select * From KANSOU "  '感想(KANSOU)テーブルから全項目(*)
  strSQL = strSQL & strWHERE
  strSQL = strSQL & " ORDER BY WriteTime DESC" '並べ替えは時間の降順

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

  'お約束のレコードセットの作成 SQL文の発行
  Set rs = db.Execute(strSQL)

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

  '見出しをバカっぽく、そのまま書き込む
  Response.Write "<TR>"
  Response.Write "<TD>日付</TD>"
  Response.Write "<TD>区分</TD>"
  Response.Write "<TD>メモ</TD>"
  Response.Write "</TR>"

  'お約束のEOFまでループは(データが無くなるまでループ)、
  Do While rs.EOF = False   'レコードセットの.EOFがFalseの間
    Response.Write "<TR>"   '内容を表示する、行開始のタグ<TR>
    'データの中身を表示
    Response.Write "<TD>" & rs.Fields.Item("WriteTime") & "</TD>"
    Response.Write "<TD>" & rs.Fields.Item("F_KUBUN") & "</TD>"
    Response.Write "<TD>" & rs.Fields.Item("F_MEMO") & "</TD>"
    Response.Write "</TR>"
    '次のレコードにポインタを移動する
    rs.MoveNext    'これを忘れると悲惨なことに、、、
  Loop

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

  rs.Close         '開いていたレコードセットを閉じる
  db.Close         'データベースも閉じようよ
  Set db = Nothing 'お行儀よくオブジェクトも開放しましょう

%>

<HR>
終了です。<br>
チェックボックスの項目名をArrayで文字列配列を作成して、<br>
ループで回し、WHERE句を作成してみました(少しは進化した?)<br>
<A href="test029-1.asp">データの登録(テストデータを増やす)</a><br>
</body>
</html>

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



Request.Form(xxx).Countで複数チェック ソースコード

<%@LANGUAGE=VBScript%>
<html>
<head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=x-sjis">
<title>FORM CHECKBOX VALUE=を個別に作成(Request.Form(xxx).Countで複数チェック)</title>
</head>
<body>
<h1>FORM CHECKBOX VALUE=を個別に作成(Request.Form(xxx).Countで複数チェック)</h1>
<FORM ACTION="test093-4.asp" METHOD="POST">
<font color="blue">FORM CHECKBOX VALUE=を個別に作成 Where句を作成するTEST</font><br>
表示したい・区分をチェックしてから検索ボタンを押してください<br>
<INPUT TYPE="CHECKBOX" NAME="KUBUN" VALUE="ASP">ASP<br>
<INPUT TYPE="CHECKBOX" NAME="KUBUN" VALUE="VBA">VBA<br>
<INPUT TYPE="CHECKBOX" NAME="KUBUN" VALUE="24H">コンビニ系<br>
<INPUT TYPE="CHECKBOX" NAME="KUBUN" VALUE="GUCHI">愚痴系<br>
<INPUT TYPE="submit" VALUE="検索する">
</FORM>

<%
  '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("db029.mdb")

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

  'WHERE句を作成する
  If Request.Form("KUBUN").Count > 0 Then '項目数をチェック
    '複数の時、1番目(最初の条件をまず代入)
    strWHERE = " Where F_KUBUN = '" & Request.Form("KUBUN")(1) & "' "
    '次の条件((2)から)をループで追加する
    For n = 2 To Request.Form("KUBUN").Count
      'Orで条件をつなげる
      strWHERE = strWHERE & " Or F_KUBUN = '" & Request.Form("KUBUN")(n) & "' "
    Next
  Else
    strWHERE = ""   'データ無しの時は条件をカラにする
  End If

  'SQL文を作成する (作成したWHERE句を組み合わせる)
  strSQL = "Select * From KANSOU "  '感想(KANSOU)テーブルから全項目(*)
  strSQL = strSQL & strWHERE
  strSQL = strSQL & " ORDER BY WriteTime DESC" '並べ替えは時間の降順

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

  'お約束のレコードセットの作成 SQL文の発行
  Set rs = db.Execute(strSQL)

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

  '見出しをバカっぽく、そのまま書き込む
  Response.Write "<TR>"
  Response.Write "<TD>日付</TD>"
  Response.Write "<TD>区分</TD>"
  Response.Write "<TD>メモ</TD>"
  Response.Write "</TR>"

  'お約束のEOFまでループは(データが無くなるまでループ)、
  Do While rs.EOF = False   'レコードセットの.EOFがFalseの間
    Response.Write "<TR>"   '内容を表示する、行開始のタグ<TR>
    'データの中身を表示
    Response.Write "<TD>" & rs.Fields.Item("WriteTime") & "</TD>"
    Response.Write "<TD>" & rs.Fields.Item("F_KUBUN") & "</TD>"
    Response.Write "<TD>" & rs.Fields.Item("F_MEMO") & "</TD>"
    Response.Write "</TR>"
    '次のレコードにポインタを移動する
    rs.MoveNext    'これを忘れると悲惨なことに、、、
  Loop

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

  rs.Close         '開いていたレコードセットを閉じる
  db.Close         'データベースも閉じようよ
  Set db = Nothing 'お行儀よくオブジェクトも開放しましょう

%>

<HR>
終了です。<br>
チェックボックスの項目名をArrayで文字列配列を作成して、<br>
ループで回し、WHERE句を作成してみました(少しは進化した?)<br>
<A href="test029-1.asp">データの登録(テストデータを増やす)</a><br>
</body>
</html>

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

↑コードの三流解説は、
三流君ASP:FORM CHECKBOXから受け取った値を使用してWHERE句の作成
を見て、笑ってやってください。



ASPの解説 トップページは
三流君ASPで遊ぶ、失敗する
です。こちらもよろしく・・・

挨拶・自己紹介:
失敗続きのAB型の変わり者 :三流プログラマー Ken3です
フリーのエンジニア・個人事業主です・・と書くと聞こえはイイが(それとなくカッコよく聞こえるが)、 現在は小さな案件の受注請負 と 短期派遣 で 日々つつましく?ほそぼそと暮らしてます。
(※詳細は[三流君 三流プログラマーとは?]を見てください)



Ken3 ホームページ 目次

分類:HPを大きく分けると4つの柱(分類)です。
・[Excel/Access VBA]の解説
・[ASP(Active Server Pages)]の解説。
・[元コンビニ店長時代の話]が弟に巻き込まれ、失敗した脱サラ、畑違い?の仕事で失敗。
・[プログラマーの愚痴]では、あまり見せたくない三流プログラマーの内面かな。
三流君を踏み台にする
主に上記4つの分類でHP作成やメルマガの発行を行ってます。
※更新頻度が落ちていて情報の鮮度が悪いです。

三流解説動画の再生リスト
https://www.youtube.com/user/ken3video/playlists

本当に三流なんです(笑):たまにスゴイですねなんて言われることもありますが、
真実は→ [三流君の真実は...] ←を初めに見てくださるとわかると思います。
(からくりは、成功例↑しか載せてなくて ヒドイ失敗例はお蔵入り迷宮入りが多かったりします)