<%
'Plataforma: Win2000+IIS5.0+Sql2000
'PS: A última versão foi atualizada. A última versão foi a versão SQL e nenhum procedimento armazenado foi usado.
'Versão anterior: [Original] Excelente código de paginação de dados de um milhão de níveis - (ocupado por muito tempo) (http://bbs.bccn.net/thread-175543-1-1.html)
'----------------------------------------------------------O código a seguir é o código da página da web
Resposta.Buffer = Verdadeiro
Dim SqlLocalName,SqlUsername,SqlPassword,SqlDatabaseName
Dim ConnStr,Conn
''''''''''''''''''''''''' Banco de dados SQL''''''''''''''' '''''' '''''''''''''''''''''''''''''''
SqlLocalName =(local)'IP de conexão [IP estrangeiro local (local)]
SqlUsername=sa 'Nome de usuário do banco de dados
SqlPassword=XXXXXX 'Senha do usuário
SqlDatabaseName=NewsTable 'Nome do banco de dados
ConnStr = Provider=Sqloledb;ID do usuário= & SqlUsername & ; Senha= & SqlPassword & ;
''''''''''''''''''''''''''''''''''''''' '''''''' ''''''''''''''''''''''''''''''''
Em caso de erro, retomar o próximo
Definir Conn=Server.CreateObject(ADODB.Connection)
Conn.open ConnStr
Se errar então
err.Limpar
SetConn=Nada
Response.Write <div style='font-size:14px;color=#ff0000' align='center'>Erro de conexão do banco de dados, verifique a string de conexão do banco de dados</div>
Resposta.Fim
Terminar se
'Esta classe executa código de instanciação sem levar em conta todas as condições possíveis para paginação. Esta categoria é apenas para referência
'------------------------------------------------ - -------------------------------------------------
'PageNo-página atual;PageSizeX-tamanho da página;PageCountX-número total de páginas;FieldCount-número total de registros;StrWhere-condições de consulta
Dim PageNo,PageSizeX,PageCountX,FieldCount,StrWhere
'Executar tarefa
PageNo=trim(Request.Querystring(PageNo))
PageSizeX=30' define o tamanho da paginação
if isnumeric(PageNo) ou PageNo= then'Se não houver valor de página, inicialize o valor
PáginaNo=abs(PáginaNo)
se PageNo=0 então PageNo=1
outro
Número da página = 1
terminar se
StrWhere=(ClassCode=0101 and Hits>20)'Observação, preste atenção ao comprimento dos caracteres aqui
definir recom = server.createobject(adodb.command)
recom.activeconnection = Conexão
recom.commandtype = 4
recom.commandtext=Notícias_Class
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)
definir rs = recom.execute()
se rs.eof então
definir rs = nada: definir recom = nada: Conn.Close: definir Conn = nada
response.write <script LANGUAGE='javascript'>alert('Nenhum registro encontrado atualmente, volte e tente novamente!');history.go(-1);</script>
resposta.fim
terminar se
'Exibir dados
faça enquanto não rs.eof
response.write&rs(Title)& Adicionar hora:&rs(AddTime)&<br/>
rs.movnext
laço
'Obtém o número total de registros e calcula o número de páginas
definir rs = rs.NextRecordset
se rs(contagemx) > 0 então
Contagem de Campos=rs(contagemx)
outro
Contagem de Campos=0
terminar se
if (FieldCount mod PageSizeX)>0 então
PageCountX=((FieldCount - (FieldCount mod PageSizeX))/ PageSizeX)+1
outro
PageCountX= (FieldCount / PageSizeX)
terminar se
'Fechar e liberar recursos relacionados
definir rs = nada: definir recom = nada: Conn.Close: definir Conn = nada
'Mostrar paginação
se PageNo<=1 então
Response.Write <font color='#FF0000'>[Home] [Página Anterior]</font>
outro
Response.Write[<a href='?PageNo=1' target='_self' title='Homepage'><font color='#FF0000'>Página inicial</font></a>]
Response.Write[<a href='?PageNo=&(PageNo-1)&' target='_self' title='Página anterior'><font color='#FF0000'>Página anterior</font>< /a >]
terminar se
se PageNo>=PageCountX então
Response.Write <font color='#FF0000'>[próxima página] [última página]</font>
outro
Response.Write[<a href='?PageNo=&(PageNo+1)&'target='_self' title='Próxima página'><font color='#FF0000'>Próxima página</font>< /a >]
Response.Write[<a href='?PageNo=&PageCountX&' target='_self' title='Última página'><font color='#FF0000'>Última página</font></a>]
terminar se
Response.Write[Página <font color=red>&PageNo&</font>/total <font color=red> & PageCountX &</font>]
Response.Write [Total<font color=red>&FieldCount&</font> itens<font color=red>& PageSizeX & </font> itens/página]
Response.Write Vá para & <input id=zhuanpage name=zhuanpage size=2 value=&PageNo&> & página <input type=submit value=Go onclick=gotoPage()>
Resposta.Write</td></tr></table>
Response.Write<script>função gotoPage(){var pg=document.getElementById('zhuanpage').value;if(isNaN(pg)||pg>&PageCountX&||pg<0){window.alert('Por favor, esteja correto Insira o número da página, que só pode ser um número inteiro positivo e não pode ser maior que &PageCountX&');return! false;}else{window.location.href='?PageNo='+document.getElementById('zhuanpage').value+'';return true;}}</script>
%>
'------------------------------------------------ - ------O código a seguir é o código do procedimento armazenado
CRIAR procedimentoNews_Class
--Notícias informativas paginação de um milhão de níveis
(
@StrOnde varchar(100),
@PageSizeint,
@PageIndexint
)
COMO
declare@strSQLvarchar(2000) -- instrução principal
declare@strCountSQL varchar(2000) -- instrução principal do registro total
declare@strTmpvarchar(1000) -- variável temporária
Set @strTmp = Select top + str(@PageSize) + Title,AddTime from Tb_News --Observe aqui que vários campos são necessários para ler vários campos
se @StrWhere<>''
Começar
Defina @strSQL=@strTmp + where ID < (select min(ID) from (select top + str((@PageIndex-1)*@PageSize)+ ID from Tb_News Where +@StrWhere+order by ID desc)as tblTmp ) e +@StrWhere+ ordenar por ID desc
defina @strCountSQL = selecione contagem (ID) como contagemx de Tb_News Onde +@StrWhere+
Fim
outro
Começar
Defina @strSQL=@strTmp + onde ID < (select min(ID) from (select top + str((@PageIndex-1)*@PageSize)+ ID from Tb_News order by ID desc)as tblTmp ) order by ID desc
defina @strCountSQL = selecione contagem (ID) como contagemx de Tb_News
Fim
se @PageIndex = 1
se @StrWhere<>''
Começar
Definir @strSQL=@strTmp + Where +@StrWhere+ ordenar por ID desc
Fim
outro
Começar
Definir @strSQL=@strTmp + ordenar por ID desc
Fim
exec(@strSQL)
exec(@strCountSQL)
IR