webForumDet fria alternativet

Sortering av listade Mappar och Filer

ASP

7 svar · 530 visningar · startad av T_Codez

Medlem sedan juli 2001458 inlägg
Frågan#1

Hej hej

Har lite trubbel med att få en sortering att fungera via en länk.

Jag har listat mappar och filer som läses upp i en tabell. Så att det ska påminna
om ett vanligt utforskarfönster.

Jag har så här långt fått det att fungera med att lista mappar och filer. Filerna
går att sortera. Nu har vill jag även att det ska fungera med mapparna.

Det första hindret som jag sprungit på är följande:

Error Type:
Microsoft VBScript runtime (0x800A01B6)
Object doesn't support this property or method: 'rsFSO.Fields'
html.asp, line 303

Felet ligger i en funktion...

Function GetFolders(sMapp, Exclude)
Dim rsFSO, oFSO, oFolder, File, path

  path = "/"
  if request.querystring("path") <> "" then
  path = request.querystring("path") & "/"
  end if
  
  Const adInteger = 3
  Const adDate = 7
  Const adVarChar = 200
  
  Set rsFSO = server.createobject("scripting.filesystemobject")
  Set oFSO = rsFSO.getFolder(server.mappath(path))
  Set oFolder = oFSO.SubFolders
  Set oFSO = Nothing
  
[B]  With rsFSO.Fields '************** rad 300[/B]
    .Append "Name", adVarChar, 200
    .Append "DateLastModified", adDate
  End With

  rsFSO.Open()
	
  For Each File In oFolder.Files
      rsFSO.AddNew
      rsFSO("Name") = File.Name
      rsFSO("DateLastModified") = File.DateLastModified
      rsFSO.Update
  Next
	
  rsFSO.Sort = sSortBy & " " & sOrderBy '"DateLastModified DESC "
  Set oFolder = Nothing
  rsFSO.MoveFirst()
  Set GetFolders = rsFSO
End Function

Tar tacksamt emot alla potentiella hintar :)

Medlem sedan juni 200032 967 inlägg
#2

Tja, Scripting.FilesystemObject har inte någon egenskap / metod som heter fields. Bör du inte göra det där med ett recordset?

Medlem sedan juli 2001458 inlägg
#3

Ja det var ju det som var meningen egentligen... :r
Dags att pausa lite tror jag...

Jag saknar uppenbarligen objektet för att få in mapparna.

Nu ser den identisk ut med den funktion jag har
för att läsa upp filerna. Och mycket riktigt... Nu får jag
filerna listade 2 ggr.

Hur i "hunna" ska jag skriva för att få fram mapparna
istället för filerna? :q


Function GetFolders(sMapp, Exclude)
Dim rsFso, oFSO, oFolder, File, path

  path = "/"
  if request.querystring("path") <> "" then
  path = request.querystring("path") & "/"
  end if
  
  Const adInteger = 3
  Const adDate = 7
  Const adVarChar = 200
  
 
  Set rsFso = server.createobject("ADODB.Recordset")
  Set oFso = Server.CreateObject("Scripting.FileSystemObject")
  Set oFolder = oFso.GetFolder(sMapp)' SubFolders(path)
  Set oFso = Nothing
  
  With rsFso.Fields
    .Append "Name", adVarChar, 200
    .Append "DateLastModified", adDate
  End With

  rsFso.Open()
	
  For Each File In oFolder.Files
      rsFso.AddNew
      rsFso("Name") = File.Name
      rsFso("DateLastModified") = File.DateLastModified
      rsFso.Update
  Next
	
  rsFso.Sort = sSortBy & " " & sOrderBy '"DateLastModified DESC "
  Set oFolder = Nothing
  rsFso.MoveFirst()
  Set GetFolders = rsFso
End Function
Medlem sedan juni 200032 967 inlägg
#4

SubFolders

 ' typ:
  For Each folder In oFolder.SubFolders

Folder-objektet: http://www.devguru.com/technologies/vbscript/14076.asp

Medlem sedan juli 2001458 inlägg
#5

Tackar och bockar för hjälpen @nders :birp

Vissa blinda hönor behöver faktiskt hjälp med att hitta ett frö ibland :h

Här kommer det fullständiga fil-innehållet. Just du därute kanske vill ha något liknande.

Döp filen till test.asp så slipper du rodda i koden...

<%
Option Explicit
dim Conn,SQL,RS,strBgColor,strLang,strImage
dim iLangId,sDir,sSort,sInfoText, sOrderBy, sLang, sSortBy

<!--#include file="includes/adovbs.inc"-->
'strLang = request.querystring("Lang")
'request.
strLang = "se"

' ********** Start Test av kolumnsorteing
	sLang = request.querystring("Lang")
	sSortBy = request.querystring("sortby")
	sOrderBy = request.querystring("orderby")
	if sSortBy = "" then
		sSortBy = "DateLastModified"
	end if
	if sOrderBy = "" then
		sOrderBy = "DESC"
	else
		if sOrderBy = "DESC" then
			sOrderBy = "ASC"
		else
			sOrderBy = "DESC"
		end if
	end if
'************ Slut Test
strBgColor = "#E5E5E5"

