<%
'Платформа: Win2000+IIS5.0+Sql2000
'PS: Обновлена последняя версия. Последняя версия была версией SQL, и хранимые процедуры не использовались.
'Предыдущая версия: [Оригинал] Отличный код пейджинга данных уровня миллиона - (занят в течение длительного времени) (http://bbs.bccn.net/thread-175543-1-1.html)
'--------------------------------------------- Следующий код код веб-страницы
Response.Buffer = Истина
Dim SqlLocalName, SqlUsername, SqlPassword, SqlDatabaseName
Дим КоннСтр,Конн
'''''''''''''''''''''''''' База данных SQL''''''''''''''' '''''' '''''''''''''''''''''''''''''''''
SqlLocalName =(local)'IP-адрес соединения [локальный (локальный) внешний IP-адрес]
SqlUsername=sa 'Имя пользователя базы данных
SqlPassword=XXXXXX 'Пароль пользователя
SqlDatabaseName=NewsTable 'Имя базы данных
ConnStr = Provider=Sqloledb;ID пользователя= & SqlUsername & ; Пароль= & SqlPassword & ; Начальный каталог = & SqlDatabaseName & ; Источник данных= & SqlLocalName & ;
'''''''''''''''''''''''''''''''''''''''' '''''''' ''''''''''''''''''''''''''''''''' '
При ошибке Возобновить Далее
Установить Conn=Server.CreateObject(ADODB.Connection)
Conn.open ConnStr
Если Ошибка Тогда
Ошиб.Очистить
SetConn=Ничего
Response.Write <div style='font-size:14px;color=#ff0000' align='center'>Ошибка подключения к базе данных, проверьте строку подключения к базе данных</div>
Ответ.Конец
Конец, если
'Этот класс выполняет код создания экземпляра без учета всех возможных условий подкачки. Эта категория предназначена только для справки.
'------------------------------------------------ - -------------------------------------------------
'PageNo-текущая страница;PageSizeX-размер страницы;PageCountX-общее количество страниц;FieldCount-общее количество записей;StrWhere-условия запроса
Уменьшить номер страницы, PageSizeX, PageCountX, FieldCount, StrWhere
'Выполнить задание
PageNo=trim(Request.Querystring(PageNo))
PageSizeX=30' определяет размер страницы.
if isnumeric(PageNo) или PageNo= then'Если значения страницы нет, инициализируйте значение
Номер страницы=abs(Номер страницы)
если Номер страницы=0, то Номер страницы=1
еще
Номер страницы=1
конец, если
StrWhere=(ClassCode=0101 and Hits>20)'Обратите внимание на длину символов здесь
set recom = server.createobject(adodb.command)
recom.activeconnection = Подключиться
recom.commandtype = 4
recom.commandtext = Класс_новости
recom.Parameters.Appendrecom.CreateParameter(@StrWhere,202,1,100,StrWhere)
recom.Parameters.Appendrecom.CreateParameter(@PageSize,3,1,,PageSizeX)
recom.Parameters.Appendrecom.CreateParameter(@PageIndex,3,1,,PageNo)
установить rs = recom.execute()
если rs.eof тогда
set rs=nothing: set recom=nothing: Conn.Close: set Conn=nothing
response.write <script LANGUAGE='javascript'>alert('В настоящее время запись не найдена, вернитесь и повторите попытку!');history.go(-1);</script>
ответ.конец
конец, если
'Отображать данные
делай, пока не rs.eof
response.write&rs(Title)& Добавить время:&rs(AddTime)&<br/>
rs.movenext
петля
'Получаем общее количество записей и вычисляем количество страниц
установить rs = rs.NextRecordset
если rs(countx) > 0, то
FieldCount=rs(countx)
еще
ФилдКаунт=0
конец, если
если (FieldCount мод PageSizeX)>0, то
PageCountX=((FieldCount - (FieldCount мод PageSizeX))/ PageSizeX)+1
еще
PageCountX= (FieldCount/PageSizeX)
конец, если
'Закрыть и освободить связанные ресурсы
set rs=nothing: set recom=nothing: Conn.Close: set Conn=nothing
'Показать пейджинг
если Номер страницы<=1, то
Response.Write <font color='#FF0000'>[Главная] [Предыдущая страница]</font>
еще
Response.Write[<a href='?PageNo=1' target='_self' title='Homepage'><font color='#FF0000'>Домашняя страница</font></a>]
Response.Write[<a href='?PageNo=&(PageNo-1)&' target='_self' title='Предыдущая страница'><font color='#FF0000'>Предыдущая страница</font>< /a >]
конец, если
если PageNo>=PageCountX, то
Response.Write <font color='#FF0000'>[следующая страница] [последняя страница]</font>
еще
Response.Write[<a href='?PageNo=&(PageNo+1)&'target='_self' title='Следующая страница'><font color='#FF0000'>Следующая страница</font>< /a >]
Response.Write[<a href='?PageNo=&PageCountX&' target='_self' title='Последняя страница'><font color='#FF0000'>Последняя страница</font></a>]
конец, если
Response.Write[Page <font color=red>&PageNo&</font>/total <font color=red> & PageCountX &</font>]
Response.Write [Всего<font color=red>&FieldCount&</font> элементов<font color=red>& PageSizeX & </font> элементов/страница]
Response.Write Перейти к & <input id=zhuanpage name=zhuanpage size=2 value=&PageNo&> & page <input type=submit value=Go onclick=gotoPage()>
Response.Write</td></tr></table>
Response.Write<script>function gotoPage(){var pg=document.getElementById('zhuanpage').value;if(isNaN(pg)||pg>&PageCountX&||pg<0){window.alert('Пожалуйста, будьте правильно Введите номер страницы, который может быть только положительным целым числом и не может быть больше, чем &PageCountX&');return! false;}else{window.location.href='?PageNo='+document.getElementById('zhuanpage').value+'';return true;}}</script>
%>
'------------------------------------------------ - ------ Следующий код представляет собой код хранимой процедуры
CREATE процедураNews_Class
--Информационные новости с миллионами страниц
(
@StrWhere varchar(100),
@PageSize целое число,
@PageIndexint
)
КАК
Declare@strSQLvarchar(2000) — основной оператор
Declare@strCountSQL varchar(2000) — основной оператор общей записи
объявлять@strTmpvarchar(1000) -- временная переменная
Set @strTmp = Select top + str(@PageSize) + Title,AddTime from Tb_News -- Обратите внимание, что для чтения нескольких полей необходимо несколько полей.
если @StrWhere<>''
Начинать
Установите @strSQL=@strTmp + где ID < (выберите min(ID) из (выберите top + str((@PageIndex-1)*@PageSize)+ ID из Tb_News Где +@StrWhere+order by ID desc)as tblTmp ) и +@StrWhere+ упорядочить по идентификатору
set @strCountSQL=select count(ID) как countx из Tb_News Где +@StrWhere+
Конец
еще
Начинать
Установите @strSQL=@strTmp + где ID < (выберите min(ID) из (выберите top + str((@PageIndex-1)*@PageSize)+ ID из Tb_News в порядке по идентификатору desc)as tblTmp ) в порядке по идентификатору desc
установите @strCountSQL=выберите счетчик (ID) как countx из Tb_News
Конец
если @PageIndex = 1
если @StrWhere<>''
Начинать
Установить @strSQL=@strTmp + Где +@StrWhere+ упорядочить по идентификатору
Конец
еще
Начинать
Установите @strSQL=@strTmp + порядок по идентификатору
Конец
исполнитель(@strSQL)
exec(@strCountSQL)
ИДТИ