PC@LLの出席データ

attendance.aspを開いて検索して表示、ダウンロードはattend_down.aspって面倒くさい仕様でやってきたので魔改造することにした。

改造するファイルリスト

  • d:\attendance\room\db2table.asp
  • d:\attendance\room\download.asp
  • c:\inetpub\wwwroot\common\style.css

改造しないけど、参考

  • d:\attendance\room\attendance.asp
  • Microsoft SQL Server Manegement Studioで「ファイル>オブジェクト エクスプローラーを接続」、データベースエンジン、SQLEXPRESS、Windows認証、パスワードとかはdb2table
  • 接続したら「データベース>room>テーブル>dbo.ROLLCALL>列 右クリック「上位1000件の選択」で確認する
  • 保持しているデータは少ないdata,login,name,seat,room_nameぐらい

top.asp

「d:\attendance\room\attendance.asp」を参考にしてページ遷移することなく、1ページで完了させるために徹底的に魔改造を施す。jQueryも使っちゃう。
top.aspファイルをテキストエディターで作成する 

 
オリジナルよりかは綺麗になっているはず、、、

<%@Language="VBScript" %>

<html>
<head>
<meta http-equiv="Content-Language" content="ja">
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis">
<link rel="stylesheet" href="../common/style.css" type="text/css">

<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">google.load("jquery", "1.7.1");</script>
<script type="text/javascript">
$(function(){
	$("select#jigen").change(function(){
		switch($("#jigen").val()){
		case "0":
			$("#SHour").val("12");
			$("#SMinute").val("10");
			$("#FHour").val("12");
			$("#FMinute").val("59");
			break;
		case "1":
			$("#SHour").val("8");
			$("#SMinute").val("50");
			$("#FHour").val("10");
			$("#FMinute").val("30");
			break;
		case "2":
			$("#SHour").val("10");
			$("#SMinute").val("30");
			$("#FHour").val("12");
			$("#FMinute").val("10");
			break;
		case "3":
			$("#SHour").val("12");
			$("#SMinute").val("50");
			$("#FHour").val("14");
			$("#FMinute").val("30");
			break;
		case "4":
			$("#SHour").val("14");
			$("#SMinute").val("30");
			$("#FHour").val("16");
			$("#FMinute").val("10");
			break;
		case "5":
			$("#SHour").val("16");
			$("#SMinute").val("10");
			$("#FHour").val("17");
			$("#FMinute").val("50");
			break;
		case "6":
			$("#SHour").val("17");
			$("#SMinute").val("50");
			$("#FHour").val("19");
			$("#FMinute").val("30");
			break;
		case "7":
			$("#SHour").val("19");
			$("#SMinute").val("30");
			$("#FHour").val("21");
			$("#FMinute").val("30");
			break;
		case "9":
			$("#SHour").val("0");
			$("#SMinute").val("0");
			$("#FHour").val("23");
			$("#FMinute").val("59");
			break;			
		}
	})
})
</script>

<title>PC@LL 出席データ表示</title>
</head>

<body background="st2_1.gif">
<div id="header"><img src="pcll_attendance.gif" alt="PC@LL出席データ">
</div>

<div id="datetime">
<h1>教室</h1>
<FORM ACTION ="attendance.asp" METHOD="POST">
<!-- #INCLUDE File="db2table.asp" --> 
<div class="date">
<select name="Year" size="1">
<%
	For i = -1 to 0
		IF Request.Form ="" And i=0 then
			Response.Write("<option value='" & Year(Now) + i & "' selected='selected'> " & Year(Now) + i & "</option>")
		ElseIf Request.Form <>"" And CInt(Year(Now))+i = CInt(Request.Form("Year")) then
			Response.Write("<option value='" & Year(Now) + i & "' selected='selected'> " & Year(Now) + i & "</option>")
		Else
			Response.Write("<option value='" & Year(Now) + i & "'> " & Year(Now) + i & "</option>")
		End If
	Next
%>
</select>年
 
