ju_rezende Postado Agosto 3, 2007 Denunciar Share Postado Agosto 3, 2007 Olá pessoal, tenho uma lista de arquivos, onde os mesmos acesso pelo fso, gostaria de saber se é possivel ordena-los quando os mesmos forem exibido na tela por ordem alfabética.Agradeço a atenção de todos e um abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fercosmig Postado Agosto 3, 2007 Denunciar Share Postado Agosto 3, 2007 Achei um artigo interessante, espero que ajude!http://www.imasters.com.br/artigo/2955/asp...ordset_virtual/Ordenar dados com recordset virtualMauricio Aniche (e-mail) trabalha com desenvolvimento WEB desde 2001, focando em e-commerce e utilizando tecnologias como ASP e PHP.Olá pessoal! Hoje eu vou falar de um problema que me surgiu quando eu estava desenvolvendo um site há alguns anos atrás.O cliente pediu uma galeria, onde as fotos fossem listadas por ordem de inserção, ou seja, a última foto enviada para o ar deveria ser a primeira a aparecer. Até aí, o sistema já estava no ar. Uma solução óbvia era guardar o nome das fotos num banco de dados, junto com a data, e só ordenar depois. Mas eu não queria criar uma tabela só para guardar datas! Então fui ler a documentação do FSO (File System Object), componente de manipulação de arquivos. Ele deve ter alguma propriedade em que você selecione a ordenação!Foram 2 semanas, lendo todas as documentações possíveis sobre FSO. E não achei nada! E quando eu já estava pronto para jogar todos esses dados num banco de dados, achei um artigo americano que explicava como ordenar esses dados "de uma outra maneira". E é essa que eu vou mostrar!Qual a idéia do script? Criar um recordset virtual e jogar os arquivos e suas datas, e depois ordenar! Bom, pelo menos não vamos ter o trabalho de criar uma tabela só pra isso, e nem vamos precisar programar essa ordenação! Deixe que o Recordset ordene!Bom, mãos à obra! Vamos supor que nós temos um diretório images, com diversas imagens! E queremos listar elas da mais recente para a mais antiga.OrdenaImagensPorDataDeModificacao.asp:----<%"Primeiro vamos abrir um objeto FSOSet objFSO = Server.CreateObject ( "Scripting.FileSystemObject" )"Agora pegamos a pasta com as imagens!Set objPasta = objFSO.GetFolder ( Server.Mappath("images\") )"Vamos criar um recordset agora!"Ele que vai ter o trabalho de ordenar os arquivos!Set Rs = Server.CreateObject ( "ADODB.RecordSet" )"Vamos adicionar 2 campos nesse recordset!"O método Append recebe 3 parâmetros:"Nome do campo, Tipo, Tamanho (opcional)"O tipo pertence à um DataTypeEnum, e você pode conferir os tipos em"http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdcstdatatypeenum.asp"200 -> VarChar (String), 7 -> DataRs.Fields.Append "nome", 200, 255Rs.Fields.Append "data", 7"Vamos abrir o Recordset!Rs.Open"Temos que percorrer agora todos os arquivos e jogar na nossa tabela virtual!For Each Arquivo In ObjPasta.FilesRs.AddNewRs.Fields("nome").Value = Arquivo.NameRs.Fields("data").Value = Arquivo.DateLastModifiedNext"Todos os arquivos no recordset, agora vamos ordená-lo!"Da maior data para a menor!Rs.Sort = "data desc""Pronto! Agora temos os arquivos todos em ordem em nosso recordset! Vamos exibi-los!Rs.MoveFirstWhile Not Rs.EoFResponse.Write "<img src=""images/" & rs.fields("nome").value & """><br>"Response.Write "Data de Modificação: " & rs.fields("data").valueResponse.Write "<p>"Rs.MoveNextWend"Fechando os objetos!Rs.CloseSet Rs = NothingSet objPasta = NothingSet objFSO = Nothing%>----Pronto! Exibimos as imagens por ordem de data!Não é o modo mais eficiente, pois temos que jogar todas as imagens num Recordset, o que gasta muita memória do servidor, dependendo da quantidade de arquivos, mas até agora foi a melhor solução que eu encontrei para o problema! Se alguém conhecer outra, mande pra mim!!Bom, se alguém quiser ler a documentação do FSO, ela é muito interessante e te dará uma base conceitual muito forte. Você encontra neste link. E se quiserem ler um site sobre FSO, ainda melhor que a documentação da Microsoft, entrem em http://www.sloppycode.net/Reference/FSO/ !Até a próxima!Creditos Mauricio Anicheabraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 bareta Postado Agosto 6, 2007 Denunciar Share Postado Agosto 6, 2007 muito bom... o artigo Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ju_rezende Postado Agosto 8, 2007 Autor Denunciar Share Postado Agosto 8, 2007 OLÁ PESSOAL, TENHO AS IMAGENS NÃO COM DATA, MAS SIM COM NUMEROS 1, 2, 3, 4, RESPECTIVAMENTE, PORÉM NÃO CONSEGUI FAZER FUNCIONAR DE FONFORME O POST ACIMA, SERÁ QUE ALGUÉM PODERIA ME DAR UMA AJUDINHAaBRAÇOS A TODOS Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fercosmig Postado Agosto 9, 2007 Denunciar Share Postado Agosto 9, 2007 posta o seu código aquiabraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 bareta Postado Agosto 9, 2007 Denunciar Share Postado Agosto 9, 2007 de acordo com o codigo acima é so mudar"Todos os arquivos no recordset, agora vamos ordená-lo! "Da maior data para a menor! Rs.Sort = "data desc" para "Todos os arquivos no recordset, agora vamos ordená-lo! "Da maior data para a menor! Rs.Sort = "nome desc" Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ju_rezende Postado Agosto 9, 2007 Autor Denunciar Share Postado Agosto 9, 2007 Eu gostaria de ordernar em ordem crescente, pois minhas imagem estão com sequencia de números1.jpg, 2.jpg etec, porém quando eu as exibo, ficam todas desordenadasmeu código<% Set Fso= CreateObject("scripting.FileSystemObject") Set pasta = Fso.getfolder(server.MapPath("madeirajanela/")) contador=0 For each arq in pasta.files if (contador mod 2)=0 then response.write "</tr>" response.write "<td>" end if %> <td width=""> <div align="center"> <%nomeArquivo=arq.name %> <%nomeArquivo1=Instr(nomeArquivo,".") <%=Mid(nomeArquivo,1,nomeArquivo1-1)%></br> <img src="madeirajanela/<%=nomeArquivo%>" border=0><br/><br/> </div> </div> </td> <% contador=contador+1 Next%>Obridada pela atenção de todos Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Agosto 9, 2007 Denunciar Share Postado Agosto 9, 2007 então troque o desc por asc. ou tire o desc que da no mesmo:Rs.Sort = "nome" Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ju_rezende Postado Agosto 10, 2007 Autor Denunciar Share Postado Agosto 10, 2007 olá pessoal estou tentando ordenar as imagens em ordem crescente, mas não está funcionando, alguém poderia analizar meu código?Veja como está saindolink da páginaMeu código <% Set Fso= CreateObject("scripting.FileSystemObject") Set pasta = Fso.getfolder(server.MapPath("aluminioporta/")) Set Rs = Server.CreateObject ( "ADODB.RecordSet" ) Rs.Fields.Append "nome", 200, 255 Rs.Open For Each Arquivo In pasta.Files Rs.AddNew Rs.Fields("nome").Value = Arquivo.Name Next Rs.Sort = "nome asc" contador=0 While Not Rs.EoF if (contador mod 2)=0 then response.write "</tr>" response.write "<td>" end if%> <td width=""> <div align="center"> <% nomeArquivo=rs.fields("nome").value nomeArquivo1=Instr(nomeArquivo,".") 'response.write nomeArquivo1%> <%=Mid(nomeArquivo,1,nomeArquivo1-1)%></br> <%'response.write nomeArquivo Response.Write "<img src=""aluminioporta/" & rs.fields("nome").value & """><br>"%> </div> </div> </td> <%contador=contador+1%> <%Rs.MoveNext%> <%Wend 'Fechando os objetos! Rs.Close Set Rs = Nothing %>Obrigada pela atenção de todospessoal entendi o que ele está fazende, ele coloca em ordem crescente da seguinte forma, primeiro tudo que comoça com uma, depois tudo que começa com dois, e assim respectivamenteSerá que tem outra solução de arrumar isso Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 bareta Postado Agosto 10, 2007 Denunciar Share Postado Agosto 10, 2007 acredito que é coisa do windows essa ordenação pelo primeiro numero, na verdade ta correto...mais é que tem que se organizado....001002003...010011012...100101102e assim por diante então tem que ter um padrão nos nomes também... Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
ju_rezende
Olá pessoal, tenho uma lista de arquivos, onde os mesmos acesso pelo fso, gostaria de saber se é possivel ordena-los quando os mesmos forem exibido na tela por ordem alfabética.
Agradeço a atenção de todos e um abraço
Link para o comentário
Compartilhar em outros sites
9 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.