<%@ Language=VBScript%>
<%
'Impostiamo la dichiarazione obbligatoria delle variabili
Option Explicit


'Implementiamo qualche costante dell'ADOVBS
'---- CursorTypeEnum Values ----
Const adOpenForwardOnly = 0
Const adOpenKeyset = 1
Const adOpenDynamic = 2
Const adOpenStatic = 3

'---- LockTypeEnum Values ----
Const adLockReadOnly = 1
Const adLockPessimistic = 2
Const adLockOptimistic = 3
Const adLockBatchOptimistic = 4


'Dichiariamo tutte le variabili dello script
Dim db, strSQL, Print_Table, Order, Field, strToolTip
Dim objConn, objRS, fld


'Assegnamo il nome del database
db = "archivio.mdb"


'Impostiamo la SQL
strSQL = "SELECT * FROM tabella_archivio"


'Intercettiamo gli ordini di ordinamento dei record
Order = Request.QueryString("order")
Field = Request.QueryString("field")


'Completiamo la SQL aggiungendo l'eventuale ordinamento
If Order <> "" Or Field <> "" Then
If Order = "asc" Or Order = "desc" Then
strSQL = strSQL & " ORDER BY [" & Field & "] " & Order
End If
End If


'Impostiamo i tooltip che compariranno sui link di ordinamento
strToolTip = ""


'Invertiamo il tipo di ordinamento per la prossima selezione dell'utente
'Se è la prima volta che visualizziamo la tabella allora i dati non saranno
ordinati, bensì saranno visualizzati così come inseriti nel db
If Order = "" OR Order = "asc" Then
Order = "desc"
strToolTip = "Ordine decrescente"
Else
Order = "asc"
strToolTip = "Ordine crescente"
End If


'Iniziamo a costruire la tabella contenente
'i record che verrà visualizzata nel browser
Print_Table = Print_Table & _
"<table cellspacing='2' cellpadding='2'>" & VbCrLf


'Apriamo la connessione
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
Server.MapPath(db)


'Dichiariamo il recordset e lo popoliamo con la SQL
Set objRS = server.createobject("ADODB.recordset")
objRS.Open strSQL, objConn, adOpenKeyset, adLockReadOnly


'Genero la prima riga della tabella contenente i nomi dei record
If Not objRS.EOF Then
Print_Table = Print_Table & "<tr>" & VbCrLf

'Generiamo per ogni campo del db un link per ricaricare la pagina
'passandole con una querystring il tipo di ordinamento da effettuare
'e il nome del campo su cui applicarlo
For Each fld In objRS.Fields
Print_Table = Print_Table & "<td><b><a href='list.asp?order=" & _
Order & "&field=" & fld.Name & "' title='" & _
strToolTip & "'>" & "<font face='tahoma' size='2'" & _
" color='red'>"& fld.Name & "</a></font></b></td>" & _
VbCrLf
Next

Print_Table = Print_Table & "</tr>" & VbCrLf
End If


'Completo la tabella generando le righe
'relative ai vari record presenti nel db
Do While Not objRS.EOF
Print_Table = Print_Table & "<tr>" & VbCrLf
For Each fld In objRS.Fields
Print_Table = Print_Table & "<td><font face='tahoma' size='2'>" & _
objRS(fld.Name) & "</font></td>" & VbCrLf
Next

Print_Table = Print_Table & "</tr>" & VbCrLf
objRS.MoveNext
Loop


'Chiudiamo e distruggiamo il recordset
objRS.Close
Set objRS = Nothing


'Chiudiamo e distruggiamo il db
objConn.close
Set objConn = Nothing


'Con questa istruzione completiamo la tabella da visualizzare
Print_Table = Print_Table & "</table>"


'Visualizziamo la tabella nel browser
Response.Write "<html>" & VbCrLf & _
"<title>Ordinamento record - byluciani.com</title>" & _
VbCrLf & "<body>" & VbCrLf
Response.Write "<center>" & VbCrLf & Print_Table & VbCrLf
Response.Write "</center>" & VbCrLf & "</body>" & VbCrLf & "</html>"
%>
VbCrLf è un comando di VBScript (combinazione di ritorno a capo ed avanzamento riga "Chr( 13 ) & Chr( 10 )", fà in modo che il codice html generato dall'interprete di VBScript sia impostato in modo leggibile.