개요
---- 이제 ASP를 사용하여 동적 페이지 매김을 달성하는 기사가 많이 있습니다. 그러나 실제 엔지니어링 애플리케이션에서 원래 데이터의 양은 일반적으로 매우 크며 원래 데이터의 처리는 원래 데이터가 한 번 변경되면 애플리케이션 작업의 성능에 심각하게 영향을 미칩니다.
---- 위의 문제를 해결하는 두 가지 주요 방법이 있습니다. 하나는 쿼리 조건을 상대적으로 고정하고, 비교적 고정 된 쿼리 조건을 사용하여 원래 데이터를 처리하고, 작은 데이터 수량 중간 라이브러리를 생성하는 것입니다 중간에. 이것은 프로그램의 성능을 향상시킬 것이지만 프로그램의 유연성에 영향을 미치며 서버는 원본 데이터를 정기적으로 처리하고 유지해야합니다. 또 다른 방법은 서버 측에 쿼리를 저장하는 것입니다. 이것은 쿼리의 성능을 향상시킬 수는 없지만 클라이언트 교체 할 때 서버 터미널이 신속하게 응답 할 수 있습니다. 첫 번째 방법의 실현은 비교적 간단합니다.
구현 방법
---- 서버의 쿼리 결과를 동적 배열로 저장합니다. 서버가 클라이언트가 제출 한 응용 프로그램을 수신하면 첫 번째 판사가 조건부 문의 여부 또는이 배열에서 첫 페이지의 내용이 클라이언트로 반환됩니다. 그렇지 않으면 해당 페이지를 직접 반환합니다. 배열.
프로그램 구현 :
---- 1. 두 차원 배열 및 기타 변수를 정의하십시오
다음은 코드 조각입니다. 서브 세션 _onstart 희미한 tempdb () redim 보존 Tempdb (1,2) 세션 ( "StoredArray") = tempdb '세션 배열 정의 세션 ( "ipagecount") = 0 세션 ( "Ipageno") = 0 ... ... 종료 서브 |
---- 2. 스토리지 절차에 전화하여 데이터를 반환하십시오
다음은 코드 조각입니다. 서브 getrcordset (strbbmc, strkssj, stzzsj, strnodecode, strfxzl) ``매개 변수는 보고서 이름 및 다양한 제한입니다 Case StrBBMC를 선택하십시오 사례 "거래 요약 양식" strcnn = "제공자 = msdasql; dsn = sqldb; uid = sa; pwd = 123456; set objcnn = server.createobje ( "adodb.connection") objcnn.commandtimeout = 9999999 objcnn.connectiontimeout = 9999999 objcnn.cursorlocation = 신원 방향 objcnn.open strcnn ''연결을 엽니 다 set objrs = server.createObject를 설정합니다 ( "adodb.recordset") objrs.pagesize = ipagesize objrs.cachesize = ipagesize objrs.open "sszhatmlog '"& strkssj & "' ', ' "" "" ' "" "" Adlockreadonly, 1 '저장 절차를 쿼리 결과로 다시 수행하십시오 ... ... 종료 서브 |
---- 3. 쿼리 결과를 동적 배열로 저장하십시오
다음은 코드 조각입니다. 하위 Saverecordset () objrs.eof = false 인 경우 objrs.movelast 세션 ( "IrowCount") = objrs.rcordCount 세션 ( "ifieldcount") = objrs.fields.count 세션 ( "ipagecount") = objrs.pagecount Redim 보존 Temparray (세션 ( "IrowCount"), 세션 ( "ifieldCount"))) 'Temparray는 2 차원 동적 배열이며 레코드 세트 크기에 따라 크기를 정의하십시오 objrs.movefirst iCount = 0 objrs.eof = false 중에 수행하십시오 iCount = iCount + 1 i = 1 to session ( "ifieldcount") temparray (iCount, i) = objrs.fields.item (i -1). 값 다음 objrs.movenext 고리 세션 ( "StoredArray") = temparray objrs.close 또 다른 세션 ( "ipagecount") = 0 끝 If 종료 서브 |
---- 4. 레코드 내용을 표시합니다
다음은 코드 조각입니다. 서브 showrecord () ... ... localRay = 세션 ( "StoredArray") ishowtotal = (iPagecurrent -1) * ipagesize + 1 irowloop = 1 왜 irowloop <= ipagesize 및 ishowtotal을하십시오 <= 세션 ( "IrowCount") response.write ( "<Ter>") i = 1 to session ( "ifieldcount") response.write ( "<td>" & localray (Ishowtotal, i)) 다음 response.write ( "< /tr>) ishowtotal = ishowtotal + 1 irowloop = irowloop + 1 루프 response.write ( "< /table>") iPagecurrent <> 1 및 인 경우 iPagecurrent <세션 ( "iPageCount") 그런 다음 %> <ster> <a href = "db_pag.asp? page = < % = iPagecurrent -1 %> "> 이전 페이지 < /a> <a href = "db_pag.asp? page = < % = iPagecurrent + 1 %>"> 마지막 페이지 < /a> < /center> < % 또 다른 iPagecurrent <> 1 인 경우 %> <ster> <a href = "db_pag.asp? page = < % = iPagecurrent -1 %> "> 이전 페이지 < /a> < /center> < % 끝 If iPageCurrent <세션 ( "iPageCount") 인 경우 %> <center> <a href = "db_pag.asp? page = < % = iPagecurrent + 1 %> "> 이후 페이지 < /a> < /센터> < % 끝 If 끝 If 종료 서브 |