Эта статья в основном представляет, как отображать подготовку базы данных ADO.
Как мы можем нанести на стражу результаты запроса базы данных? На самом деле есть много способов, но есть два основных способа:
1. Прочитайте все записи в базе данных, которые соответствуют условиям запроса в сфере записей и храните их в памяти. (Номер страницы) и AbsolutePage (Absolute Page) для управления обработкой пейджинга.
2. Согласно инструкциям клиента, указанное количество записей должно быть зачитано и отображается из записей, которые каждый раз соответствуют условиям запроса.
Основное различие между ними заключается в том, что первое считывает все записи в память одновременно, а затем выносит суждения и анализ в последовательности в соответствии с инструкциями по достижению эффекта дисплея лиц, в то время как последний выносит суждения на основе инструкций и устанавливает Указанное число для соответствия условиям запроса.
Мы можем четко чувствовать, что когда количество записей в базе данных достигает десятков тысяч или более, эффективность выполнения первого метода будет значительно ниже, чем у второго метода, потому что, когда каждый клиент запрашивает страницу, все результаты должны передаваться. Однако, когда количество записей в базе данных на сервере и количество людей в Интернете одновременно невелико, эффективность выполнения двух. Программа ASP первого метода относительно написана. Второй метод намного проще и ясен.
Здесь автор примет нашу общую программу ASP BBS в качестве примера для анализа, как реализовать функцию отображения страниц в программе BBS. Слишком много.
Дисплей на страницах, когда ADO обращается к базе данных, на самом деле для работы записей записей. Поэтому мы должны сначала понять свойства и методы объекта Reordset:
Атрибут BOF: текущий индикатор относится к первой транзакции в сетевой набор записей.
Атрибут EOF: текущий индикатор относится к последней транзакции в набор записей.
Метод перемещения: перемещать метрики в запись в наборе записей.
Свойство AbsolutePage: Устанавливает текущее местоположение записи, на которой находится страница.
Свойство Pagecount: отображает, сколько страниц данных содержит объект записи.
Свойство Pagesize: отображает количество записей, отображаемых на каждой странице объекта записи.
Свойство RecordCount: отображает общее количество записей объекта записи.
Давайте подробнее рассмотрим эти важные атрибуты и методы
1. Атрибуты BOF и EOF
Обычно мы пишем код в программе ASP, чтобы проверить атрибуты BOF и EOF, чтобы узнать местоположение записей, указанное текущим индикатором. Линия является областью объема объекта Recordset была превышена.
Например: < %, если не rs.eof, то ... %>
< %, если нет (rs.bof и rs.eof) %>
Если текущая позиция записи находится перед первой строкой объекта записи, свойство BOF возвращает true, в противном случае оно возвращает false.
Если текущая позиция записи находится после последней строки объекта записи, свойство EOF возвращает true, в противном случае оно возвращает false.
И BOF, и EOF являются ложными: означает, что индикатор находится в наборе записей.
BOF это правда: текущий индикатор относится к первой записи в сетере Record. EOF верно: текущий индикатор относится к последней записи к набору записи.
И BOF, и EOF верны: в наборе записей нет записей.
2. Метод перемещения
Вы можете использовать метод перемещения для перемещения метрик в запись в наборе записи, с синтаксисом следующим образом:
Rs.Move NumRecords, Start
Здесь RS является переменной объекта, указывающая объект записи, который хочет перемещаться, когда текущая позиция записи; стартовый тег.
Все объекты записи поддерживают метод перемещения. Метод, ошибка будет сгенерирована.
Метод перемещения FIRST: переместите позицию текущей записи в первую запись.
Метод Movelast: переместите текущую позицию записи в последнюю запись.
Метод Movenext: переместите текущую позицию записи в следующую запись. MovePrevious Метод: переместите текущую позицию записи в предыдущую запись.
Move [n] Метод: переместить индекс в N -й Pen Record, N начинается с 0.
3. Абсолютные атрибуты
Свойство AbsolutePage устанавливает номер страницы, на которых находится страница; Pageize Records). Здесь следует отметить, что не все поставщики данных поддерживают это свойство, поэтому будьте осторожны при использовании его.
То же самое, что и свойство абсолюции, свойство AbsolutePage начинается с 1. Если текущая запись является первой строкой набора записей, AbsolutePage составляет 1. Свойство AbsolutePage может быть установлено для перемещения в позицию записи первой строки указанной страницы.
4. Собственность абсолюции
Если вам нужно определить текущее местоположение метрики в наборе записей, вы можете использовать свойство AbsolutePosition.
Значение свойства абсолюции является позицией текущего индикатора относительно первой транзакции, которая начинается с 1, то есть абсолютное зацепление первой транзакции составляет 1.
Обратите внимание, что при доступе к Recordsets нет никакой гарантии, что Recordsets будет отображаться в одном и том же порядке каждый раз.
Чтобы включить абсолютное разложение, вы должны сначала установить его для использования курсора пользователя (указателя), а код ASP заключается в следующем:
rs2.cursorlocation = 3
5. Pagecount Property
Используйте свойство Pagecount, чтобы определить, сколько страниц данных содержит объект записи. Страница здесь представляет собой набор записей данных, и ее размер равен настройке свойства PageSize. Полем Следует отметить, что не все поставщики данных поддерживают это свойство.
6. PageSize Property
Свойство Pageize - это ключ к определению того, как Ado Paginates при доступе к базам данных. Устанавливает и создает размер страницы, позволяя перемещать свойство AbsolutePeage в первую запись других логических страниц. Свойство Pagesize может быть установлено в любое время.
7. собственность записи
Это также очень распространенное и важное свойство. Например: < %totle = rs.recordcount %>
После понимания вышеупомянутых свойств и методов объектов записи, давайте рассмотрим, как использовать их для достижения цели нашего листового дисплея. Во -первых, мы можем установить значение для свойства PageSize, тем самым указав количество строк, которые составляют страницу, взятую из группы записей; Чтобы получить общее количество отображаемой страницы; Это кажется очень сложным.
Мы создали такое простое приложение BBS, которое имеет следующие пять полей в своей базе данных: ID, автоматическое число каждого поста; время публикации. DSN базы данных - BBS. Мы разместили все шаги в отображении Post Paging в процессе Showlist () для легкого вызова. Процедура заключается в следующем:
?
- '---- BBS отображает Post Paging ---
- <%Subshowlist ()%>
- <%
- PGSZ = 20 'Переключатель настроек, укажите количество сообщений, отображаемых на каждой странице, по умолчанию - 20 сообщений на страницу
- SetConn = server.createObject (adodb.connection)
- Setrs = server.createObject (adodb.recordset)
- SQL = SELECT*OFMESSAGEORDORDBYIDDESC
- 'Запрос всех сообщений и расположить их в обратном порядке по идентификатору сообщения
- Conn.openbbs
- Rs.opensql, Conn, 1,1
- Ifrs.recordcount = 0then
- response.write <p> <Center> Извините, в базе данных нет соответствующей информации! </center> </p>
- еще
- Rs.pearsize = cint (pgsz) 'Установите значение свойства PageSize
- Total = int (rs.recordCount/pgsz*-1)*-1'scalculate общее количество страниц, которые можно отобразить
- Pageno = запрос (pageno)
- ifpageno = then
- Pageno = 1
- еще
- Pageno = pageno+1
- Pageno = pageno-1
- эндиф
- SCROLLACTE = запрос (SCROLLACTION)
- ifscrollaction = предыдущая страница
- Pageno = pageno-1
- эндиф
- ifscrollaction = следующая страница
- Pageno = pageno+1
- эндиф
- Ifpageno <1then
- Pageno = 1
- эндиф
- n = 1
- Rs.absolutepage = pageno
- Response.write <Center>
- Положение = Rs.PAGESIZE*PAGENO
- pagebegin = position-rs.pagesize+1
- ifposition <rs.recordcountthen
- Pagend = позиция
- еще
- pagend = rs.recordcout
- эндиф
- Response.write <p> <fontcolor = 'Navy'> <b> Результаты запроса базы данных: </b>
- Response.write (в общей сложности и rs.recordcount & offica, которые соответствуют условиям, дисплею и Pagebegin &-& pagend &) </font> </p>
- Response.write <tablewidth = 600border = 1cellpadding = 4cellspacing = 0bgcolor =#ffffff>
- Response.write <trbgcolor =#5fb5e2> <fontsize = 2> <td> <b> theme </b> </td> <td> <b> пользователи </b> </td> <td> <b> Электронная почта </b> </td> <td> <b> опубликованная дата </b> </td> </font> <trbgcolor =#ffffff>
- Dowhilenot (Rsisnothing)
- RowCount = rs. -PageSize
- Dowhilenotrs.eofandrowcount> 0
- Ifn = 1then
- Response.write <trbgcolor =#ffffff>
- ЕЩЕ
- Response.write <trbgcolor =#eeeee>
- Эндиф
- n = 1-n%>
- <td> <spanstyle = font-size: 9pt> <ahref = 'view.asp? Key = <%= rs (id)%>'> <%= rs (субъект)%> </a> </span> </td>
- <td> <spanstyle = font-size: 9pt> <%= rs (имя)%> </a> </span> </td>
- <td> <plstyle = font-size: 9pt> <ahref = mailto: <%= rs (электронная почта)%>> <%= rs (электронная почта)%> </a> </span> </td>
- <td> <spanstyle = font-size: 9pt> <%= rs (postdate)%> </span> </td>
- </Tr>
- <%
- RowCount = RowCount-1
- Rs.movenext
- Петля
- setrs = rs.nextrecordset
- Петля
- Conn.close
- setrs = ничего
- setConn = ничего
- %>
- </Table>
- <Formmethod = getAction = list.asp>
- <InputType = hiddenname = pagenovalue = <%= pageno%>>
- <%
- Ifpageno> 1then
- response.write <inputtype = oppername = 'scrollaction'value =' предыдущая страница '>
- эндиф
- ifrowcount = 0andpageno <> otton
- response.write <inputtype = oppername = 'scollaction'value =' следующая страница '>
- эндиф
- response.write </form>
- Эндиф
- %>
- <%Endsub%>