|  | โปรแกรมรายงานผลการเรียน เบื้องต้น |  | 
| บทเรียนทั้งหมดนี้ ได้ทำเป็น กรณีศึกษาไว้ที่ http://www.thaiall.com/asp/sgrade.htm เพื่อให้เรียกใช้ได้ง่าย ส่วนนี้ผมทำเป็น ทั้งบทเรียน ให้ท่านนำไปเขียนใช้เอง และส่วนที่ ให้บริการครู อาจารย์ ประกาศผลการเรียน ในวิชาของตน หรือจะเรียกบริการประกาศผลการเรียน ด้วยบริการ redirection ที่ http://go.to/grade ก็จะจำได้ง่ายกว่า 
 | 
| ข้อควรทราบ | 
| 
 | 
| อ่านข้อมูลมาแสดงอย่างง่าย | 
| Source code ของ sgrdlstt.asp http://thaiall.thailandhosting.net/asp/sgrdlstt.asp | 
| <html><title>Testing of grade listing</title>
<body><font face="microsoft sans serif">
Testing of grade listing<hr>
<table width=100% bgcolor=#ffffdd>
<%
Set objConn = CreateObject("ADODB.Connection")
objConn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("grade.mdb"))
Set rsUser = objConn.Execute("SELECT tid,sid,sname,grade FROM grade")
do while not rsUser.eof
%>
<tr>
<td><%=rsUser("tid")%></td>
<td><%=rsUser("sid")%></td>
<td><%=rsUser("sname")%></td>
<td><%=rsUser("grade")%></td>
</tr>
<%
rsUser.movenext
loop
rsUser.close
set rsUser=nothing
%>
</table>
</body></html>
Click To View Source Code | 
| แสดงผลจากรหัสการสอน ซึ่งรับค่าได้ทั้งผ่าน form และ url | 
| ฟอร์มส่งค่า | Source code เขียน ฟอร์มส่งค่า | 
| <form action=http://thaiall.thailandhosting.net/asp/sgrdlsts.asp method=post> <b>รหัสการสอน</b> : <input type="text" name=tid size=5 value=1><br> <input type=submit value="Show grade report"><input type=reset value=Reset> </form> | 
| Source code ของ sgrdlsts.asp | 
| <html><title>บริการประกาศผลการเรียน ทาง Internet</title>
<body bgcolor=#ffffdd><font face="microsoft sans serif">
<font size=4><center>บริการประกาศผลการเรียนทาง Internet</center></font>
<hr>
<%
xtid = request.form("tid") + request.querystring("tid")
response.write("รหัสการสอน  : <b><font color=#ff0000 size="2">"& xtid & "</font></b>")
Set objConn = CreateObject("ADODB.Connection")
objConn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("grade.mdb"))
Set rsUser = objConn.Execute("SELECT tid,school,subj,tyear,tsem,tname,typeshow FROM teacher where teacher.tid=" & xtid)
response.write("( " & rsUser("tyear") &" / ")
response.write(rsUser("tsem") &" )<br>")
response.write("<center><font color=#0000ff><b>" & rsUser("school")&"</b></font><br>")
response.write("<b><font color=#008000 size="2">" & rsUser("subj") &"</font></b></center>")
tshow = rsUser("typeshow")
tname = rsUser("tname")
rsUser.close
set rsUser = objConn.execute("select tid,sid,sname,scorekeep,scoremid,scoreproject,scorefinal,grade from grade where grade.tid=" & xtid)
response.write("<table width=100% >")
response.write("<tr bgcolor=#00dddd><td>ลำดับ</td><td>รหัส</td><td>ชื่อ - สกุล</td>")
if tshow= "l" then
   response.write("<td>คะแนนเก็บ</td>")
   response.write("<td>คะแนนสอบกลางภาค</td>")
   response.write("<td>คะแนนรายงาน</td>")
   response.write("<td>คะแนนสอบปลายภาค</td>")
   response.write("<td>คะแนนรวม</td>")
