Where を 使った ソースコードを紹介する表示色の説明:ASP VBScriptは <% 〜 %> キーワードはWhere です。
<%@LANGUAGE=VBScript%>
<html>
<head>
<title>SQL SELECT文で WHERE句 条件をOrでつなげ複数にしてみた</title>
</head>
<body>
<h1>SQL SELECT文で WHERE句 条件をOrでつなげ複数にしてみた</h1>
test046-1.asp<br>
<hr>
<FORM ACTION="test046-1.asp" METHOD="GET">
<font color="blue">表示させたい区分をチェック(選択)して下さい</font><br>
<INPUT TYPE="CHECKBOX" NAME="ASP">ASP系へのご意見を表示<BR>
<INPUT TYPE="CHECKBOX" NAME="VBA">VBA系へのご意見を表示<BR>
<INPUT TYPE="CHECKBOX" NAME="GUCHI">愚痴系へのご意見を表示<BR>
<INPUT TYPE="CHECKBOX" NAME="24H">コンビニ系へのご意見を表示<BR>
<INPUT TYPE="submit" VALUE="送信">←チェック後送信ボタンを押してください
</FORM>
<hr>
<% '頭で、入力パラメーターの文字数をチェックする
strWHERE = "Where "
If Request.QueryString("ASP") = "on" Then
strWHERE = strWHERE & "F_KUBUN = 'ASP' "
End If
If Request.QueryString("VBA") = "on" Then
If strWHERE <> "Where " Then strWHERE = strWHERE & " OR " '2個目〜
strWHERE = strWHERE & "F_KUBUN = 'VBA' "
End If
If Request.QueryString("GUCHI") = "on" Then
If strWHERE <> "Where " Then strWHERE = strWHERE & " OR " '2個目〜
strWHERE = strWHERE & "F_KUBUN = 'GUCHI' "
End If
If Request.QueryString("24H") = "on" Then
If strWHERE <> "Where " Then strWHERE = strWHERE & " OR " '2個目〜
strWHERE = strWHERE & "F_KUBUN = '24H' "
End If
'Where文が生成されたかチェックする
If strWHERE = "Where " Then 'そのままだったら条件文を消す
Response.Write "<b>条件がありませんでした</b><hr>"
strWHERE = "" '条件無しに強引にする
Else
Response.Write "作成した条件[<b>" & strWHERE & "</b>]<hr>"
End If
'表示の関数を呼ぶ(外側に出したかったので)
Call DATA_PRINT(strWHERE)
%>
<HR>
<FORM ACTION="test046-1.asp" METHOD="GET">
<font color="blue">表示させたい区分をチェック(選択)して下さい</font><br>
<INPUT TYPE="CHECKBOX" NAME="ASP">ASP系へのご意見を表示<BR>
<INPUT TYPE="CHECKBOX" NAME="VBA">VBA系へのご意見を表示<BR>
<INPUT TYPE="CHECKBOX" NAME="GUCHI">愚痴系へのご意見を表示<BR>
<INPUT TYPE="CHECKBOX" NAME="24H">コンビニ系へのご意見を表示<BR>
<INPUT TYPE="submit" VALUE="送信">←チェック後送信ボタンを押してください
</FORM>
<hr>
関連項目<br>
<A href="test029-1.asp">db029.mdbへデータ追加する</a><br>
</body>
</html>
<% 'パラメータを受け取り、SQLを発行
Sub DATA_PRINT(strWHERE)
'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("db029.mdb")
'やっとデータベースを開ける
db.open
'SQL文を作る
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>NO.</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>"
If rs.Fields.Item("F_NO") = 0 Then '0の全体かチェック
Response.Write "<TD>全体</TD>"
Else
Response.Write "<TD>" & rs.Fields.Item("F_NO") & "</TD>" 'NO表示
End If
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
End Sub
%>
| 最近発売の雑誌を紹介する
スポーツ系の雑誌です。プログラマーさん運動不足になってませんか?
- BOWLING magazine (ボウリング・マガジン) 2008年 06月号
- IRONMAN (アイアンマン) 2008年 06月号
- Urawa Reds Magazine (浦和レッズマガジン) 2008年 06月号
- CALCiO (カルチョ) 2002 2008年 07月号
- WORLD SOCCER GRAPHIC (ワールドサッカーグラフィック) 2008年 06月号
- 月刊 GRUN (グラン) 2008年 06月号
- Regina (レジーナ) 初夏号 2008年5/27号
- 陸上競技マガジン 2008年 06月号
- 月刊 秘伝 2008年 06月号
|