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!
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!
Is the data hard coded out does it come from a database, where you could sort by using the order by clause?
ASKER
Hi Big Monty,
I used MSXML2.ServerXMLHTTP to get the data from other web page so I cannot sort by date.
Thanks
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.
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?
ASKER
Hi Padas,
About 800 rows. would you please help!
About 800 rows. would you please help!
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
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.
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
%>
ASKER
I use vbscript array and it works ok now.
Thanks for the help.
Thanks for the help.
Glad you have it working. I did not get to see your other response until now.