end if
response.write("<td>เกรด</td></tr>")
i = 0
do while not rsUser.eof
   i = i + 1
   if (i mod 2) = 0 then  
      response.write("<tr bgcolor=#cccccc>") 
   else 
      response.write("<tr bgcolor=#fffffd>") 
   end if
   response.write("<td>" & i &"</td>")   
   response.write("<td>" & rsUser("sid")&"</td>")   
   response.write("<td>" & rsUser("sname")&"</td>")
   if tshow= "l" then
      response.write("<td>" & rsUser("scorekeep")&"</td>")
      response.write("<td>" & rsUser("scoremid")&"</td>")
      response.write("<td>" & rsUser("scoreproject")&"</td>")
      response.write("<td>" & rsUser("scorefinal")&"</td>")
      ss = rsUser("scorekeep")+rsUser("scoremid")+rsUser("scoreproject")+rsUser("scorefinal")
      response.write("<td><b>" & ss &"</b></td>")
   end if
   response.write("<td>" & rsUser("grade")&"</td></tr>")
   rsUser.movenext
loop
response.write("</table>")
response.write("ชื่อผู้สอน : <b>" & tname &"</b> [ ")
if tshow = "s" then response.write("s : รายงานแบบสั้น]<hr>")
if tshow = "l" then response.write("l : รายงานแบบสั้น พร้อมคะแนนสอน]<hr>")
rsUser.close
set rsUser=nothing
%>
</body>
</html>
Click To View Source Code | 
| เพิ่มวิชา คะแนน และเกรด (ส่วนนี้ใช้การส่งค่า 2 ช่วงคือ sgrdadd.asp และ sgrdaddx.asp) | 
| ฟอร์มส่งค่า | Source code เขียน ฟอร์มส่งค่า | 
| <form action=http://thaiall.thailandhosting.net/asp/sgrdadd.asp method=post> ชื่อสถาบัน : <input type="text" name=school size=40 value="โรงเรียนบุญวาทย์วิทยาลัย"><br> ปีการศึกษา : <input type="text" name=tyear size=6 value="2543"> ภาคการศึกษา : <input type="text" name=tsem size="2" value="1"><br> รหัสวิชา หรือชื่อวิชา : <input type="text" name=subj size=30 value="คอมพิวเตอร์เบื้องต้น"><br> ชื่อผู้สอน : <input type="text" name=tname size=40 value="อาจารย์เกิน กำดี"><br> รหัสผ่าน : <input type=password name=passwd size=8> รหัสผ่านอีกครั้ง : <input type=password name=passwdc size=8><br> จำนวนนักเรียน : <input type="text" name=amount size=3 value=3> เลขระบุช่องว่าง สำหรับข้อมูล<br> <b>โปรดเลือกแบบ</b> : ของการจัดเก็บข้อมูล และการแสดงผลเกรด<br> <input type=radio name=typeshow value="s" checked>เก็บ เกรดที่ต้องการแสดง<br> <input type=radio name=typeshow value="l">เก็บ คะแนน และเกรดอะไร<br> <input type=submit value="Add new subject"><input type=reset value=Reset><br> </form> | 
| โปรแกรมสำหรับเพิ่มระเบียนในตาราง teacher Source code ของ sgrdadd.asp | 
| <body><font face="microsoft sans serif">
<%
if  len(request.form("passwd")) > 0 and (request.form("passwd") = request.form("passwdc")) then
   Set objConn = CreateObject("ADODB.Connection")
   objConn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("grade.mdb"))
   sql = "INSERT into teacher (school,tyear,tsem,subj,tname,typeshow,passwd) SELECT "
   sql = sql & " '" & request.form("school") & "' as school, "
   sql = sql & " " & request.form("tyear") & " as tyear, "
   sql = sql & " " & request.form("tsem") & " as tsem, "
   sql = sql & " '" & request.form("subj") & "' as subj, "
   sql = sql & " '" & request.form("tname") & "' as tname, "
   sql = sql & " '" & request.form("typeshow") & "' as typeshow, "
   sql = sql & " '" & request.form("passwd") & "' as passwd; "
   Set rsUser = objConn.Execute(sql)
   Set rsUser = objConn.Execute("SELECT tid from teacher order by tid desc;")
   response.write("รหัสการสอน ของท่านคือ <b>" & rsUser("tid") & "</b><hr>")
   response.write("<br>Step 1 of  2  : Put your information to TEACHER is OK <hr>")
   response.write("This is step 2 of 2 :")
   lasttid = rsUser("tid")
   rsUser.close
   Set rsUser = nothing
   response.write("<form action=http://thaiall.thailandhosting.net/asp/sgrdaddx.asp method=post>")
   response.write("<input type=hidden name=tid value=" & lasttid & ">")  
   response.write("<input type=hidden name=amount value=" & request.form("amount") & ">")  
   response.write("<input type=hidden name=typeshow value=" & request.form("typeshow") & ">")  
   for i = 1 to cint(request.form("amount"))
      response.write("รหัสนักเรียน<input type="text" size=10 name=sid" & i &" > ")      
      response.write("ชื่อ<input type="text" size="2"0 name=sname" & i &" > ")    
      if request.form("typeshow") = "s" then
        response.write("เกรด<input type="text" size=3 name=grade" & i &" ><br>")  
      end if
      if request.form("typeshow") = "l" then
         response.write("เก็บ <input type="text" size=3 name=scorekeep" & i &" >")  
         response.write("กลาง<input type="text" size=3 name=scoremid" & i &" >")  
         response.write("รายงาน <input type="text" size=3 name=scoreproject" & i &" >")  
         response.write("ปลาย<input type="text" size=3 name=scorefinal" & i &" > ")  
         response.write("เกรด<input type="text" size=3 name=grade" & i &" ><br>")  
      end if
      response.write("<br>")
   next
   response.write("<input type=submit value='Save all grade in file'>")
   response.write("<input type=reset value=Reset>")
   response.write("</form>")
