概要
----今では、ASPを使用して動的なページネーションを実現する多くの記事があります。つまり、ADOを使用して条件付き濃度の指定されたページを満たすたびにあります。ただし、実際のエンジニアリングアプリケーションでは、元のデータの量は通常非常に大きく、元のデータの処理は比較的遅いため、アプリケーション操作のパフォーマンスに深刻な影響を与えます。
---上記の問題を解決する主な方法は2つあります。1つは、クエリ条件を比較的修正し、比較的固定されたクエリ条件を使用して元のデータを処理し、各クエリが中央にあることです中央に。これによりプログラムのパフォーマンスが向上しますが、プログラムの柔軟性に影響し、サーバーは元のデータを定期的に処理および維持する必要があります。別の方法は、サーバー側のクエリを保存することです。これによりクエリのパフォーマンスが向上することはできませんが、サーバー端末はクライアントの交換時に迅速に応答できます。最初の方法の実現は比較的単純です。
実装方法
----ダイナミック配列でサーバー上のクエリ結果を保存します。つまり、Session_Onstartプロセス中に2次元の動的配列を宣言します。サーバーがクライアントによって送信されたアプリケーションを受信すると、最初の裁判官が条件付き問い合わせであるか、この配列で最初のページのコンテンツがクライアントに戻ります。配列。
プログラムの実装:
---- 1。 2次元配列とその他の変数を定義します
以下はコードフラグメントです。 Sub Session_Onstart dimepdb() redim preserve tempdb(1,2) セッション( "StoredArray")= tempdb 'セッションアレイを定義します セッション( "ipagecount")= 0 セッション( "ipageno")= 0 ... ... End Sub |
--- 2。保存手順を呼び出してデータを返します
以下はコードフラグメントです。 sub getrcordset(strbbmc、strkssj、 strzzsj、strnodecode、strfxzl) ''パラメーターは、レポート名とさまざまな制限です ケースSTRBBMCを選択します ケース「トランザクションサマリーフォーム」 strcnn = "provider = msdasql; dsn = sqldb; uid = sa; objcnn = server.createobje( "adodb.connection")を設定します objcnn.commandtimeout = 9999999 objcnn.connectiontimeout = 99999999 objcnn.cursorlocation = aduseclient objcnn.open strcnn ''接続を開きます objrs = server.createObjectを設定します ( "adodb.Recordset") objrs.pagesize = ipagesize objrs.cachesize = ipagesize objrs.open "sszhatmlog '"&strkssj& "' '、 '"" " '"" " Adlockreadonly、1 'クエリの結果に戻すストレージ手順を実行します ... ... End Sub |
---- 3。クエリの結果を動的配列に保存します
以下はコードフラグメントです。 sub saverecordset() objrs.eof = falseの場合 objrs.movelast session( "irowcount")= objrs.rcordcount session( "ifield -count")= objrs.fields.count セッション( "ipagecount")= objrs.pagecount Redim Preserve Temparray(セッション ( "Irowcount")、セッション( "ifieldcount")) 'Temparrayは2次元の動的配列です。 レコードセットのサイズに従ってそのサイズを定義します objrs.movefirst icount = 0 objrs.eof = falseを実行します icount = icount + 1 i = 1からセッション( "ifieldcount")の場合 Temparray(Icount、i)= objrs.fields.item (i -1) 次 objrs.movenext ループ セッション( "StoredArray")= Temparray objrs.close それ以外 セッション( "ipagecount")= 0 ifを終了します End Sub |
--- 4。レコードコンテンツを表示します
以下はコードフラグメントです。 sub showRecord() ... ... localray = session( "StoredArray") ishowtotal =(ipagecurrent -1)* ipagesize + 1 IROWLOOP = 1 iRowloop <= ipagesize and ishowtotalを行う理由を実行します <= session( "irowcount") respons.write( "<ter>") i = 1からセッション( "ifieldcount")の場合 Response.Write( "<td>" &localray(ishowtotal、i))next respons.write( "< /tr>) ishowtotal = isowtotal + 1 IROWLOOP = IROWLOOP + 1ループ respons.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 <session( "ipagecount") %> <center> <a href = "db_pag.asp?page = <%= ipageCurrent + 1%> ">後のページ< /a> < /center> <% ifを終了します ifを終了します End Sub |