Este artigo apresenta principalmente como exibir o PAGE do banco de dados ADO.
Como podemos pagar os resultados da consulta do banco de dados? Na verdade, existem muitas maneiras, mas existem duas maneiras principais:
1. Leia todos os registros no banco de dados que atendem às condições de consulta no RecordSet de uma só vez e armazene -os na memória. (Número da página) e AbsolutePage (página absoluta) para gerenciar o processamento de paginação.
2. De acordo com as instruções do cliente, o número especificado de registros deve ser lido e exibido a partir dos registros que atendem às condições de consulta a cada vez.
A principal diferença entre os dois é que o primeiro lê todos os registros na memória ao mesmo tempo e depois faz julgamentos e análises em sequência de acordo com as instruções para alcançar o efeito da exibição da paginação, enquanto o último faz julgamentos com base nas instruções e define o Número especificado para atender às condições de consulta.
Podemos achar claramente que quando o número de registros no banco de dados atingir dezenas de milhares ou mais, a eficiência da execução do primeiro método será significativamente menor que a do segundo método, porque quando todo cliente consultar a página, todos os resultados devem ser transferido. No entanto, quando o número de registros no banco de dados no servidor e o número de pessoas on -line ao mesmo tempo não são grandes, a eficiência da execução dos dois é quase a mesma. O programa ASP do primeiro método é relativamente escrito, o segundo método é muito mais simples e claro.
Aqui, o autor tomará nosso programa Common ASP BBS como um exemplo para analisar como implementar a função de exibição de paginação no programa BBS. Muitos.
A exibição da paginação quando o ADO acessa o banco de dados é realmente para operar os registros do RecordSet. Portanto, devemos primeiro entender as propriedades e métodos do objeto Reordset:
Atributo BOF: o indicador atual refere -se à primeira transação para o registro.
Atributo EOF: O indicador atual refere -se à última transação para o registro.
Método de movimentação: mova métricas para um registro no registro.
Propriedade AbsolutePage: Define o local atual do registro em que a página está localizada.
Propriedade do PageCount: exibe quantas páginas de dados um objeto RecordSet contém.
Pagesize Propriedade: Exibe o número de registros exibidos em cada página do objeto RecordSet.
Propriedade do RecordCount: exibe o número total de registros do objeto RecordSet.
Vamos dar uma olhada nesses atributos e métodos importantes
1. BOF e EOF Atributos
Geralmente, escrevemos o código em um programa ASP para verificar os atributos BOF e EOF para saber o local do registro apontado pelo indicador atual. A linha é o escopo do objeto RecordSet foi excedido.
Por exemplo: < %se não Rs.eof então ... %>
< % se não (Rs.BOF e Rs.eof) %>
Se a posição de registro atual for antes da primeira linha de um objeto RecordSet, a propriedade BOF retornará true, caso contrário, retornará falsa.
Se a posição de registro atual estiver após a última linha de um objeto RecordSet, a propriedade EOF retornará true, caso contrário, ele retornará falsa.
BOF e EOF são falsos: significa que o indicador está localizado no conjunto de registros.
O BOF é verdadeiro: o indicador atual refere -se ao primeiro registro ao registro. O EOF é verdadeiro: o indicador atual refere -se ao último registro ao registro.
BOF e EOF são verdadeiros: não há registro no registro.
2. Método de movimentação
Você pode usar o método de movimentação para mover métricas para um registro no registro, com a sintaxe da seguinte maneira:
rs.move numRecords, start
Aqui, é uma variável de objeto, indicando um objeto RecordSet que deseja se mover quando a posição de registro atual; a tag de partida.
Todos os objetos registrados suportam o método de movimentação. Método, o erro será gerado.
Método Movefirst: Mova a posição de registro atual para o primeiro registro.
Método MoveLast: Mova a posição de registro atual para o último registro.
Método Movenext: Mova a posição de registro atual para o próximo registro. MOVILHO MOVEPEIRIO: Mova a posição de registro atual para o registro anterior.
MOVE [N] Método: Mova o índice para o enésimo registro da caneta, n começa em 0.
3. Atributos AbsolutePage
A propriedade AbsolutePage define o número da página de páginas em que página está localizada; Pagesize registros). Deve -se notar aqui que nem todos os provedores de dados suportam essa propriedade; portanto, tenha cuidado ao usá -lo.
O mesmo que a propriedade AbsolutePosition, a propriedade AbsolutePage começa com 1. Se o registro atual for a primeira linha do registro, o AbsolutePage será 1. A propriedade AbsolutePage pode ser definida para passar para a primeira posição de registro da linha de uma página especificada.
4. Propriedade da Absosidade Absos
Se você precisar determinar a localização atual da métrica no registro, poderá usar a propriedade AbsolutePosition.
O valor da propriedade AbsolutePosition é a posição do indicador atual em relação à primeira transação, que começa em 1, ou seja, a absoluta deposição da primeira transação é 1.
Observe que, ao acessar os registros, não há garantia de que os registros apareçam na mesma ordem todas as vezes.
Para ativar a absoluta, você deve primeiro configurá -lo para usar o cursor do usuário (ponteiro), e o código ASP é o seguinte:
rs2.cursorlocation = 3
5. Propriedade de PageCount
Use a propriedade PageCount para determinar quantas páginas de dados um objeto RecordSet contém. A página aqui é uma coleção de registros de dados e seu tamanho é igual à configuração da propriedade PageSize. . Deve -se notar que nem todos os provedores de dados suportam essa propriedade.
6. Pagesize Property
A propriedade PageSize é a chave para determinar quão paginatos de ADO Ao acessar bancos de dados. Define e cria um tamanho de página, permitindo que a propriedade AbsolutePage seja movida para o primeiro registro de outras páginas lógicas. A propriedade PageSize pode ser definida a qualquer momento.
7. Propriedade do registro
Esta também é uma propriedade muito comum e importante. Por exemplo: < %TOTLE = Rs.RecordCount %>
Depois de entender as propriedades e métodos acima dos objetos RecordSet, vamos considerar como usá -los para alcançar o objetivo de nossa exibição de paginação. Primeiro, podemos definir um valor para a propriedade PageSize, especificando assim o número de linhas que constituem uma página retirada do grupo de registros; Para obter o número total da página exibida; Parece muito complicado.
Criamos um aplicativo BBS tão simples, que possui os cinco campos em seu banco de dados: ID, número automático de cada postagem; tempo de postagem. O DSN do banco de dados é BBS. Colocamos todas as etapas na exibição de Post Paging em um processo chamado Showlist () para facilitar a chamada. O procedimento é o seguinte:
?
- '---- bbs exibe pós-paging ---
- <%SubShowlist ()%>
- <%
- PGSZ = 20 'Chave de configuração, especifique o número de postagens exibidas em cada página, o padrão é de 20 postagens por página
- SetConn = server.createObject (adodb.connection)
- Setrs = server.createObject (adodb.recordset)
- SQL = Selecione*FromMessageOrderByIdDesc
- 'Consulte todas as postagens e organize -as em ordem inversa por pós -identificação
- Conn.Openbbs
- Rs.opensql, Conn, 1,1
- Ifrs.recordCount = 0then
- Response.write <p> <Center> Desculpe, não há informações relevantes no banco de dados! </central> </p>
- outro
- Rs.pagesize = cint (pgsz) 'Defina o valor da propriedade PageSize
- Total = int (rs.recordCount/pgsz*-1)*-1'Calcular o número total de páginas que podem ser exibidas
- Pageno = solicitação (pageno)
- ifpageno = então
- Pageno = 1
- outro
- Pageno = pageno+1
- Pageno = Pageno-1
- endif
- Scrollaction = Solicitação (rolagem)
- ifScrollaction = Página anterior então
- Pageno = Pageno-1
- endif
- ifScrollaction = Próxima página Então
- Pageno = pageno+1
- endif
- ifpageno <1THEN
- Pageno = 1
- endif
- n = 1
- Rs.absolutePage = pageno
- Response.Write <Center>
- posição = rs.pagesize*pageno
- PageBegin = POSITION-RS.PAGESIZE+1
- ifPosition <rs.RecordCountThen
- pagend = posição
- outro
- pagend = Rs.RecordCout
- endif
- Response.write <p> <fontcolor = 'Navy'> <b> Consulta de consulta de banco de dados: </b>
- Response.write (há um total de & rs.recordCount e informações que atendem às condições, exibição e pagebegin &-& pagend &) </font> </p>
- Response.write <tablewidth = 600border = 1CellPadding = 4Cellspacing = 0BGColor =#ffffff>
- Response.Write <trbgcolor =#5fb5e2> <fontsize = 2> <td> <b> tema </b> </td> <td> <b> usuários </b> </td> <td> <b> Email </b> </td> <td> <b> Data publicada </b> </td> </font> <trbgcolor =#ffffff>
- Dowhilenot (rsisnothing)
- RowCount = Rs.Pagesize
- Dowhilenotrs.eofandrowcount> 0
- Ifn = 1then
- Response.write <trbgcolor =#ffffff>
- OUTRO
- Response.write <trbgcolor =#eeeee>
- Endif
- n = 1-n%>
- <td> <spanStyle = font-size: 9pt> <ahref = 'view.asp? Key = <%= rs (id)%>'> <%= rs (sujeito)%> </a> </span> </td>
- <td> <spanStyle = font-size: 9pt> <%= rs (nome)%> </a> </span> </td>
- <td> <spanStyle = font-size: 9pt> <ahref = Mailto: <%= rs (email)%>> <%= rs (email)%> </a> </span> </td>
- <Td> <SpanStyle = Fonte-Size: 9pt> <%= RS (PostDate)%> </span> </td>
- </tr>
- <%
- RowCount = RowCount-1
- Rs.movenext
- Laço
- setrs = rs.nextrecordset
- Laço
- Conn.Close
- setrs = nada
- setConn = nada
- %>
- </Tabela>
- <Formmethod = getAction = list.asp>
- <InputType = hiddenname = pagenovalue = <%= pageno%>>
- <%
- ifpageno> 1hen
- Response.Write <inputType = submitname = 'scrollaction'Value =' Página anterior '>
- endif
- ifrowCount = 0AndPageno <> total
- Response.write <inputType = submitname = 'scrollaction'Value =' Próxima página '>
- endif
- Response.write </morm>
- Endif
- %>
- <%Endub%>