else
   response.write("ข้อมูลมีปัญหา โปรแกรมกลับไปตรวจสอบให้เรียบร้อย<br>หรือ ท่านอาจไม่ได้ระบุรหัสผ่าน")
   response.write("<br>Your data have problem. Please back for checking.")
end if
%>
<hr>
</body>
 | 
| โปรแกรมสำหรับเพิ่มระเบียนในตาราง grade Source code ของ sgrdaddx.asp | 
| <body><font face="microsoft sans serif">
<%
   Set objConn = CreateObject("ADODB.Connection")
   objConn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("grade.mdb"))
   for i = 1 to cint(request.form("amount"))
     ' type s
      if request.form("typeshow") = "s" then
         if len(request.form("tid")) > 0 and len(request.form("sid"&i)) > 0 and len(request.form("sname"&i)) > 0 then
         sql = "INSERT into grade (tid,sid,sname,grade) SELECT "
         sql = sql & " " & request.form("tid") & " as tid, "
         sql = sql & " " & request.form("sid"&i) & " as sid, "
         sql = sql & " '" & request.form("sname"&i) & "' as sname, "
         sql = sql & " '" & request.form("grade"&i) & "' as grade; "
         Set rsUser = objConn.Execute(sql)
         end if
      end if
     ' type l
      if request.form("typeshow") = "l" then
         if len(request.form("tid")) > 0 and len(request.form("sid"&i)) > 0 and len(request.form("sname"&i)) > 0 then
         sql = "INSERT into grade (tid,sid,sname,scorekeep,scoremid,scoreproject,scorefinal,grade) SELECT "
         sql = sql & " " & request.form("tid") & " as tid, "
         sql = sql & " " & request.form("sid"&i) & " as sid, "
         sql = sql & " '" & request.form("sname"&i) & "' as sname, "
         sql = sql & " " & request.form("scorekeep"&i) & " as scorekeep, "
         sql = sql & " " & request.form("scoremid"&i) & " as scoremid, "
         sql = sql & " " & request.form("scoreproject"&i) & " as scoreproject, "
         sql = sql & " " & request.form("scorefinal"&i) & " as scorefinal, "
         sql = sql & " '" & request.form("grade"&i) & "' as grade; "
         Set rsUser = objConn.Execute(sql)
         end if
      end if
   next
   Set rsUser = nothing
