webForumDet fria alternativet

Lista FSO, sortera och lägg ihop

ASP

2 svar · 429 visningar · startad av roady

Medlem sedan jan. 2002473 inlägg
Frågan#1

Sitter här och knådar skallen lite...
Jag har gjort som så att jag fyller ett Recordset med filer i en mapp, och sedan skriver jag ut alla i bokstavsordning...

Men jag vill lista det på ett annat sätt!
Jag har exempelvis:
entextfil.doc
entextfil.pdf

När jag skriver ut dessa vill jag få.
Filnamnet pdf doc

Alltså skriva ut namnet, och sedan ifall det finns en pdf-fil så skriver jag ut pdf och en länk till den och om det finns en likadan fil fast med .doc så skriver jag det och en länk till den!!!

Medlem sedan dec. 19995 874 inlägg
#2

gör så att du sparar föregående filnamn i en variabel och jämför den nästkommande med den. Skulle det vara samma (innan punkten), så lägger du ju bara till en länk till .pdf.

Medlem sedan jan. 2002473 inlägg
#3

hmm....
Efter en stor kopp kaffe och en stund så har jag entligen fått det att fungera...

Man listar alla Word (.doc) och Acrobat Reader (pdf) filer i en mapp, gjord för att man skall ha två stycken. allså ex.
Folder.doc
Folder.pdf
Men det går likabra att bara ha en fil!

Ifall någon behöver något liknande

<table width="500" border="1" cellpadding="0" cellspacing="0" bordercolor="#FFFFFF">
        <tr> 
	<td width="300" bgcolor="#9EB1CD">&nbsp;&nbsp;<strong>Dokument:</strong></td>
          <td width="100" bgcolor="#9EB1CD">&nbsp;&nbsp;<strong>WORD-fil:</strong></td>
          <td width="100" bgcolor="#9EB1CD">&nbsp;&nbsp;<strong>PDF-fil:</strong></td>
        </tr>
        <%
Dim objRS, objFSO, objFolder, Extension, File

Set objRS = Server.CreateObject("ADODB.Recordset")
	'## -- definiera fälten som ska ingå i recordsetet --
	objRS.Fields.Append "FileName", adVarChar, 255
	objRS.Fields.Append "FileSize", adInteger, 50
	objRS.Fields.Append "FileExtension", adVarChar, 5
			
	'## -- skapa fälten och öppna recordsetet --
	objRS.Open ,,adOpenStatic,adLockOptimistic

'///////////////////////////////////////////////////

	'## -- Nu skall vi lägga in filer i Recordsetet --
	Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
	Set objFolder = objFSO.GetFolder(Server.MapPath("Styrdokument\"))
	
	'## -- lista alla filer i katalogen och lägg till infon --
	For Each File IN objFolder.Files
	Extension = Right(File.Name, 3)
		objRS.AddNew
			objRS("FileName") = File.Name
			objRS("FileSize") = File.Size
			objRS("FileExtension") = Extension
		objRS.Update
	Next
		
'///////////////////////////////////////////////////		
			
			
	'## -- sortera efter filändelse --
	objRS.Sort = "FileName ASC"

	'## -- gå till första posten --
	objRS.MoveFirst

'///////////////////////////////////////////////////
Dim intLength, strNewName, strOldName, size, typ, tecken
'## -- Skriv ut filerna!
	Do Until objRS.Eof
		'## -- Hämta filnamnet och ta bort de fyra sista för att jämnföra & skriva ut
		intLength = Len(objRS("FileName")) - 4
		strNewName = Left(objRS("FileName"), intLength)
		
		'## -- Kolla storleken på filen och bestäm!
		Typ = "kb"
		Size = objRS("FileSize") / 1000 
		Tecken = instr(Size,",") + 1 
		Size = Left(Size,Tecken) 
			If Size = "0,0" Then 
				Size = objRS("FileSize")
				Typ = "byte" 
			End if
		
			'## -- Jämnför det gamla med det nya namnet
			If strNewName = strOldName Then
				'## -- Namnen stämmde
				'## -- Ifall det finns en PDF-fil med samma namn så skriv ut!
				If UCase(objRS("FileExtension")) = "PDF" Then
					Response.Write "<td width=""100"">&nbsp;&nbsp;"
					Response.Write "<a href=""Styrdokument\" & objRS("FileName") & """ class=""lank"">"
					Response.Write objRS("FileExtension")
					Response.Write "</a>&nbsp;&nbsp;&nbsp;<i>" & Size & " " & Typ & "</i></td></tr>" & vbcrlf
				Else
					Response.Write "<td width=""100"">&nbsp;</td></tr>" & vbcrlf
				End If
			Else
				Response.Write "<tr>" & vbcrlf
				'## -- Skriv ut filens namn, samt spara i variabel för att jämnföra
				Response.Write "<td width=""300"">&nbsp;&nbsp;"
					intLength = Len(objRS("FileName")) - 4
					strOldName = Left(objRS("FileName"), intLength)
					Response.Write strOldName
				Response.Write "</td>" & vbcrlf	
				'## ----------------------------------------------------------------
				'## Skriv ut om det är en pdf eller doc
				If UCase(objRS("FileExtension")) = "DOC" Then
					Response.Write "<td width=""100"">&nbsp;&nbsp;"
					Response.Write "<a href=""Styrdokument\" & objRS("FileName") & """ class=""lank"">"
					Response.Write objRS("FileExtension")
					Response.Write "</a>&nbsp;&nbsp;&nbsp;<i>" & Size & " " & Typ & "</i></td>" & vbcrlf
				ElseIf UCase(objRS("FileExtension")) = "PDF" Then
					Response.Write "<td width=""100"">&nbsp;</td>" & vbcrlf
					Response.Write "<td width=""100"">&nbsp;&nbsp;"
					Response.Write "<a href=""Styrdokument\" & objRS("FileName") & """ class=""lank"">"
					Response.Write objRS("FileExtension")
					Response.Write "</a>&nbsp;&nbsp;&nbsp;<i>" & Size & " " & Typ & "</i></td></tr>" & vbcrlf
				Else
					Response.Write "<td width=""100"">&nbsp;</td>" & vbcrlf
				End If
			End If
	objRS.MoveNext
	Loop
	
%>
      </table>
253 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)