2015-02-04 6 views
0

아무도 내 레코드 세트 페이징이 작동하지 않는 이유를 알 수 있습니까? 나는이 물건에 대해 훨씬 몰라, 내가이 Microsoft 웹 사이트 링크에서 가져온 내 코드에있는 그것의 부분 다음에레코드 세트 페이징이 작동하지 않습니다.

Dim con, con2, rec, rec2, dsn, dsn2, sql, sql2, rName, sDate, eDate, intPageCount 
rName=Request.Form("rn") 
sDate=FormatDateTime(Request.Form("sD"), 2) 
eDate=FormatDateTime(Request.Form("eD"), 2) 

dsn = "Radio" 
dsn2 = "InfoLib_SQL" 
sql = "SELECT * FROM T_RadioControlLog WHERE RadioName = '"&rName&"' AND CONVERT(date, Date, 101) >= 
     CONVERT(date, '"&sDate&"', 101) AND CONVERT(date, Date, 101) <= CONVERT(date, '"&eDate&"', 101)" 

set con=Server.CreateObject("ADODB.Connection") 
set rec=Server.CreateObject("ADODB.Recordset") 
rec.CursorLocation=3 

con.Open dsn, "pw", "pw" 
rec.Open sql, con 
rec.PageSize=5 
intPageCount=rec.PageCount 

Select Case Request("Action") 
    case "<<" 
     intpage =1 
    case"<" 
     intpage = Request("intpage")-1 
     if intpage < 1 then intpage = 1 
    case ">" 
     intpage = Request("intpage")+1 
     if intpage > intPageCount then intpage = intPageCount 
    case ">>" 
     intpage = intPageCount 
    case else 
     intpage = 1 
end select 

If NOT rec.eof Then 
Response.write("<table>") 
rec.AbsolutePage = intpage 
For intRecord = 1 to rec.PageSize 
    Response.write("<tr><td>Radio Name</td><td>Date</td><td>Employee Name</td><td>ID#</td></tr>") 
    Response.write("<tr><td>" & rec.fields("RadioName") & "</td>") 
    Response.Write("<td>" & rec.fields("Date") & "</td>") 
    set con2=Server.CreateObject("ADODB.Connection") 
    set rec2=Server.CreateObject("ADODB.Recordset") 
    sql2 = "SELECT EMP_NA FROM EMP_TABLE WHERE ID='"&rec.fields("ID#")&"'" 
    con2.Open dsn2, "pw", "pw" 
    rec2.Open sql2, con2 
    Response.Write("<td>" & rec2.fields("EMP") & "</td>") 
    Response.Write("<td>" & rec.fields("ID#")& "</td></tr>") 
    rec.movenext 
    rec2.close 
    con2.close 
    set rec2=nothing 
    set con2=nothing 
If rec.EOF Then Exit For 
Next 
%> 
<tr> 
<form name="pageNav" action="results.asp" method="post"> 
<input type="hidden" name="intpage" value="<%=intpage%>"> 
<input type="submit" name="Action" value="<<"> 
<input type="submit" name="Action" value="<"> 
<input type="submit" name="Action" value=">"> 
<input type="submit" name="Action" value=">>"> 
Page: <%=intpage & " of " & intPageCount%> 
</tr> 
</form> 
</table> 
<% 
Else 
Response.write("Sorry, no entries were found.") 
End If 


rec.close 
set rec=nothing 
con.close 
set con=nothing 

호출 : 여기 http://support.microsoft.com/kb/202125

내 코드입니다 DB 작업 및 항목은 확실히 반환됩니다. 내 레코드 집합이 반환되도록 설정되었으므로 작은 테이블이 5 개 항목으로 표시되지만 >>, <, >, etc.을 클릭하면 아무 것도 표시되지 않고 페이지가 비어있게됩니다. 누군가가 레코드 페이징이 어떻게 작동하는지 설명 할 수 있다면 좋을 것입니다.

+0

빈 페이지의 원본을 보려면 (즉, 마우스 오른쪽 단추를 클릭하고 상황에 맞는 메뉴에서 "소스보기"를 선택하십시오) HTML이 있습니까? 오류 메시지? –

+0