<select name="Month" size="1">  
<%  
	For i = 1 to 12  
		If Request.Form ="" And i = CInt(Month(Now)) then
			Response.Write("<option value='" & i & "' selected='selected'> " & i & "</option>")
		ElseIf Request.Form <>"" And i = CInt(Request.Form("Month")) then
			Response.Write("<option value='" & i & "' selected='selected'> " & i & "</option>")
		Else  
			Response.Write("<option value='" & i & "'> " & i & "</option>")  
		End If  
	Next
%>  
</select>月
			
<select name="Day" size="1">  
<%  
	For i = 1 to 31
		If Request.Form ="" And i = CInt(Day(Now)) then
			Response.Write("<option value='" & i & "' selected='selected'> " & i & "</option>")
		ElseIf Request.Form <>"" And i = CInt(Request.Form("Day")) then
			Response.Write("<option value='" & i & "' selected='selected'> " & i & "</option>")
		Else  
			Response.Write("<option value='" & i & "'> " & i & "</option>")  
		End If  
	Next
%>  
</select>日
</div>


<div class="time">
<select id="jigen" name="jigen">
	<option value="9">時限を選択してください</option>
	<option value="1">1限</option>
	<option value="2">2限</option>
	<option value="0">昼</option>
	<option value="3">3限</option>
	<option value="4">4限</option>
	<option value="5">5限</option>
	<option value="6">6限</option>
	<option value="7">7限</option>
</select>

<select id="SHour" name="SHour" size="1">  
<%  
	For i = 0 to 23  
		If Request.Form ="" And i = 0 then  
			Response.Write("<option value='" & i & "' selected='selected'> " & i & "</option>")
		ElseIf Request.Form <>"" And i = CInt(Request.Form("SHour")) then  
				Response.Write("<option value='" & i & "' selected='selected'> " & i & "</option>")
		Else  
			Response.Write("<option value='" & i & "'> " & i & "</option>")  
		End If
	Next
%>  
</select>時


<select id="SMinute" name="SMinute" size="1">  
<%  
	For i = 0 to 59  
		If Request.Form ="" And i = 0 then
			Response.Write("<option value='" & i & "' selected='selected'> " & i & "</option>")
		ElseIf Request.Form <>"" And i = CInt(Request.Form("SMinute")) then  
			Response.Write("<option value='" & i & "' selected='selected'> " & i & "</option>")
		Else  
			Response.Write("<option value='" & i & "'> " & i & "</option>")  
		End If 
	Next
%>  
</select>分 〜 

<select id="FHour" name="FHour" size="1">  
<%  
	For i = 0 to 23  
		If Request.Form ="" And i = 23 then
			Response.Write("<option value='" & i & "' selected='selected'> " & i & "</option>")
		ElseIf Request.Form <>"" And i = CInt(Request.Form("FHour")) then
				Response.Write("<option value='" & i & "' selected='selected'> " & i & "</option>")
		Else
			Response.Write("<option value='" & i & "'> " & i & "</option>")
		End If  
	Next
%>
</select>時

<select id="FMinute" name="FMinute" size="1">  
<%  
	For i = 0 to 59  
		If Request.Form ="" And i = 59 then
			Response.Write("<option value='" & i & "' selected='selected'> " & i & "</option>")
		ElseIf Request.Form <>"" And i = CInt(Request.Form("FMinute")) then
			Response.Write("<option value='" & i & "' selected='selected'> " & i & "</option>")
		Else
			Response.Write("<option value='" & i & "'> " & i & "</option>")
		End If  
	Next
%>  
</select>分
</div>

<div class="button">
<INPUT id="submit" TYPE ="submit" VALUE = "表示/更新">
</div>
</form>
</div>

<%  
IF Request.Form <>"" then
%> 

<!-- 日付指定後 --> 
<div id="result">
<h2>検索結果</h2>
<%
FFMinutei = Cint(Request.Form("FMinute")) + 1	'終了時間調整用

'繰り上げ処理
if FFMinutei>=60 then FFMinutei=59

FFMinute=CStr(FFMinutei)	'文字列化
		
