Link to home
Start Free TrialLog in
Avatar of ttta83
ttta83

asked on

Create and sort multi-dimentional array

I'm writing an classic ASP page.  I have a 1 dimentional array with the data like this: (FileName-Date-Content)


This is a test - 03 Apr 2000 - Test 1
Another test - 12 Dec 2003 - Test 2
Test again - 22 May 2012 - Test 3
Test number 4 - 09 Jun 2008 - Test 4

How can I display the latest date first so the data looks like this:

Test again - 22 May 2012 - Test 3
Test number 4 - 09 Jun 2008 - Test 4
Another test - 12 Dec 2003 - Test 2
This is a test - 03 Apr 2000 - Test 1

Thanks!
Avatar of Big Monty
Big Monty
Flag of United States of America image

Is the data hard coded out does it come from a database, where you could sort by using the order by clause?
Avatar of ttta83
ttta83

ASKER

Hi Big Monty,

I used MSXML2.ServerXMLHTTP to get the data from other web page so I cannot sort by date.

Thanks
If you need to sort the array, it is much faster to do this client side than using vbs.  

You can either write the data to a js/jquery array and sort using the timestamp.   If you need to get this out to a table, I like  using data tables.  http://datatables.net/release-datatables/examples/basic_init/table_sorting.html  It can be a bit much for just one small item, but if you are doing this a lot, it makes sense.

Otherwise, it is explained in 4guys how to sort arrays in asp/vbs http://www.4guysfromrolla.com/webtech/011001-1.shtml but there are better methods.  Big Monty is on the easiest track by using sql.    I would use vbs arrays sorting as a last resort.

If you still want to go into that in detail, let us know.
How much data are you dealing with?
Avatar of ttta83

ASKER

Hi Padas,

About 800 rows.  would you please help!
ASKER CERTIFIED SOLUTION
Avatar of Scott Fell
Scott Fell
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of ttta83

ASKER

Padas,

would you please run this code?  I have the data displayed on the screen but I want to sort by the year... It takes about 90 seconds for the page to load 'cause I have to go through each individual file to get the distinct first 3 characters of each file.   WHat should I do to make it run faster and with the list sorted by the dates.  

Without using jQuery, can we make it sort by date?

Please let me know if you have any questions.  

Again, thank you very much for your help on this.

<%
Response.Buffer = False
url="http://www.cpms.osd.mil/WageData/wagedata"
Set xmlHttp =  Server.CreateObject("MSXML2.ServerXMLHTTP.6.0")
xmlHttp.Open "GET", url, False
    xmlHttp.setRequestHeader "User-Agent", "asp httprequest"
    xmlHttp.setRequestHeader "content-type", "application/x-www-form-urlencoded"
    xmlHttp.Send
    getHTML = xmlHttp.responseText
    strArr = split(xmlHttp.responseText,"<br>")
	set xmlHttp = Nothing
    
    for i=0 to ubound(strArr)
		lData = trim(ucase(strArr(i)))
		NAFDATLoc = InStrRev(lData,"NAF.DAT",-1)
		If (NAFDATLoc > 0) then
			FileName = mid(trim(strArr(i)),NAFDATLoc-9,16)
			If (IsNumeric(mid(FileName,1,4))) then
				'Only display year 2000 and above and don't display *.dat.old.dat (there's one file with ext .dat.old.dat)
				If (cInt(mid(FileName,1,4)) >= 2000) and (mid(trim(strArr(i)),NAFDATLoc+7,1) <> ".") then
					FirstSpaceLoc = Instr(lData," ")
					FirstMLoc = Instr(lData,"M")
					strDate = mid(lData,1,FirstSpaceLoc)
                                         
					if mid(strDate,2,1) = "/" then
									strDate = "0" & strDate
					end if
					if mid(strDate,5,1) = "/" then
									strDate = left(strDate,3) & "0" & mid(strDate,4,9)
					end if
           
					Select Case mid(strDate,1,2)
						Case "01"
							strSpellMonth = "Jan"
						Case "02"
							strSpellMonth = "Feb"
						Case "03"
							strSpellMonth = "Mar"
						Case "04"
							strSpellMonth = "Apr"
						Case "05"
							strSpellMonth = "May"
						Case "06"
							strSpellMonth = "Jun"
						Case "07"
							strSpellMonth = "Jul"
						Case "08"
							strSpellMonth = "Aug"
						Case "09"
							strSpellMonth = "Sep"
						Case "10"
							strSpellMonth = "Oct"
						Case "11"
							strSpellMonth = "Nov"
						Case "12"
							strSpellMonth = "Dec"
					End Select

					DateDisplay = mid(strDate,4,2) & " " & strSpellMonth & " " & mid(strDate,7,4)
 
					url="http://www.cpms.osd.mil/WageData/wagedata/" & FileName
					Set xmlHttpData =  Server.CreateObject("MSXML2.ServerXMLHTTP.6.0")
					
					xmlHttpData.Open "GET", url, False
					xmlHttpData.setRequestHeader "User-Agent", "asp httprequest"
					xmlHttpData.setRequestHeader "content-type", "application/x-www-form-urlencoded"
					xmlHttpData.Send
					getHTMLData = xmlHttpData.responseText
					strArrData = split(xmlHttpData.responseText,vbCrLf)  'vbCrLf
					set xmlHttpData = Nothing                                         
 
					strWageAreas = "("
					strPrevWageArea = ""
					'For lngIdx = 1 To lngFileArraySize
					for j=0 to ubound(strArrData)
						'Response.Write(strArrData(j))
						intPos = InStr(strArrData(j),"|")
						'Response.Write(intPos)
						if intPos > 0 then
							strCurrWageArea = mid(strArrData(j), 1, intPos - 1)
							If strCurrWageArea <> strPrevWageArea Then
								If strWageAreas = "(" Then
									strWageAreas = strWageAreas & strCurrWageArea
							   Else
									strWageAreas = strWageAreas & ", " & strCurrWageArea
								End If
								strPrevWageArea = strCurrWageArea
							End If
						'Else
						'    strWageAreas = ""
						End if
					Next
 
                    If strWageAreas = "(" Then
                        strWageAreas = ""
                    Else
                        strWageAreas = strWageAreas & ")"
                    End If
 
                    GetWageAreas = strWageAreas
 
					FileName = mid(trim(strArr(i)),NAFDATLoc-9,16)
					Response.Write(FileName & " --  " & DateDisplay & " --- " & GetWageAreas & "<br>")

				End if
            End if
		end if
		GetWageAreas = ""
		strWageAreas = ""
 
	next
%>

Open in new window

Avatar of ttta83

ASKER

I use vbscript array and it works ok now.

Thanks for the help.
Glad you have it working.  I did not get to see your other response until now.