|  | 
	                
 
  
    |  |  
    | 
        
        ใช้ code asp แบ่งหน้าตามตัวอย่างในบทเรียนแล้วขึ้น time out ค่ะ     |  
    |  |  
 
              
  
    | 
 
        
          |  |  |  |  |  
          |  |  | 
            
              | วนลูปผิดหรือป่าวครับ ถึงขึ้น Error แบบนี้ 
 |  
              | 
                
                  |  |  |  |  
                  |  | 
                      
                        | Date :
                            13 มิ.ย. 2549  09:26:37 | By :
                            ... |  |  |  
                  |  |  |  |  |  |  |  
          |  |  |  |  |  
 
        
          |  |  |  |  |  
          |  |  | 
            
              | ช่วยดูโค้ดให้ด้วยนะค่ะ ขอบคุณค่ะ ไม่รู้ว่าผิดตรงไหน แต่ copy โค้ดมาจากบทเรียน asp เลยนะค่ะ
 
 <html>
 <body>
 <%
 keyword=Request.Form("keyword")
 if keyword="" then
 keyword=Request.QueryString("keyword")
 end if
 %>
 <form name="form1" method="post" action="Sample1.asp">
 ค้นหาจาก Description
 <input type="text" name="keyword" value="<%=keyword%>">
 <input type="submit" name="Submit" value="ค้นหา">
 </form>
 
 <%
 if keyword="" then
 Response.write("<br>กรุณากรอก Keyword เพื่อค้นหาจาก Field Description<hr>")
 else
 pageLen = 10 'กำหนดจำนวนแต่ละหน้าที่ต้องการแสดงกี่ Reccord
 pageNo = request.QueryString("pageNo")
 if pageNo="" then pageNo = 1
 Set Conn = Server.CreateObject("ADODB.Connection")
 Conn.Open "MTD" ,"mtdasp" , "1234"
 Sql="Select DepoID, Monthly, PartID, ForkNumber, Labour, Potent, Supply, Quantity, Introduc, Inoperative, Tran_in, Tran_out, Pay_in, Pay_out, Sale, Total, Spare, Oil From livestock where DepoID like '%"&Request.Form("keyword")&"%'"
 Set RS =Server.CreateObject("ADODB.Recordset")
 RS.open Sql,Conn,3,3
 Nrecord=RS.recordcount
 Rs.pageSize = pageLen
 totalPage = Rs.PageCount
 Rs.absolutePage = pageNo
 
 If Rs.EOF Then
 %>
 ไม่มีข้อมูลในตาราง !
 <%Else%>
 <table border="1">
 <tr bgcolor="Silver">
 <td>DepoID</td>
 <td>Monthly</td>
 <td>PartID</td>
 <td>Forknumber</td>
 <td>Labour</td>
 <td>Potent</td>
 <td>Supply</td>
 <td>Quantity</td>
 <td>Introduc</td>
 <td>Inoperative</td>
 <td>Tran_in</td>
 <td>Tran_out</td>
 <td>Pay_in</td>
 <td>Pay_out</td>
 <td>Sale</td>
 <td>total</td>
 <td>spare</td>
 <td>oil</td>
 </tr>
 <%
 recNo=1
 Do While Not RS.EOF and recNo <= pageLen
 %>
 <tr>
 <td><%= Rs("DepoID")%></td>
 <td><%= Rs("Monthly")%></td>
 <td><%= Rs("PartID")%></td>
 <td><%= Rs("Forknumber")%></td>
 <td><%= Rs("Labour")%></td>
 <td><%= Rs("Potent")%></td>
 <td><%= Rs("Supply")%></td>
 <td><%= Rs("Quantity")%></td>
 <td><%= Rs("Introduc")%></td>
 <td><%= Rs("Inoperative")%></td>
 <td><%= Rs("Tran_in")%></td>
 <td><%= Rs("Tran_out")%></td>
 <td><%= Rs("Pay_in")%></td>
 <td><%= Rs("Pay_out")%></td>
 <td><%= Rs("Sale")%></td>
 <td><%= Rs("Total")%></td>
 <td><%= Rs("Spare")%></td>
 <td><%= Rs("Oil")%></td>
 </tr>
 <%
 recNo=recNo+1
 RS.MoveNext
 Loop
 rs.close
 conn.close
 %>
 </table>
 <%
 end if
 %>
 <br>
 <br>
 จำนวน: <%=Nrecord%> รายการ<br>
 ขณะนี้อยู่หน้า <%=pageNo%> ในทั้งหมด <%=totalPage%> หน้า
 <%
 if cint(pageno) > 1 then %>
 <br>
 <a href="Sample1.asp?pageNo=1&keyword=<%=keyword%>">หน้าแรก</a>   <a href="Sample1.asp?pageNo=<%=pageNo-1%>&keyword=<%=keyword%>">ย้อนกลับ</a>
  
 <% end if
 if cint(pageno) < totalPage then %>
 <a href="Sample1.asp?pageNo=<%=pageNo+1%>&keyword=<%=keyword%>">หน้าต่อไป</a>  <a href="Sample1.asp?pageNo=<%=totalPage%>&keyword=<%=keyword%>">หน้าสุดท้าย</a>
 
 <% end if
 
 
 %>
 <br>
 กระโดดไปหน้า
 <%for idx = 1 to totalPage
 %>
 <a href="Sample1.asp?pageNo=<%=idx%>&keyword=<%=keyword%>">
 <% if idx=cint(pageno) then%>
 <b><%=idx%></b>
 <%else %>
 <%=idx%>
 <%end if%>
 </a> 
 <%
 next
 end if
 %>
 
 
 
  
 |  
              | 
                
                  |  |  |  |  
                  |  | 
                      
                        | Date :
                            13 มิ.ย. 2549  09:31:08 | By :
                            เป็ก |  |  |  
                  |  |  |  |  |  |  |  
          |  |  |  |  |  
 
        
          |  |  |  |  |  
          |  |  | 
            
              |                          
 |  
              | 
                
                  |  |  |  |  
                  |  | 
                      
                        | Date :
                            13 มิ.ย. 2549  11:24:38 | By :
                            phoey |  |  |  
                  |  |  |  |  |  |  |  
          |  |  |  |  |  
 
        
          |  |  |  |  |  
          |  |  | 
            
              |                                                          
 |  
              | 
                
                  |  |  |  |  
                  |  | 
                      
                        | Date :
                            13 มิ.ย. 2549  11:25:26 | By :
                            phoey |  |  |  
                  |  |  |  |  |  |  |  
          |  |  |  |  |  
 
        
          |  |  |  |  |  
          |  |  | 
            
              | ไม่สามารถบอกได้                  
 |  
              | 
                
                  |  |  |  |  
                  |  | 
                      
                        | Date :
                            13 มิ.ย. 2549  11:26:18 | By :
                            phoey |  |  |  
                  |  |  |  |  |  |  |  
          |  |  |  |  |  
 
        
          |  |  |  |  |  
          |  |  | 
            
              | <% if keyword="" then
 Response.write("<br>กรุณากรอก Keyword เพื่อค้นหาจาก Field Description<hr>")
 else
 pageLen = 10 'กำหนดจำนวนแต่ละหน้าที่ต้องการแสดงกี่ Reccord
 pageNo = request.QueryString("pageNo")
 if pageNo="" then pageNo = 1
 Set Conn = Server.CreateObject("ADODB.Connection")
 //เพิ่มตรงนี้ดูนะครับ
 Conn.ConnectionTimeout = 0
 Conn.CommandTimeout = 0
 
 Conn.Open "MTD" ,"mtdasp" , "1234"
 Sql="Select DepoID, Monthly, PartID, ForkNumber, Labour, Potent, Supply, Quantity, Introduc, Inoperative, Tran_in, Tran_out, Pay_in, Pay_out, Sale, Total, Spare, Oil From livestock where DepoID like '%"&Request.Form("keyword")&"%'"
 Set RS =Server.CreateObject("ADODB.Recordset")
 RS.open Sql,Conn,3,3
 Nrecord=RS.recordcount
 Rs.pageSize = pageLen
 totalPage = Rs.PageCount
 Rs.absolutePage = pageNo
 
 If Rs.EOF Then
 %>
 
 
 |  
              | 
                
                  |  |  |  |  
                  |  | 
                      
                        | Date :
                            13 มิ.ย. 2549  13:05:23 | By :
                            มือใหม่ |  |  |  
                  |  |  |  |  |  |  |  
          |  |  |  |  |  
 
        
          |  |  |  |  |  
          |  |  | 
            
              | ทำได้แล้วค่ะ โดยเพิ่ม Conn.ConnectionTimeout = 0
 Conn.CommandTimeout = 0
 
 ตามที่คุณมือใหม่บอกไว้ ใช้ได้แล้ว
 
 แต่ติดปัญหาต่อมาคือ พอคลิกที่หน้าต่อไป หรือหน้า 2  หรือคลิกที่หน้าไหนก็ตาม ข้อมูลจะไม่มาและจะขึ้นบนหนเเวปแบบนี้ค่ะ รบกวนช่วยตอบด้วยนะค่ะ
 Error Type:
 Active Server Pages, ASP 0113 (0x80004005)
 The maximum amount of time for a script to execute was exceeded. You can change this limit by specifying a new value for the property Server.ScriptTimeout or by changing the value in the IIS administration tools.
 /thai-asp/Sample1.asp
 
 
 ไม่รู้จะแก้ยังไง
  
 |  
              | 
                
                  |  |  |  |  
                  |  | 
                      
                        | Date :
                            14 มิ.ย. 2549  11:10:59 | By :
                            เป็ก |  |  |  
                  |  |  |  |  |  |  |  
          |  |  |  |  |  
 
        
          |  |  |  |  |  
          |  |  | 
            
              | ลองเอา code นี้ไปดัดแปลง คือกำลังหัดใช้จาก Dream MX V.6 อยู่น่ะ <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
 <%
 Dim MM_boo_STRING
 MM_boo_STRING= "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("test50.mdb")
 %>
 <%
 Dim rs1
 Dim rs1_numRows
 
 Set rs1 = Server.CreateObject("ADODB.Recordset")
 rs1.ActiveConnection = MM_boo_STRING
 rs1.Source = "SELECT * FROM WtNames"
 rs1.CursorType = 0
 rs1.CursorLocation = 2
 rs1.LockType = 1
 rs1.Open()
 
 rs1_numRows = 0
 %>
 <%
 Dim Repeat1__numRows
 Dim Repeat1__index
 
 Repeat1__numRows = 5
 Repeat1__index = 0
 rs1_numRows = rs1_numRows + Repeat1__numRows
 %>
 <%
 '  *** Recordset Stats, Move To Record, and Go To Record: declare stats variables
 
 Dim rs1_total
 Dim rs1_first
 Dim rs1_last
 
 ' set the record count
 rs1_total = rs1.RecordCount
 
 ' set the number of rows displayed on this page
 If (rs1_numRows < 0) Then
 rs1_numRows = rs1_total
 Elseif (rs1_numRows = 0) Then
 rs1_numRows = 1
 End If
 
 ' set the first and last displayed record
 rs1_first = 1
 rs1_last  = rs1_first + rs1_numRows - 1
 
 ' if we have the correct record count, check the other stats
 If (rs1_total <> -1) Then
 If (rs1_first > rs1_total) Then
 rs1_first = rs1_total
 End If
 If (rs1_last > rs1_total) Then
 rs1_last = rs1_total
 End If
 If (rs1_numRows > rs1_total) Then
 rs1_numRows = rs1_total
 End If
 End If
 %>
 
 <%
 ' *** Recordset Stats: if we don't know the record count, manually count them
 
 If (rs1_total = -1) Then
 
 ' count the total records by iterating through the recordset
 rs1_total=0
 While (Not rs1.EOF)
 rs1_total = rs1_total + 1
 rs1.MoveNext
 Wend
 
 ' reset the cursor to the beginning
 If (rs1.CursorType > 0) Then
 rs1.MoveFirst
 Else
 rs1.Requery
 End If
 
 ' set the number of rows displayed on this page
 If (rs1_numRows < 0 Or rs1_numRows > rs1_total) Then
 rs1_numRows = rs1_total
 End If
 
 ' set the first and last displayed record
 rs1_first = 1
 rs1_last = rs1_first + rs1_numRows - 1
 
 If (rs1_first > rs1_total) Then
 rs1_first = rs1_total
 End If
 If (rs1_last > rs1_total) Then
 rs1_last = rs1_total
 End If
 
 End If
 %>
 <%
 Dim MM_paramName
 %>
 <%
 ' *** Move To Record and Go To Record: declare variables
 
 Dim MM_rs
 Dim MM_rsCount
 Dim MM_size
 Dim MM_uniqueCol
 Dim MM_offset
 Dim MM_atTotal
 Dim MM_paramIsDefined
 
 Dim MM_param
 Dim MM_index
 
 Set MM_rs    = rs1
 MM_rsCount   = rs1_total
 MM_size      = rs1_numRows
 MM_uniqueCol = ""
 MM_paramName = ""
 MM_offset = 0
 MM_atTotal = false
 MM_paramIsDefined = false
 If (MM_paramName <> "") Then
 MM_paramIsDefined = (Request.QueryString(MM_paramName) <> "")
 End If
 %>
 <%
 ' *** Move To Record: handle 'index' or 'offset' parameter
 
 if (Not MM_paramIsDefined And MM_rsCount <> 0) then
 
 ' use index parameter if defined, otherwise use offset parameter
 MM_param = Request.QueryString("index")
 If (MM_param = "") Then
 MM_param = Request.QueryString("offset")
 End If
 If (MM_param <> "") Then
 MM_offset = Int(MM_param)
 End If
 
 ' if we have a record count, check if we are past the end of the recordset
 If (MM_rsCount <> -1) Then
 If (MM_offset >= MM_rsCount Or MM_offset = -1) Then  ' past end or move last
 If ((MM_rsCount Mod MM_size) > 0) Then         ' last page not a full repeat region
 MM_offset = MM_rsCount - (MM_rsCount Mod MM_size)
 Else
 MM_offset = MM_rsCount - MM_size
 End If
 End If
 End If
 
 ' move the cursor to the selected record
 MM_index = 0
 While ((Not MM_rs.EOF) And (MM_index < MM_offset Or MM_offset = -1))
 MM_rs.MoveNext
 MM_index = MM_index + 1
 Wend
 If (MM_rs.EOF) Then
 MM_offset = MM_index  ' set MM_offset to the last possible record
 End If
 
 End If
 %>
 <%
 ' *** Move To Record: if we dont know the record count, check the display range
 
 If (MM_rsCount = -1) Then
 
 ' walk to the end of the display range for this page
 MM_index = MM_offset
 While (Not MM_rs.EOF And (MM_size < 0 Or MM_index < MM_offset + MM_size))
 MM_rs.MoveNext
 MM_index = MM_index + 1
 Wend
 
 ' if we walked off the end of the recordset, set MM_rsCount and MM_size
 If (MM_rs.EOF) Then
 MM_rsCount = MM_index
 If (MM_size < 0 Or MM_size > MM_rsCount) Then
 MM_size = MM_rsCount
 End If
 End If
 
 ' if we walked off the end, set the offset based on page size
 If (MM_rs.EOF And Not MM_paramIsDefined) Then
 If (MM_offset > MM_rsCount - MM_size Or MM_offset = -1) Then
 If ((MM_rsCount Mod MM_size) > 0) Then
 MM_offset = MM_rsCount - (MM_rsCount Mod MM_size)
 Else
 MM_offset = MM_rsCount - MM_size
 End If
 End If
 End If
 
 ' reset the cursor to the beginning
 If (MM_rs.CursorType > 0) Then
 MM_rs.MoveFirst
 Else
 MM_rs.Requery
 End If
 
 ' move the cursor to the selected record
 MM_index = 0
 While (Not MM_rs.EOF And MM_index < MM_offset)
 MM_rs.MoveNext
 MM_index = MM_index + 1
 Wend
 End If
 %>
 <%
 ' *** Move To Record: update recordset stats
 
 ' set the first and last displayed record
 rs1_first = MM_offset + 1
 rs1_last  = MM_offset + MM_size
 
 If (MM_rsCount <> -1) Then
 If (rs1_first > MM_rsCount) Then
 rs1_first = MM_rsCount
 End If
 If (rs1_last > MM_rsCount) Then
 rs1_last = MM_rsCount
 End If
 End If
 
 ' set the boolean used by hide region to check if we are on the last record
 MM_atTotal = (MM_rsCount <> -1 And MM_offset + MM_size >= MM_rsCount)
 %>
 <%
 ' *** Go To Record and Move To Record: create strings for maintaining URL and Form parameters
 
 Dim MM_keepNone
 Dim MM_keepURL
 Dim MM_keepForm
 Dim MM_keepBoth
 
 Dim MM_removeList
 Dim MM_item
 Dim MM_nextItem
 
 ' create the list of parameters which should not be maintained
 MM_removeList = "&index="
 If (MM_paramName <> "") Then
 MM_removeList = MM_removeList & "&" & MM_paramName & "="
 End If
 
 MM_keepURL=""
 MM_keepForm=""
 MM_keepBoth=""
 MM_keepNone=""
 
 ' add the URL parameters to the MM_keepURL string
 For Each MM_item In Request.QueryString
 MM_nextItem = "&" & MM_item & "="
 If (InStr(1,MM_removeList,MM_nextItem,1) = 0) Then
 MM_keepURL = MM_keepURL & MM_nextItem & Server.URLencode(Request.QueryString(MM_item))
 End If
 Next
 
 ' add the Form variables to the MM_keepForm string
 For Each MM_item In Request.Form
 MM_nextItem = "&" & MM_item & "="
 If (InStr(1,MM_removeList,MM_nextItem,1) = 0) Then
 MM_keepForm = MM_keepForm & MM_nextItem & Server.URLencode(Request.Form(MM_item))
 End If
 Next
 
 ' create the Form + URL string and remove the intial '&' from each of the strings
 MM_keepBoth = MM_keepURL & MM_keepForm
 If (MM_keepBoth <> "") Then
 MM_keepBoth = Right(MM_keepBoth, Len(MM_keepBoth) - 1)
 End If
 If (MM_keepURL <> "")  Then
 MM_keepURL  = Right(MM_keepURL, Len(MM_keepURL) - 1)
 End If
 If (MM_keepForm <> "") Then
 MM_keepForm = Right(MM_keepForm, Len(MM_keepForm) - 1)
 End If
 
 ' a utility function used for adding additional parameters to these strings
 Function MM_joinChar(firstItem)
 If (firstItem <> "") Then
 MM_joinChar = "&"
 Else
 MM_joinChar = ""
 End If
 End Function
 %>
 <%
 ' *** Move To Record: set the strings for the first, last, next, and previous links
 
 Dim MM_keepMove
 Dim MM_moveParam
 Dim MM_moveFirst
 Dim MM_moveLast
 Dim MM_moveNext
 Dim MM_movePrev
 
 Dim MM_urlStr
 Dim MM_paramList
 Dim MM_paramIndex
 Dim MM_nextParam
 
 MM_keepMove = MM_keepBoth
 MM_moveParam = "index"
 
 ' if the page has a repeated region, remove 'offset' from the maintained parameters
 If (MM_size > 1) Then
 MM_moveParam = "offset"
 If (MM_keepMove <> "") Then
 MM_paramList = Split(MM_keepMove, "&")
 MM_keepMove = ""
 For MM_paramIndex = 0 To UBound(MM_paramList)
 MM_nextParam = Left(MM_paramList(MM_paramIndex), InStr(MM_paramList(MM_paramIndex),"=") - 1)
 If (StrComp(MM_nextParam,MM_moveParam,1) <> 0) Then
 MM_keepMove = MM_keepMove & "&" & MM_paramList(MM_paramIndex)
 End If
 Next
 If (MM_keepMove <> "") Then
 MM_keepMove = Right(MM_keepMove, Len(MM_keepMove) - 1)
 End If
 End If
 End If
 
 ' set the strings for the move to links
 If (MM_keepMove <> "") Then
 MM_keepMove = Server.HTMLEncode(MM_keepMove) & "&"
 End If
 
 MM_urlStr = Request.ServerVariables("URL") & "?" & MM_keepMove & MM_moveParam & "="
 
 MM_moveFirst = MM_urlStr & "0"
 MM_moveLast  = MM_urlStr & "-1"
 MM_moveNext  = MM_urlStr & CStr(MM_offset + MM_size)
 If (MM_offset - MM_size < 0) Then
 MM_movePrev = MM_urlStr & "0"
 Else
 MM_movePrev = MM_urlStr & CStr(MM_offset - MM_size)
 End If
 %>
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 <title>Untitled Document</title>
 </head>
 
 <body>
 <table width="600" border="1" cellspacing="1" cellpadding="1">
 <tr>
 <td colspan="2"><div align="center">record <%=(rs1_first)%> to <%=(rs1_last)%> of <%=(rs1_total)%></div></td>
 </tr>
 <%
 While ((Repeat1__numRows <> 0) AND (NOT rs1.EOF))
 %>
 <tr>
 <td width="50%"><%=(rs1.Fields.Item("numFirstName").Value)%></td>
 <td width="50%"><%=(rs1.Fields.Item("numLastName").Value)%></td>
 </tr>
 <%
 Repeat1__index=Repeat1__index+1
 Repeat1__numRows=Repeat1__numRows-1
 rs1.MoveNext()
 Wend
 %>
 
 <tr>
 <td> </td>
 <td> </td>
 </tr>
 <tr>
 <td height="23" colspan="2"><div align="center"><A HREF="<%=MM_movePrev%>"><<prev</A>   
 
 <%
 Pnum_counter = 0
 For i = 1 to rs1_total Step MM_size
 Pnum_counter = Pnum_counter + 1
 Pnum_PageEndCount = i + MM_size - 1
 if Pnum_PageEndCount > rs1_total Then Pnum_PageEndCount = rs1_total
 if i <> MM_offset + 1 then
 Response.Write("<a href=""" & Request.ServerVariables("URL") & "?" & MM_keepMove & "offset=" & i-1 & """>")
 Response.Write(Pnum_counter & "</a>")
 else
 Response.Write("<b>" & Pnum_counter & "</b>")
 End if
 if(Pnum_PageEndCount <> rs1_total) then Response.Write("|")
 next
 %>
 
 
    <A HREF="<%=MM_moveNext%>">next>></A> </div></td>
 </tr>
 </table>
 <P><FONT face="Verdana, Arial, Helvetica, sans-serif" color=#cc0000
 size=2></FONT></P>
 </body>
 </html>
 <%
 rs1.Close()
 Set rs1 = Nothing
 %>
 
 
 |  
              | 
                
                  |  |  |  |  
                  |  | 
                      
                        | Date :
                            20 มิ.ย. 2549  18:15:02 | By :
                            T |  |  |  
                  |  |  |  |  |  |  |  
          |  |  |  |  |  |  |