%>
Step 2 of 2 : Your student score is OK
<hr>
</body>
Click To View Source Code ของ sgrdadd.asp Click To View Source Code ของ sgrdaddx.asp | 
| แสดงผลสรุปว่ามี รหัสการสอนอะไรบ้าง และจำนวน ซึ่งใช้วิธีการอ่านแฟ้ม query จาก group by ตาราง 2 ตาราง | 
| Source code ของ sgrdlsta.asp http://thaiall.thailandhosting.net/asp/sgrdlsta.asp | 
| <html><title>สรุป จำนวนนักเรียน เรียงตามรหัสการสอน</title>
<body bgcolor=#000000><font face="microsoft sans serif">
<font size=4 color=#ff0000><center>สรุป จำนวนนักเรียน เรียงตามรหัสการสอน</center></font>
<hr>
<table width=100% bgcolor=#ffffdd>
<tr><td>ลำดับ</td><td>รหัสการสอน</td><td>ชื่อสถาบัน</td><td>ชื่อผู้สอน</td><td>ชื่อวิชา</td><td>จำนวน</td><td>แสดงผล</td>
<%
Set objConn = CreateObject("ADODB.Connection")
objConn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("grade.mdb"))
Set rsUser = objConn.Execute("SELECT tid,school,tname,subj,cnts FROM cntstd order by tid desc;" )
i = 0
do while not rsUser.eof
   i = i + 1
   if (i mod 2) = 0 then  
      response.write("<tr bgcolor=#cccccc>") 
   else 
      response.write("<tr bgcolor=#fffffd>") 
   end if
%>
<td><%=i%></td>
<td><%=rsUser("tid")%></td>
<td><%=rsUser("school")%></td>
<td><%=rsUser("tname")%></td>
<td><%=rsUser("subj")%></td>
<td><%=rsUser("cnts")%></td>
<td><a href=sgrdlsts.asp?tid=<%=rsUser("tid")%>>Click here</a></td>
</tr>
<%
   rsUser.movenext
loop
rsUser.close
set rsUser=nothing
%>
</table>
<font color=#ffffdd>
<b>หมายเหตุ</b> :<br> 
ถ้าวิชาใด มีนักเรียน ไม่เกิน 3 คน หรือกรอกข้อมูลไม่สมบูรณ์ <b>ทีมงานขอใช้สิทธิ์ลบข้อมูล</b> ซึ่งไม่ก่อประโยชน์นั้นทั้งชุด
</body>
</html>
Click To View Source Code | 
| ลบข้อมูลโดยใช้รหัสการสอน และรหัสผ่าน โดยลบจากตาราง teacher และ grade ด้วย click เดียว | 
| ฟอร์มส่งค่า | Source code เขียน ฟอร์มส่งค่า | 
| <form action=http://thaiall.thailandhosting.net/asp/sgrddel.asp method=post> รหัสการสอน : <input type="text" name=tid size=5 value=1><br> รหัสผ่าน : <input type=password name=passwd size=10><br> <input type=submit value="Delete all of your records"><input type=reset value=Reset> </form> | 
| Source code ของ sgrddel.asp | 
| <body>
<%
Set objConn = CreateObject("ADODB.Connection")
objConn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("grade.mdb"))
Set rsUser = objConn.Execute("SELECT tid,passwd FROM teacher where teacher.tid=" & request.form("tid"))
if not rsUser.eof then
   if request.form("passwd") = rsUser("passwd") then
      response.write("Delete ID :" & request.form("tid"))
      Set rsUser = objConn.Execute("DELETE tid,school FROM teacher WHERE teacher.tid= " & request.form("tid"))
      Set rsUser = objConn.Execute("DELETE tid FROM grade WHERE grade.tid= " & request.form("tid"))   
   else
      response.write("Your password is not correct.")
   end if
else
      response.write("Your tid is not found")
end if
Set rsUser = nothing
%>
<hr>
</body>
Click To View Source Code | 
| แบบฝึกหัด | 
| 
 |