나는 정직하다면 어디에서 시작해야할지 모르겠다. 이 코드를 본 이후로 꽤 오래되었습니다 ... 불쾌감은 없지만 M $ 사이트에서 가져온 샘플은 끔찍합니다. 더 나은 자원은 [4guysfromrolla.com - 페이징에서 데이터베이스 결과 N 레코드까지] (http://www.4guysfromrolla.com/webtech/121298-1.shtml)와 같은 존재하며,이 기사는 페이징을 보여주는 다른 기사로 연결됩니다 SQL Server는 클라이언트 커서를 모두 잘라냅니다. – Lankymart

+0

[CodeProject.com - ADO Recordset Paging in ASP] (http://www.codeproject.com/Articles/619/ADO-Recordset-Paging-in-ASP)에 대한이 기사는 단계별 지침이있는 또 다른 좋은 예입니다. . Google 검색에서 2 초. – Lankymart

답변

0

몇 가지 의견을 보내주십시오.

당신은 DimintPageCount가 아니라 intPage이 아니라 큰 것이 아니라 여전히 개인적인 취향 인 Dim입니다.

포스트 백 중에 저장하지 않는 이전 페이지의 필드가 있습니다. 구체적으로는 I 게시에 그 값을 사용 콜백이

<form name="pageNav" action="results.asp" method="post"> 
<input type="hidden" name="rn" value="<%=rName%>"> 
<input type="hidden" name="sD" value="<%=sDate%>"> 
<input type="hidden" name="eD" value="<%=eDate%>"> 
<input type="hidden" name="intpage" value="<%=intpage%>"> 

같은 코드

rName=Request.Form("rn") 
sDate=FormatDateTime(Request.Form("sD"), 2) 
eDate=FormatDateTime(Request.Form("eD"), 2) 

이 부분하지만 대응하는 부분을 참조.

+0

Dim intpage를 사용할 수는 있지만 작동하지 않는 것처럼 보였지만 제대로 할 수 있습니다. ASP 요소를 HTML 요소 값으로 사용하는 올바른 구문입니까? "pageNav"양식이 실행되는 한 해당 양식은 탐색에만 사용됩니다. 내 검색 함수에서 숨겨진 입력 형식으로 전달되는 값을 설정하는 이유가 확실하지 않습니다 ... 포스트 백에서 해당 값에 대한 콜백으로 정확히 무엇을 의미합니까? 탐색 버튼 (>, >>, <<)을 클릭하여 페이지가 다시 게시 될 때 전달한 값을 잃어 버리고 있다고 말하는 것입니까? –

+0

@ JimmyGoodson 각 항목에 응답 : 1) 맞습니다. 올바른 구문입니다. 2) 값은 양식으로 이동하여 페이징 단추를 클릭 할 때 다시 값을 갖게됩니다. 3) Request.Form ("rn")은 이전 페이지의 필드를 호출합니다.이 필드는 탐색 버튼을 클릭하면 results.asp가됩니다. 그래서 Request.Form ("rn")은 action = "result.asp" "postback"에 대해 "콜백"을 수행합니다. 4) 네, 네비게이션 버튼을 클릭 할 때 값을 잃고 있습니다. – KHeaney

+1

OMG 남자, ty 순전히 lol ... 나는 명확하게 생각하고 있지 않았다, 나는 너의 말한대로하고 완벽하게 일했다. 나는 이것에 관한 큰 그림을 보지 않고 있었다,이 재료가 haha에 어떻게 흐른 지 나에게 상기시키기위한 ty –

-8
Function ShowFolderList(folderspec) 

    Dim fso, f, f1, fc, s 

    Set fso = CreateObject("Scripting.FileSystemObject") 

    Set f = fso.GetFolder(folderspec) 

    Set fc = f.Files 

    For Each f1 in fc 

     s = s & f1.name 

     s = s & "<BR>" 

    Next 

    ShowFolderList = s 

End Function 

이것은 도움말에서 온 것입니다. FSO에는 와일드 카드가 없습니다. 너 혼자해야 해. 따라서 f1.name이 요구 사항을 충족하는지 테스트 한 다음 해당 파일을 복사하십시오.

관련 문제