%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Welcome...</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">
</head>
<body bgcolor="#FFFFFF">
<table width="682" border="0" align="center" cellpadding="0" cellspacing="0">
    <tr>
        <td></td>
    </tr>
    <tr>
        <td>
            <table width="682" border="0" cellspacing="0" cellpadding="0">
                <tr>
                    <td width="400"></td>
                    <td width="282" align="right" valign="top"><a href="menu.asp"></a></td>
                </tr>
                <tr>
                    <td colspan="2"><img src="pixel.gif" width="1" height="10"></td>
                </tr>
                <tr>
                    <td colspan="2" align="left" valign="top">
                        <table width="682" border="0" cellspacing="0" cellpadding="2">
                            <tr>
                                <td colspan="3"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><%=sInfoText%></font></td>
                            </tr>
                            <tr>
                                <td colspan="3"><img src="pixel.gif" width="1" height="10"></td>
                            </tr>
                            <tr>
                                <td width="363" bgcolor="#0066CC"><a href="test.asp?lang=<%=strLang%>&sortby=Name&orderby=<%= sOrderBy %>"><font color="#FFFFFF" size="1" face="Verdana, Arial, Helvetica, sans-serif">Namn</font></a></td>
                                <td width="160" bgcolor="#0066CC"><a href="test.asp?lang=<%=strLang%>&sortby=DateLastModified&orderby=<%= sOrderBy %>"><font color="#FFFFFF" size="1" face="Verdana, Arial, Helvetica, sans-serif">Datum</font></a></td>
                                <td width="147" bgcolor="#0066CC"><a href="test.asp?lang=<%=strLang%>&sortby=Size&orderby=<%= sOrderBy %>"><font color="#FFFFFF" size="1" face="Verdana, Arial, Helvetica, sans-serif">Storlek</font></a></td>
                            </tr>
                            <tr>
                                <td height="2" colspan="3"><img src="pixel.gif" width="1" height="1"></td>
                            </tr>
                            <tr>
                                <td bgcolor="<%= strBgColor %>"><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><img src="upp.gif" width="18" height="15">&nbsp;<a href="javascript:history.back();">..</a></font></td>
                                <td bgcolor="<%= strBgColor %>"><font size="1" face="Verdana, Arial, Helvetica, sans-serif"></font></td>
                                <td bgcolor="<%= strBgColor %>"><font size="1" face="Verdana, Arial, Helvetica, sans-serif"></td>
                            </tr>
                     <%
                     
                     dim fso, folder, mapp
                     		'Lista Mappar...
                     		dim sMapp, tjo
                            if sLang <> "" then
                                sMapp = Server.MapPath("/")
                            else
                                sLang = "other"
                                sMapp = Server.MapPath("/")
                            end if

            				Set rsFSO = GetFolders(sMapp, "")
            				While Not rsFSO.EOF
									response.write "<tr>"& vbcrlf
									response.write "<td bgcolor="& sBgColor &"><font size=""1"" face=""Verdana, Arial, Helvetica, sans-serif""><img src=""folder1.gif"">&nbsp;<a href=""files/"& tjo &"/"& rsFSO("Name").Value &""">"& rsFSO("Name").Value &"</font></a></td>"& vbcrlf
									response.write "<td bgcolor="& sBgColor &"><font size=""1"" face=""Verdana, Arial, Helvetica, sans-serif"">"& rsFSO("DateLastModified").Value &"</font></td>"& vbcrlf
									response.write "<td bgcolor="& sBgColor &"><font size=""1"" face=""Verdana, Arial, Helvetica, sans-serif"">"&"&nbsp;</font></td>"& vbcrlf
									response.write "</tr>"& vbcrlf
									if sBgColor = "#E5E5E5" then
										sBgColor = "#FFFFFF"
									else
										sBgColor = "#E5E5E5"
									end if
            					rsFso.MoveNext()
            				Wend
            				rsFSO.close()
            				Set rsFSO = Nothing 

                            'listning av filerna
							dim sFolder, sBgColor
                            if sLang <> "" then
                                sFolder = Server.MapPath("/")
                            else
                                sLang = "other"
                                sFolder = Server.MapPath("/")
                            end if
            				
            				Dim rsFSO
            				Set rsFSO = GetFiles(sFolder, "")
            				While Not rsFSO.EOF
                                response.write "<tr>"& vbcrlf
                                response.write "<td bgcolor="& sBgColor &"><font size=""1"" face=""Verdana, Arial, Helvetica, sans-serif""><img src=""doc2.gif"">&nbsp;<a href=""files/"& sLang &"/"& rsFSO("Name").Value &""">"& rsFSO("Name").Value &"</font></a></td>"& vbcrlf
                                response.write "<td bgcolor="& sBgColor &"><font size=""1"" face=""Verdana, Arial, Helvetica, sans-serif"">"& rsFSO("DateLastModified").Value &"</font></td>"& vbcrlf
                                response.write "<td bgcolor="& sBgColor &"><font size=""1"" face=""Verdana, Arial, Helvetica, sans-serif"">"& rsFSO("Size").Value &"&nbsp;KB</font></td>"& vbcrlf
                                response.write "</tr>"& vbcrlf
                                if sBgColor = "#E5E5E5" then
                                    sBgColor = "#FFFFFF"
                                else
                                    sBgColor = "#E5E5E5"
                                end if
            			     rsFso.MoveNext()
            			   Wend
            			  rsFSO.close()
            			  Set rsFSO = Nothing %>
                        </table>
                    </td>
                </tr>
                <tr>
                    <td width="400" colspan="2"></td>
                </tr>
            </table>
        </td>
    </tr>
