Jump to content
Fórum Script Brasil
  • 0

Como Order Com Fso


ju_rezende
 Share

Question

9 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.8k
    • Total Posts
      646.6k
×
×
  • Create New...