Just nu i M3-nätverket
Gå till innehåll

Hjälp med att lösa Sortera i filesystemobject


gelki

Rekommendera Poster

Jag undrar om det är någon som kan sätta ihop nedanstående kod så fillistan sorteras efter fil typ. Just nu visar den bara slumpmässigt lista på alla associerade filer. Koden nedan hämtar alla filer i en mapp men filer som ingår i en specifik artikel. T.ex om vi har en produkt som har arrtikelnr 1234 så ska alla associerade filer som börjar på 1234 hämta och presentera desa filer i en sorterad lista efter namn.

T.ex kan en fil som ligger i den mappen heta: 1234_Instruktioner.pdf

underscore "_" efter artikelnummer blir en sorts splitter. Vitsen med detta system är att kunna ha vilken filändelse som helst i systemet. Man ska kunna lägga ut vilken filtyp som helst. Ja just nu så av select listan så framgår de att bara några filtyper har en ikon associerad med filtypen. Men det är ju7 bara att utöka. Så Problemet här är en ordnad lista efter filtyp. Är det 3 st excel filer så ska ju dessa vara grupperade för sig. O.s.v .

 

 

 

 

'#- Hämta filer som är ssoccierade med artikelnummer -#
'#- Om inte inloggad skydda dessa -#
Whichfolder=server.mappath("\") &"../productfiles/"  
'Dim fsq, fx, f1, fc  
Set fsq = CreateObject("Scripting.FileSystemObject")  
Set fx = fsq.GetFolder(Whichfolder)  
Set fc = fx.files 
x=0
For Each f1 in fc 
MyFileArray= Split(f1.name,"_")
FileArtnr=MyFileArray(0) 'artikelnummer
if x_produkter_ID = clng(FileArtnr) or clng(FileArtnr) = x_Produkter_Group_produktgrupper_ID then 'om artikelnummer är samma som början på filnamnet så tafram..
'if x_produkter_ID = clng(FileArtnr) then 'om bara filer associerade med artikelnummer ska gälla

FileName=MyFileArray(1) 'filens namn
MyFileArray2= Split(FileName,".")
OnlyFileName=MyFileArray2(0) 'filnamn utan filtyp
OnlyFileType=MyFileArray2(1) 'fil typ

Select Case Ucase(OnlyFileType)
Case "PDF"
FileIcon="<img src='grafik/ikoner/pdf.gif'>"
Case "DOC"
FileIcon="<img src='grafik/ikoner/doc.gif'>"
Case "XLS"
FileIcon="<img src='grafik/ikoner/xls.gif'>"
Case "ZIP"
FileIcon="<img src='grafik/ikoner/zip.gif'>"
Case "RAR"
FileIcon="<img src='grafik/ikoner/zip.gif'>"
Case "JPG"
FileIcon="<img src='grafik/ikoner/jpg.gif'>"
Case Else
FileIcon="<img src='grafik/ikoner/finns_ej.gif'>"
End Select
'samla ihop strängen
showfiles=showfiles&FileIcon & " " & "<a href='?download="&f1.name&"&artnr="&x_produkter_ID&"'>"&OnlyFileName&"</a><br>"
x=x+1
End if 'if auktioner_produkter_ID = FileArtnr then
Next 

 

 

"Gör så gott du kan. Det du inte kan köper du :-)"

 

Länk till kommentar
Dela på andra webbplatser

Du har ett par möjligheter:

- Använd en egen funktion i vbscript för att sortera arrayer (ex. en QuickSort, går att hitta enkelt via Google)

- Använd en underliggande .Net-klass (förutsätter att servern har Net Framework installerat) och använd en arraylist. Ex.

Set oArrayList =CreateObject("System.Collections.ArrayList" )

Denna har redan en Sort-metod implementerad.

- Sortera på klientnivå istället, javascript-arrayer har också en sort()-metod implementerad. Här får du då först sortera arrayen och sen via javascript skriva ut innehållet i listan.

 

[inlägget ändrat 2008-09-20 10:00:51 av Anjuna Moon]

Länk till kommentar
Dela på andra webbplatser

Tack!

NET. lösningen + javascript är uteslutet. Kvar blir VB med klassisk ASP.

Jag har kollat på olika sådana funktioner i vbscript, men fattar nada hur man implenterar de på min kod. Har inte jobbat med just sortering på filnivån. Så quicksort + min kod hur gör man det?

 

kolla denna när det gäller quicksort!

[inlägget ändrat 2008-09-20 10:16:39 av gelki]

Länk till kommentar
Dela på andra webbplatser

Följande lägger in dina filnamn i en Dictionary, med filändelsen som nyckel. Därefter sorteras Dictionaryn efter nycklarna (filändelserna) och slutligen används Dictionaryn för att skapa din output

 

http://rafb.net/p/LDWxvw12.html

 

Mer än så hinner jag inte göra åt dig, sitter själv med arbete som måste bli klart under helgen.

[inlägget ändrat 2008-09-20 10:47:49 av Anjuna Moon]

Länk till kommentar
Dela på andra webbplatser

Tack!

hmm ganska omfattande kod i funktionen ser jag.

Fick fel på rad med: "dict.Add OnlyFileType,f1.Name"

säger att: This key is already associated with an element of this collection.

Jag väntar gärna tills du är färdig med ditt helg arbete. För jag fattar nada av felmeddelandet. Kanske någon annan som vet vad som är?

 

 

 

 

"Gör så gott du kan. Det du inte kan köper du :-)"

 

Länk till kommentar
Dela på andra webbplatser

Jag tänkte inte tillräckligt långt där. Pröva att göra följande ändringar:

 

- Rad 14: dict.Add f1.Name, OnlyFileType

- Rad 17: SortDictionary dict, 2

- Rad 21: name=key

[inlägget ändrat 2008-09-20 12:02:41 av Anjuna Moon]

Länk till kommentar
Dela på andra webbplatser

OMG!

Det fungerar!

 

jag bugar och tackar för din kod Anjuna Moon!

Både du och Cluster är iallafall mina hjältar.

Kan jag göra någonting för er grabbar så..hojta till.

 

Tack ännu engång!

 

"Gör så gott du kan. Det du inte kan köper du :-)"

 

Länk till kommentar
Dela på andra webbplatser

jag bugar och tackar för din kod Anjuna Moon!

Ingen orsak!

(Jag var rätt stressad igår, så jag är lite halvförvånad att det inte smög sig in fler småfel. Ibland går det tydligen per automatik, hemska tanke =)

 

Kan jag göra någonting för er grabbar så..hojta till.

Tja, kunde du införa 32-timmars dygn på jorden så vore jag tacksam, annars räcker det gott med poängen =)

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...