Ir para conteúdo
Fórum Script Brasil
  • 0

Como Order Com Fso


ju_rezende

Pergunta

9 respostass a esta questão

Posts Recomendados

  • 0

Achei um artigo interessante, espero que ajude!

http://www.imasters.com.br/artigo/2955/asp...ordset_virtual/

Ordenar dados com recordset virtual

Mauricio 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 FSO

Set 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 -> Data

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

Rs.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.Files

Rs.AddNew

Rs.Fields("nome").Value = Arquivo.Name

Rs.Fields("data").Value = Arquivo.DateLastModified

Next

"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.MoveFirst

While Not Rs.EoF

Response.Write "<img src=""images/" & rs.fields("nome").value & """><br>"

Response.Write "Data de Modificação: " & rs.fields("data").value

Response.Write "<p>"

Rs.MoveNext

Wend

"Fechando os objetos!

Rs.Close

Set Rs = Nothing

Set objPasta = Nothing

Set 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 Aniche

abraços

Link para o comentário
Compartilhar em outros sites

  • 0

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"

Link para o comentário
Compartilhar em outros sites

  • 0

Eu gostaria de ordernar em ordem crescente, pois minhas imagem estão com sequencia de números

1.jpg, 2.jpg etec, porém quando eu as exibo, ficam todas desordenadas

meu 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

Link para o comentário
Compartilhar em outros sites

  • 0

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á saindo

link da página

Meu 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 todos

pessoal 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 respectivamente

Será que tem outra solução de arrumar isso

Link para o comentário
Compartilhar em outros sites

  • 0

acredito que é coisa do windows essa ordenação pelo primeiro numero, na verdade ta correto...

mais é que tem que se organizado....

001

002

003

...

010

011

012

...

100

101

102

e assim por diante então tem que ter um padrão nos nomes também...

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...