Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rd111072

[Resolvido] Paginação com recordset virtual

Recommended Posts

Bom dia, moçada.

 

Estou tentando fazer uma paginação com de arquivos pegos com FSO e listados com um Recorset virtual.

 

Os downloads dos arquivos estão funcionando e os botões (anterior e próxima) da paginação também.

 

Só que está lsitando apenas os dez primeiros itens nas páginas seguintes. Teria de ser, primeira página; itens 1-10. segunda pág.: itens 11-20... E por aí vai.

 

Alguém sabe o que pode estar errado?

 

O código segue abaixo:

 

<%Session.LCID = 1046%>

<% 
'Declara as variáveis a serem usadas
Dim objPasta, Folder, Files, ObjFSO, objRootFolder 
'Primeiro vamos abrir um objeto FSO
Set objFSO = Server.CreateObject ( "Scripting.FileSystemObject" )
'Agora pegamos a pasta com as imagens!
Set objPasta = objFSO.GetFolder ( Server.Mappath("pasta\") )

Set objFolder = ObjFSO.GetFolder(objPasta)

'Vamos criar um recordset agora!
'Ele que vai ter o trabalho de ordenar os arquivos!
Set Rs = Server.CreateObject ( "ADODB.RecordSet" )

Rs.PageSize = 10

Rs.Fields.Append "nome", 200, 255
Rs.Fields.Append "data", 7

Rs.Open

Response.Write "<table border='1' bordercolor='#00CCCC' cellpadding=2 cellspacing=0 width='70%' style='font-family: Tahoma, Arial; font-size: 11px; color:#666666' align='center'>"
Response.Write " <tr style='background: #00CCCC'>"
Response.Write " <td><b>Arquivo</b></td>"
Response.Write " <td><b>Data</b></td>"
Response.Write " <td><b>Download</b></td>"
Response.Write " </tr>"

'Temos que percorrer agora todos os arquivos e jogar na nossa tabela virtual!
For Each Arquivo In ObjPasta.Files

Rs.AddNew 
Rs.Fields("nome").Value = Arquivo.Name
Rs.Fields("data").Value = Arquivo.DateLastModified

Next

IF Rs.EOF then	
Response.Write "nenhum registro encontrado"   
Response.End 
ELSE	  
IF Request.QueryString("pagina")="" then	   
intpagina=1	
ELSE	  
IF cint(Request.QueryString("pagina"))<1 then
intpagina=1	  
ELSE		 
IF cint(Request.QueryString("pagina"))> Rs.PageCount then
intpagina=Rs.PageCount		  
ELSE			 
intpagina=Request.QueryString("pagina")		 
END IF	  
END IF   
END IF
END IF
Rs.AbsolutePage=intpagina
intrec=0
'Todos os arquivos no recordset, agora vamos ordená-lo!
'Da maior data para a menor!
Rs.Sort = "data desc"
Rs.Movefirst
While intrec < Rs.PageSize and not Rs.EOF

Response.Write " <tr>"
Response.Write "<td class='espacamento'><img src='86.gif'>" & rs.fields("nome").value & "</a></td>"
Response.Write "<td align='center'>" & rs.fields("data").value & "</td>"
Response.Write " <td align='center'><a href='tiss_download.asp?path="& objPasta &"\&arquivo="& rs.fields("nome").value & "'>Download</a></td>"
Response.Write "</tr>"

Rs.MoveNext
intrec=intrec+1 
IF RS.EOF then	   
response.write " "	
END IF
Wend

IF intpagina > 1 then %>	
<a  href="tissdownload4.asp?pagina=<%=intpagina-1%>"><span style="font-family:Arial, Helvetica, sans-serif; font-size:12px">Anterior</span></a> 
<% END IF
IF strcomp(intpagina,Rs.PageCount) <> 0 then %>	
<a href="tissdownload4.asp?pagina=<%=intpagina + 1%>"><span style="font-family:Arial, Helvetica, sans-serif; font-size:12px">Próxima</span></a> 

<% END IF
Rs.Close
Set Rs = Nothing

Set objPasta = Nothing
Set objFSO = Nothing%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Está exibindo corretamente sem a paginação?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente jogar as definições da paginação para depois de ter feito as inserções em seu RecordSet. Use também a propriedade PageCount para saber o numero total de páginas existentes em seu RecordSet.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Moçada,

 

consegui fazer funcionar simplesmente removendo estas linhas:

 

Rs.Sort = "data desc"

Rs.Movefirst

 

Só que agora não está mais ordenado por data, o que seria prioritário, nesse caso.

 

como posso ordenar, ou melhor como utilizo Rs.Sort = "data desc" sem ferrar a paginação???

Compartilhar este post


Link para o post
Compartilhar em outros sites

resolvi!

 

ficou assim:

 

<%Session.LCID = 1046%>

<% 
'Declara as variáveis a serem usadas
Dim objPasta, Folder, Files, ObjFSO, objRootFolder 
'Primeiro vamos abrir um objeto FSO
Set objFSO = Server.CreateObject ( "Scripting.FileSystemObject" )
'Agora pegamos a pasta com as imagens!
Set objPasta = objFSO.GetFolder ( Server.Mappath("pasta\") )

Set objFolder = ObjFSO.GetFolder(objPasta)

'Vamos criar um recordset agora!
'Ele que vai ter o trabalho de ordenar os arquivos!
Set Rs = Server.CreateObject ( "ADODB.RecordSet" )



Rs.Fields.Append "nome", 200, 255
Rs.Fields.Append "data", 7

Rs.Open
Rs.Sort = "data desc"

Response.Write "<table border='1' bordercolor='#00CCCC' cellpadding=2 cellspacing=0 width='70%' style='font-family: Tahoma, Arial; font-size: 11px; color:#666666' align='center'>"
Response.Write " <tr style='background: #00CCCC'>"
Response.Write " <td><b>Arquivo</b></td>"
Response.Write " <td><b>Data</b></td>"
Response.Write " <td><b>Download</b></td>"
Response.Write " </tr>"

'Temos que percorrer agora todos os arquivos e jogar na nossa tabela virtual!
For Each Arquivo In ObjPasta.Files

Rs.AddNew 
Rs.Fields("nome").Value = Arquivo.Name
Rs.Fields("data").Value = Arquivo.DateLastModified

Next

IF Rs.EOF then	
Response.Write "nenhum registro encontrado"   
Response.End 
ELSE	  
IF Request.QueryString("pagina")="" then	   
intpagina=1	
ELSE	  
IF cint(Request.QueryString("pagina"))<1 then
intpagina=1	  
ELSE		 
IF cint(Request.QueryString("pagina"))> Rs.PageCount then
intpagina=Rs.PageCount		  
ELSE			 
intpagina=Request.QueryString("pagina")		 
END IF	  
END IF   
END IF
END IF
Rs.AbsolutePage=intpagina
intrec=0
'Todos os arquivos no recordset, agora vamos ordená-lo!
'Da maior data para a menor!
Rs.PageSize = 10
'Rs.Sort = "data desc"
'Rs.Movefirst
While intrec < Rs.PageSize and not Rs.EOF

Response.Write " <tr>"
Response.Write "<td class='espacamento'><img src='86.gif'>" & rs.fields("nome").value & "</a></td>"
Response.Write "<td align='center'>" & rs.fields("data").value & "</td>"
Response.Write " <td align='center'><a href='tiss_download.asp?path="& objPasta &"\&arquivo="& rs.fields("nome").value & "'>Download</a></td>"
Response.Write "</tr>"

Rs.MoveNext
intrec=intrec+1 
IF RS.EOF then	   
response.write " "	
END IF
Wend

IF intpagina > 1 then %>	
<a  href="tissdownload4.asp?pagina=<%=intpagina - 1%>"><span style="font-family:Arial, Helvetica, sans-serif; font-size:12px">Anterior</span></a> 
<% END IF
IF strcomp(intpagina,Rs.PageCount) <> 0 then %>	
<a href="tissdownload4.asp?pagina=<%=intpagina + 1%>"><span style="font-family:Arial, Helvetica, sans-serif; font-size:12px">Próxima</span></a> 

<% END IF
Rs.Close
Set Rs = Nothing

Set objPasta = Nothing
Set objFSO = Nothing%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.