プログラム実装機能: 2 つのデータ テーブル内のデータのページング表示
最近、あなたも遭遇したことがあるかと思いますが、お客様の要件
を共有したいと思います。
データベース内の 2 つのテーブルはデータベース DB1 と DB2、テーブル Table1 と Tabel2 として定義されており、これら 2 つのテーブルのデータはそれぞれページの上部と下部に表示され、同じページ番号が付けられます。データの最初の部分が不十分な場合は、データの 2 番目の部分が
'/*code*/
<%
Set objConn1=Server.CreateObject("ADODB.Recordset")
に埋められます。
Set objConn2=Server.CreateObject("ADODB.Recordset")
objConn1.Open "PROVIDER=SQLOLEDB;DATA SOURCE=localhost;UID=sa;PWD=123;DATABASE=DB1"
objConn2.Open "PROVIDER=SQLOLEDB;DATA SOURCE=localhost;UID=sa;PWD=123;DATABASE=DB2"
Page=CLng(Request.QueryString("Page"))
ページ = "の場合、その後
ページ=1
終了する場合
StrSQL1="select * from Table1 order by ID desc"
StrSQL2="select * from Table2 order by ID desc"
Record_count1=Clng(objConn1.execute(StrSQL1)(0)) '最初のテーブルのレコード数を取得します
Record_count2=Clng(objConn2.execute(StrSQL2)(0))'2 番目のテーブルのレコード数を取得します
Record_count=record_count1+record_count2 ' 2 つのテーブルのレコード数を取得し、
If Record_count>0 then
page_size1=5 ' ページごとに最初のテーブルに表示されるデータのデフォルトの数
page_size2=5 ' 2 番目のテーブルの 1 ページ当たりの部分データのデフォルト表示数
page_count1=CInt(record_count1/page_size1)
If (record_count1 Mod page_size1)<(page_size1/2) then page_count1=page_count1+1 ' データの最初の部分のページ番号を取得します
page_count2=CInt(record_count2/page_size2)
If (record_count2 Mod page_size2)<(page_size2/2) then page_count2=page_count2+1'データの 2 番目の部分のページ番号を取得します
if Cint(page_count2)=cint(page) then 'データの 2 番目の部分であると仮定しますより小さい必要があります。ここで、現在のページがデータの少ない最後のページであるかどうかを判断します。thepageRecordcount
=record_count2-(page-1)*5 'データの 2 番目の部分の最後のページに表示されるデータの数
page_size1=10-cint(thepageRecordcount) 'データの最初の部分の 2 番目の部分の最後のページに表示されるアイテムの数'
page_size1=cint(thepageRecordcount) 'このページの最初の部分に表示されるアイテムの数を取得します
elseif cint(page)>cint(page_count2) then 'これ以降、データの最初の部分はすべて
page_size1=10
になります
page_size2=0
終了の場合
page_count=CInt(record_count/(page_size1+page_size2) '両方のカテゴリを合わせたページ数
If (record_count Mod (page_size1+page_size2))<((page_size1+page_size2)/2) then page_count=page_count+1
If Page < 1 then
ページ=1
終了の場合
ページ > page_count の場合
ページ = page_count
場合は終了
Pagefrom、Pageto
ページから=ページ-10
Pageto=page+10
if Pagefrom<1 then
ページから=1
終了する場合
if Pageto>record_count then
Pageto=page_count
終了する場合
終了の場合
If Page<=1 then '最初のページにクエリを表示します
StrSQL1="上位「&page_size1&」* テーブル 1 から選択"
StrSQL1=StrSQL1&" ID 説明による順序"
StrSQl2="上部「&page_size1&」* テーブル 2 から選択"
StrSQL2=StrSQL2&" ID 説明による順序"
Else 'N ページのクエリを表示
StrSQL1="テーブル 1 から先頭の "&(Page-1)*page_size1&" ID を選択"
StrSQL1=StrSQL1&" ID 説明による順序"
StrSQL1="SELECT 上位 1 ID From ("&StrSQL1&") DERIVEDTBL ID 順 "
'応答.書き込み(SQL)
id =Trim(objConn1.execute(StrSQL1)(0))
StrSQL1="上位「&page_size1&」* テーブル 1 から選択"
StrSQL1=StrSQL1&" ここで id<'"&id&"'"
StrSQL1=StrSQL1&" ID 説明による順序"
StrSQL2="テーブル 2 から先頭の "&(Page-1)*page_size2&" ID を選択"
StrSQL2=StrSQL2&" ID 説明による順序"
StrSQL2="SELECT 上位 1 id From ("&StrSQL2&") DERIVEDTBL ID による順序 "
id =Trim(objconn2.execute(StrSQL2)(0))
StrSQL2="先頭を選択 "&page_size2&" * テーブル 2 から "
StrSQL2=StrSQL2&" where id<'"&id &"'"
StrSQL2=StrSQL2&" ID 説明による順序"
End If
%>
<%
Record_count>0 の場合、
%>
<%
Set Rs1=Server.CreateObject("Adodb.Recordset")
rs1.openStrSQL1,objconn1
n = 1 の場合、page_size1 まで
rs1.Eof の場合は終了します
%>
<!-- 表示されるコンテンツの最初の部分がループします -->
<%
rs1.MoveNext
rs1.EOF の場合は終了します
次
rs1.close
rs1=何も設定しない
%>
<%
Set Rs2=Server.CreateObject("Adodb.Recordset")
rs2.openStrSQL2、objconn2
n = 1 の場合、page_size2 まで
rs2.Eof の場合は終了します
%>
<!-- 表示されるコンテンツの 2 番目の部分がループします -->
<%
rs2.MoveNext
rs2.EOF の場合は終了します
次
rs2.close
rs2=何も設定しない
%>
<!--結果のページ番号-->
<%if page<>"1" then%><a href=?page=<%=Cint(page-1)%>>前のページ</a> <%end if%>
<% ' for ループを使用してページ番号の接続を書き出します
i=Pagefrom から Pageto の場合
i=0 の場合
i=1
end
if i<>Cint(page) then
strurl="<a href=?page="&i&"><font color=#000000>"&i&"</font></a>"
else
strurl="<b><font color=#ce0031>"&i&"</font></b>"
end if
response.write strurl
応答.書き込み " "
次
%>
<%if page_count =1 または (page_count-Cint(page))=0 then
応答.書き込み("")
それ以外
応答。「<a href=?page="&Cint(page+1)&">次のページ</a>」と書き込みます。
終了する場合
%>
<!--結果のページ番号-->
'/*コードの終わり*/
私のレベルは限られており、プログラムは粗雑で、欠点があるかもしれません~批判して修正していただければ幸いです~