Функция программной реализации: постраничное отображение данных в двух таблицах данных.
Недавно я столкнулся с относительно редким требованием. Интересно, сталкивались ли вы с ним, поэтому хочу поделиться с вами
требованием заказчика: две части данных, две. из разных мест. Две таблицы в базе данных определяются как базы данных DB1 и DB2, а также таблицы Table1 и Tabel2. Данные этих двух таблиц должны отображаться в верхней и нижней части страницы соответственно, и должен быть одинаковый номер страницы. использоваться, например, первая часть данных. Если этого недостаточно, вторая часть данных будет заполнена
'/*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="выбрать * из таблицы 1 в порядке идентификатора"
StrSQL2="выбрать * из таблицы 2 в порядке по идентификатору"
Record_count1=Clng(objConn1.execute(StrSQL1)(0)) 'Получить количество записей в первой таблице
Record_count2=Clng(objConn2.execute(StrSQL2)(0))'Получить количество записей во второй таблице
Record_count=record_count1+record_count2 'Получаем количество записей в двух таблицах.
Если Record_count>0, то
page_size1=5 'Количество отображаемых частей данных в первой таблице на странице по умолчанию
page_size2=5 'Количество отображаемых по умолчанию частичных данных во второй таблице на странице
page_count1=CInt(record_count1/page_size1)
If (record_count1 Mod page_size1)<(page_size1/2) Тогда page_count1=page_count1+1 'Получить номер страницы первой части данных
page_count2 = CInt(record_count2/page_size2)
If (record_count2 Mod page_size2)<(page_size2/2) Тогда page_count2=page_count2+1 'Получить номер страницы второй части данных
if Cint(page_count2)=cint(page) then 'Предположим, что вторая часть данных должно быть меньше, здесь определите, является ли текущая страница последней страницей с меньшим количеством данных
thepageRecordcount=record_count2-(page-1)*5 'Количество данных, отображаемых на последней странице второй части данных
page_size1=10-cint(thepageRecordcount) 'Количество элементов, отображаемых на последней странице второй части первой части данных'
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) Тогда page_count=page_count+1
Если страница < 1 Тогда
Страница=1
Конец, если
Если Страница > число_страниц Тогда
Страница = количество_страниц
Конец, если
Dim Pagefrom, Pageto
Страницас=страница-10
Pageto=page+10,
если Pagefrom<1, то
Страница с = 1
конец, если
если Pageto>record_count, то
Pageto=page_count
конец, если
Конец, если
If Page<=1 then 'Показать запрос на первой странице
StrSQL1="Выбрать верхнее "&page_size1&" * из таблицы1 "
StrSQL1=StrSQL1&" Упорядочить по идентификатору"
StrSQl2="Выбрать верхнее "&page_size1&" * из таблицы2 "
StrSQL2=StrSQL2&" упорядочить по идентификатору"
Else 'Отображение запроса на странице N
StrSQL1="Выбрать верхний "&(Page-1)*page_size1&" ID из таблицы 1 "
StrSQL1=StrSQL1&" Упорядочить по идентификатору Desc"
StrSQL1="ВЫБРАТЬ 1 первый идентификатор из ("&StrSQL1&") DERIVEDTBL Упорядочить по идентификатору "
'Ответ.Запись(SQL)
id =Trim(objConn1.execute(StrSQL1)(0))
StrSQL1="Выбрать верхний "&page_size1&" * из таблицы1"
StrSQL1=StrSQL1&" где id<'"&id&"'"
StrSQL1=StrSQL1&" Упорядочить по идентификатору Desc"
StrSQL2="Выбрать верхний "&(Page-1)*page_size2&" идентификатор из таблицы2 "
StrSQL2=StrSQL2&" Упорядочить по идентификатору Desc"
StrSQL2="ВЫБРАТЬ 1 первый идентификатор из ("&StrSQL2&") DERIVEDTBL Упорядочить по идентификатору "
id =Trim(objconn2.execute(StrSQL2)(0))
StrSQL2="Выбрать верх "&page_size2&" * Из таблицы2 "
StrSQL2=StrSQL2&" где id<'"&id &"'"
StrSQL2=StrSQL2&" Порядок по идентификатору Desc"
Конец, если
%>
<%
Если Record_count>0 Тогда
%>
<%
Set Rs1=Server.CreateObject("Adodb.Recordset")
rs1.openStrSQL1,objconn1
Для n = 1 Для page_size1
Если rs1.Eof, то выйти за
%>
<!--Первая часть отображаемого содержимого зацикливается-->
<%
rs1.MoveNext
Если rs1.EOF, то выйти за
Следующий
rs1.закрыть
установить rs1=ничего
%>
<%
Set Rs2=Server.CreateObject("Adodb.Recordset")
rs2.openStrSQL2,objconn2
Для n = 1 Для page_size2
Если rs2.Eof, то выйти за
%>
<!--Вторая часть отображаемого содержимого зацикливается-->
<%
rs2.MoveNext
Если rs2.EOF, то выйти за
Следующий
rs2.закрыть
установить rs2=ничего
%>
<!--Номер страницы результата-->
<%if page<>"1" then%><a href=?page=<%=Cint(page-1)%>>Предыдущая страница</a> <%end if%>
<% 'Используйте цикл for для записи соединения с номером страницы
Для i=Pagefrom на Pageto
если я=0 тогда
я = 1
конец, если
если i<>Cint(страница), то
strurl="<a href=?page="&i&"><font color=#000000>"&i&"</font></a>"
else
strurl="<b><font color=#ce0031>"&i&"</font></b>"
конец, если
ответ.пишите strurl
ответ.напишите " "
следующий
%>
<%if page_count =1 или (page_count-Cint(page))=0 тогда
ответ.Запись("")
еще
ответ. Напишите "<a href=?page="&Cint(page+1)&">Следующая страница</a>"
конец, если
%>
<!--Номер страницы результата-->
'/*Конец кода*/
Мой уровень ограничен, программа грубая, могут быть недочеты~Надеюсь, вы сможете меня покритиковать и поправить~