</table>
</body>
</html>
<%
Function GetFiles(sFolder, Exclude)
Dim rsFSO, oFSO, oFolder, File
  Const adInteger = 3
  Const adDate = 7
  Const adVarChar = 200
  
  Set rsFSO = Server.CreateObject("ADODB.Recordset")
  Set oFSO = Server.CreateObject("Scripting.FileSystemObject")
  Set oFolder = oFSO.GetFolder(sFolder)
  Set oFSO = Nothing
  
  With rsFSO.Fields
    .Append "Name", adVarChar, 200
    .Append "Type", adVarChar, 200
    .Append "DateCreated", adDate
    .Append "DateLastAccessed", adDate
    .Append "DateLastModified", adDate
    .Append "Size", adInteger
    .Append "TotalFileCount", adInteger
  End With
  rsFSO.Open()
	
  For Each File In oFolder.Files
      rsFSO.AddNew
      rsFSO("Name") = File.Name
      rsFSO("Type") = File.Type
      rsFSO("DateCreated") = File.DateCreated
      rsFSO("DateLastAccessed") = File.DateLastAccessed
      rsFSO("DateLastModified") = File.DateLastModified
      rsFSO("Size") = File.Size / 1000
      rsFSO.Update
  Next
	
  rsFSO.Sort = sSortBy & " " & sOrderBy '"DateLastModified DESC "
  Set oFolder = Nothing
  rsFSO.MoveFirst()
  Set GetFiles = rsFSO
End Function

	Function GetFolders(sMapp, Exclude)
		Dim rsFso, oFSO, oFolder, File, path, tjo

		path = "/"
		if request.querystring("path") <> "" then
		path = request.querystring("path") & "/"
		end if
		  
		Const adInteger = 3
		Const adDate = 7
		Const adVarChar = 200
	  
		set fso = server.createobject("scripting.filesystemobject")
		set folder = fso.getFolder(server.mappath(path))
		set mapp = folder.SubFolders
	  
		Set rsFso = server.createobject("ADODB.Recordset")
		Set oFso = Server.CreateObject("Scripting.FileSystemObject")
		Set oFolder = oFSO.GetFolder(sMapp)' SubFolders(path)
		Set tjo = oFolder.Subfolders 

		'For Each folder In oFolder.SubFolders
		Set oFso = Nothing
	  
		With rsFso.Fields
			.Append "Name", adVarChar, 200
			.Append "DateLastModified", adDate
			.Append "Size", adInteger
		End With

		rsFso.Open()
			
		For Each File In oFolder.SubFolders
			rsFso.AddNew
			rsFso("Name") = File.Name
			rsFso("DateLastModified") = File.DateLastModified
			rsFso("Size") = File.Size / 1000
			rsFso.Update
		Next
			
		rsFso.Sort = sSortBy & " " & sOrderBy '"DateLastModified DESC "
		Set oFolder = Nothing
		rsFso.MoveFirst()
		Set GetFolders = rsFso
	End Function
%>
Medlem sedan juli 200412 913 inlägg
#6

shit vilken lång kod :) ...men det där skulle jag behöva prova, vill ha fillista som man kan klicka på bara...

Medlem sedan juli 2001458 inlägg
#7

Det finns mycket att städa upp i... :-)

Men men... bara det funkar hyfsat till en början, så tar man kosmetikan sen...

Glömde nämna att man får fixa till lite i länkarna i alla fall. Gör bara så att länkarna pekar på test.asp samt skickar med path, namn, datum och size...

och inte som i koden ovan (exempel):

<a href=""files/"& sLang &"/"& rsFSO("Name").Value &""">"& rsFSO("Name").Value &"</font></a>
'
ändra till:
<a href=""rek_html.asp?path="& path &"/"& rsFSO("Name").Value &""">"& rsFSO("Name").Value &"</font></a>
' givetvis på alla ställen där det behövs...

Samt lägga till:

Dim path ' någonstans där du tycker att det passar in...

Nu kan jag inte skriva mer för nu kommer "Kebab Knock Outen" efter den grymt stor Kebabpizzan till Lunch :x Men gotta var'e :L

Medlem sedan juli 2001458 inlägg
#8

Efter lite modifieringar så funkar det nu som det ska till fullo.

Bifogar filer med lösningen. samt att det blir lättare att få lite överblick.

Sen bör man lägga till funktioner och bilder så att det blir rätt ikoner för rätt filtyp. Samt öppna filerna för läsning etc.

Men det är en helt annan historia...

Credits:
Till @nders och Envig som bidragit till lösningen.

Tackar och bockar min panna blodig :birp

265 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
142 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)