'SQL文
mySQL = "SELECT DISTINCT date as 日付,login as ログイン名,name as 氏名,seat as 座席名 FROM ROLLCALL " & _
		"WHERE date BETWEEN " & _
		"CAST('" & Request.Form("Year") & "/" & Request.Form("Month") & "/" & Request.Form("Day") & " " & _
		Request.Form("SHour") & ":" & Request.Form("SMinute") & "' AS DATETIME) AND " & _
		"CAST('" & Request.Form("Year") & "/" & Request.Form("Month") & "/" & Request.Form("Day") & " " & _
		Request.Form("FHour") & ":" & Request.Form("FMinute") & "' AS DATETIME) ORDER BY date DESC;"

'データベースファイル
db2Table mySQL
%>

<!-- #INCLUDE File="download.asp" -->
<form method="POST" action="attend_down.asp">
<%
Response.Write("<input type='hidden' name='Year' value='" & Request.Form("Year") & "'>")
Response.Write("<input type='hidden' name='Month' value='" & Request.Form("Month") & "'>")
Response.Write("<input type='hidden' name='Day' value='" & Request.Form("Day") & "'>")
Response.Write("<input type='hidden' name='SHour' value='" & Request.Form("SHour") & "'>")
Response.Write("<input type='hidden' name='SMinute' value='" & Request.Form("SMinute") & "'>")
Response.Write("<input type='hidden' name='FHour' value='" & Request.Form("FHour") & "'>")
Response.Write("<input type='hidden' name='FMinute' value='" & Request.Form("FMinute") & "'>")

%>

<div class="button">
<input type="submit" value="エクセルCSVファイル保存" name="B1">
</div>

</form>
</div>

<% 
End If 
%>

</body>
</html>

 

db2table.asp

HTMLタグを修正

<%
Sub db2table(sql)

	' 接続先情報を指定します。
	Const strServer = "localhost\SQLEXPRESS"   	' サーバ名
	Const strDatabase = "room"    		' データベース名
	Const strUserID = "hoge"        		' ユーザID
	Const strPassword = "hoge_password"    ' パスワード

	Set cn = Server.CreateObject("ADODB.Connection")

	'cn.Open "Provider=SQLOLEDB;" & _
    '	    "Data Source=" & strServer & ";" & _
    '    	"Initial Catalog=" & strDatabase & "", strUserID, strPassword   	
        	
    cn.Open	"Provider=SQLOLEDB.1;Password=" & strPassword & ";Persist Security Info=True;User ID=" & strUserID & ";Initial Catalog=" & strDatabase & ";Data Source=" & strServer
	
	Set rs = cn.Execute(sql)

	'Set db=Server.CreateObject("ADODB.Connection")
	'db.Provider="Microsoft.Jet.OLEDB.4.0"
	'db.Mode=1
	'db.ConnectionString=Server.MapPath(dbName)
	'db.Open
	'Set rs=db.Execute(sql)
	
	Response.Write "<table><thead><tr>"
	For i=0 To rs.Fields.Count-1
		Response.Write "<th>" & rs.Fields.Item(i).Name & "</th>"
	Next
	Response.Write "</tr><thead><tbody>"
	Do Until rs.EOF
		Response.Write "<tr>"
		For i=0 To rs.Fields.Count-1
			Response.Write "<td>" & rs.Fields.Item(i).Value & "</td>"
		Next
		Response.Write "</tr>"
		rs.MoveNext
	Loop
	Response.Write "</tbody></table>"
	rs.Close
	'db.Close
	'Set db=Nothing
End Sub
%>

 

download.asp

csvを作るところで、特別な修正はなし。

style.css

色は勝手に考える

h1,h2{}
#datetime{border:1px solid gray;}
#datetime select{font-size: 18px;}
#datetime .date,#datetime .time,#datetime .button{padding:10px;}
#result{margin:30px auto 0px auto;paddig:10px;text-align:center;}
#result table{width: 90%;line-height: 1.2em;border-collapse: collapse;}
#result thead th{font-weigth: bold;}

20140710追記

アクセスは
http://pcall/attendanceRoom/top.asp

IISマネージャーで個別のRoomを確認する。

パーツの共通化とか色々やることありそう。