search
top

Appunti di ASP Active Server Pages

Realizzazione di un modulo ASP per ADODB, generico per l’inserimento e la modifica dei dati che provengono da una qualsiasi form

Prima di tutto è necessario realizzare una procedura che nella pagina associata alla form in questione recepisca tutti i campi e valori passati

dalla form stessa che nell’esempio supporremmo in POST.

Tale procedura deve quindi fare il ciclo su tutti i campi che sono presenti nella form e creare due array

strArCampi = “”
For i = 2 To Request.Form.Count
strArCampi = strArCampi & Request.Form.Key(i) & “|”

Next
strArValori = “”
For i = 2 To Request.Form.Count
strArValori = strArValori & Request.Form.Item(i) & “|”
Next

il primo array dei nomi dei campi e l’altro dei valori di campo corrispondenti

ar_campi=split(strArCampi,”|”)
ar_valori=split(strArValori,”|”)

di seguito ho pensato ad una funzione che presi come argomenti la stringa di connessione al database utilizzato, il nome della tabella, e questi due array inserisca il record nel database.

Function ins_record(strConnectionString, nome_tab, ar_campi, ar_valori)
Set conn = Server.CreateObject(“ADODB.Connection”)
conn.open strConnectionString
set rstInsCl = Server.CreateObject(“ADODB.Recordset”)
Sql_Cl=”select * from ” & nome_tab
rstInsCl.Open Sql_Cl, conn, 1, 3
rstInsCl.addnew
for i = 1 to ubound(ar_campi)-1
select case Decode_tipo(tipo_campo(strConnectionString,”Schede”,ar_campi(i)))
case “date”
rstInsCl.fields(ar_campi(i)).value = FormatDateTime(ar_valori(i),VBShortDate)
case “text”
rstInsCl.fields(ar_campi(i)).value = ar_valori(i)
case “num”
rstInsCl.fields(ar_campi(i)).value = ar_valori(i)
case “bool”
if ar_valori(i)=”on” then
rstInsCl.fields(ar_campi(i)).value = true
else
rstInsCl.fields(ar_campi(i)).value = false
end if
end select
next
rstInsCl.update
end function

Dove in neretto ho inserito le due funzioni che mi servono per sapere il tipo di campo di ADODB e per decodificare in:

campo di tipo data
campo testo,
campo numerico
campo booleano (true/false)

Function tipo_campo(strConnectionString,nome_tab,nome_campo)
set objUserConn = server.createObject(“ADODB.Connection”)
set UserdataRec= Server.CreateObject(“ADODB.Recordset”)
objUserConn.Open strConnectionString*
Sql = “select * from ” & nome_tab
UserdataRec.Open sql, objUserConn, 2, 3
tipo_campo = UserdataRec.Fields(nome_campo).Type
UserdataRec.close
objUserConn.close
set objUserConn = nothing
set UserdataRec = nothing
end function

questa seconda funzione si appoggia ad una tabella che riporto sotto

Function Decode_tipo(cod_tipo)
set objUserConn = server.createObject(“ADODB.Connection”)
set UserdataRec= Server.CreateObject(“ADODB.Recordset”)
objUserConn.Open strConnectionString*
Sql = “select * from Tipi_campo where cod_tipo=” & cod_tipo
UserdataRec.Open sql, objUserConn, 2, 3
Decode_tipo= UserdataRec.Fields(“Classe”).value
UserdataRec.close
objUserConn.close
set objUserConn = nothing
set UserdataRec = nothing
end function

*dove strConnectionString  è la stringa di connessione ADODB che nel caso provato con un database Access è :

Perc_db=server.MapPath(“/nome_cartella/nomedb.mdb”)
strConnectionString  = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=”+ Perc_db

Tabella Tipi_campo di decodifica dei tipi ADODB decodificati dalla funzione Decode_tipo

tipo cod_tipo descr classe
adEmpty 0 no value null
adSmallInt 2 2-byte signed integer num
adInteger 3 4-byte signed integer num
adSingle 4 Single-precision floating-point value num
adDouble 5 Double precision floating-point num
adCurrency 6 Currency format num
adDate 7 Number of days since 12/30/1899 data
adBSTR 8 Null-terminated character string text
adIDispatch 9 Currently not supported by ADO
adError 10 32-bit error code
adBoolean 11 True or false Boolean bool
adVariant 12 Automation variant
adIUnknown 13 Currently not supported by ADO
adDecimal 14 Number with fixed precision and scale num
adTinyInt 16 1-byte signed integer num
adUnsignedTinyInt 17 1-byte unsigned integer num
adUnsignedSmallInt 18 2-byte unsigned integer num
adUnsignedInt 19 4-byte unsigned integer num
adBigInt 20 8-byte signed integer num
adUnsignedBigInt 21 8-byte unsigned integer num
adFileTime 64 Number of 100-nanosecond intervals since 1/1/1601 num
adGUID 72 Globally Unique identifier num
adBinary 128 Binary
adChar 129 String text
adWChar 130 Null-terminated Unicode character string text
adNumeric 131 Number with fixed precision and scale num
adUserDefined 132 User-defined variable
adDBDate 133 YYYYMMDD date format date
adDBTime 134 HHMMSS time format date
adDBTimeStamp 135 YYYYMMDDHHMMSS date/time format date
adChapter 136 4-byte chapter value for a child recordset
adDBFileTime 137 Database file time date
adPropVariant 138 PROPVARIANT automation
adVarNumeric 139 Variable width exact numeric with signed scale num
adVarChar 200 String text
adLongVarChar 201 Long string value text
adVarWChar 202 Null-terminated Unicode character string text
adLongVarWChar 203 Long Null-terminates string value text
adVarBinary 204 Binary value
adLongVarBinary 205 Long binary value num

La stessa funzione però destinata alla modifica di un record esistente:

Argomenti:

  1. Stringa di connessione al database
  2. Nome tabella
  3. Array nomi campo
  4. Array valori
  5. Nome campo id
  6. Valore id

Function mod_record(strConnectionString, nome_tab, ar_campi, ar_valori,nome_campoid,id)
Set conn = Server.CreateObject(“ADODB.Connection”)
conn.open strConnectionString
set rstInsCl = Server.CreateObject(“ADODB.Recordset”)
Sql_Cl=”select * from ” & nome_tab & ” where ” & nome_campoid & “=” & id
rstInsCl.Open Sql_Cl, conn, 1, 3
for i = 1 to ubound(ar_campi)-1
select case Decode_tipo(tipo_campo(strConnectionString,”Schede”,ar_campi(i)))
case “date”
rstInsCl.fields(ar_campi(i)).value = FormatDateTime(ar_valori(i),VBShortDate)
case “text”
rstInsCl.fields(ar_campi(i)).value = ar_valori(i)
case “num”
rstInsCl.fields(ar_campi(i)).value = ar_valori(i)
case “bool”
if ar_valori(i)=”on” then
rstInsCl.fields(ar_campi(i)).value = true
else
rstInsCl.fields(ar_campi(i)).value = false
end if
end select
next
rstInsCl.update
set rstInsCl = Nothing
set conn = Nothing
end function


Realizzazione di un modulo ASP per ADODB, per la creazione di una visione tabellare dei dati con funzionalità di ordinamento

Per svolgere questa funzione molto utile nel caso si vogliano sviluppare applicazioni web per la gestione di database ho creato una funzione che ha i seguenti argomenti:

nome_tabella=il nome della tabella che viene appare nella lista
Qry = la query sql che definisce quali record devono apparire nella lista, da notare che non deve contenere la clausola order by
campo_chiave = il nome del campo chiave “primary key” della tabella <nome_tabella>
campo_ord=il nome del campo su cui si desidera ordinare i dati appena viene aperta la pagina
tipo_ord=il tipo di ordinamento può essere “ASC” o “DESC” ascendente o discentente
tag_coll = nome della pagina da aprire facendo click sul link nell’ultima colonna di ogni record “modifica” che permette di accedere ad una pagina di modifica del singolo record
c= nel caso di query è il valore del campo codizione a cui verrà applicato il criterio like per filtrare i record

function lista_tabella(nome_tabella, Qry, campo_chiave,campo_ord, tipo_ord,tag_coll,c)
‘on error resume next

if tipo_ord=”ASC” then
mtipo_ord=”DESC”
else
mtipo_ord=”ASC”
end if
set objConnCar1 = server.createObject(“ADODB.Connection”)
objConnCar1.Open strConnectionString
if Query=”” then
strsql = “select * from ” & nome_tabella & ” order by ” & campo_ord & ” ” & tipo_ord
else
strsql = Qry & “‘%” & c & “%’ order by ” & campo_ord & ” ” & tipo_ord
end if
set dataRecCar1 = Server.CreateObject(“ADODB.Recordset”)
dataRecCar1.Open strsql, objConnCar1, adOpenForwardOnly

if err.number<>0 then
response.write err.description
end if
if dataRecCar1.eof then
response.write “Nessuna registrazione ” & strsql
else
str_campi=””
for i=0 to dataRecCar1.Fields.count-1
if Campo_vis_Tab(nome_tabella,dataRecCar1.Fields(i).name) then
str_campi=str_campi & dataRecCar1.Fields(i).name & “|”
end if
next
if str_campi=”” then
response.write “<font> Nessuna definizione per la visualizzazione tabellare</font>”
lista_tabella=0
else
str_campi=left(str_campi,len(str_campi)-1)

ar_campi=split(str_campi,”|”)
response.write “<tr>”
for i=0 to ubound(ar_campi)-1
Response.write “<td><b>”
if len(Qry)=0 then
Response.write “<a href=’tabella.asp?t=” & nome_tabella & “&q=&k=” & campo_chiave & “&o=” & ar_campi(i) & “&ad=” & mtipo_ord & “&l=” & tag_coll & “‘>”
else
Response.write “<a href=’tabella.asp?t=” & nome_tabella & “&q=” & qry & “&k=” & campo_chiave & “&o=” & ar_campi(i) & “&ad=” & mtipo_ord & “&l=” & tag_coll & “&c=” & c & “‘>”
end if
Response.write Decode_campi(nome_tabella,ar_campi(i))
Response.write “</a>”
Response.write “</td>”
next
Response.write “</tr>”
Response.Flush
mlista_tabella = “”
conta_righe=0

do until dataRecCar1.eof
conta_righe=conta_righe+1
if conta_righe/2 = int(conta_righe/2) then
coloresf=”#C0C0C0″
else
coloresf=”#FFFFFF”
end if
Response.write “<tr bgcolor=” & coloresf & “>”
for i=0 to ubound(ar_campi)-1
Response.write “<td>”
Response.write dataRecCar1.Fields(ar_campi(i)).value
Response.write “</td>”
next
Response.write “<td>”
Response.write “<a href=’” & tag_coll & “?” & campo_chiave & “=” & dataRecCar1.Fields(campo_chiave).value & “‘>modifica</a>”
Response.write “</td>”
Response.write “</tr>”
dataRecCar1.movenext
loop
end if
response.write mlista_tabella
end if
set dataRecCar1 = Nothing
set objConnCar1 = Nothing
end function

ovviamente questa funzione va richiamata da una pagina ASP come la seguente:
– “tabella.asp”—

<html>
<head>
<title>Elenco</title>
<meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1″>
<link href=”css/gestione.css” rel=”stylesheet” type=”text/css”>
<body>
<table border=0 width=100%>
<tr>
<td>
<a href=index.htm><-ritorna alla maschera principale</a>
</td>
<td>
</td>
</tr>
</table>

<table border=”10″ cellpadding=”2″ cellspacing=”2″>

<%

nome_tabella=request(“t”)
query=request(“q”)
c=request(“c”)
campo_chiave=request(“k”)
campo_ord=request(“o”)
tipo_ord=request(“ad”)
tag_col=request(“l”)

lista_tabella nome_tabella, query, campo_chiave,campo_ord, tipo_ord,tag_col,c
%>
</table>
</body>
</html>

Realizzazione di una funzione per la decodifica dei colori dalla rappresentazione HTML ai tre valori di R G B

I colori in html vengono rappresentati con una stringa di 6 caratteri in esadecimale che a coppie di 2 decodificati in decimale danno i valori di RGB.

un esempio di funzione per la decodifica è:

<%

function decode_htmlcolor(colorehtml,componente)

R = Val(“&H” & Mid(colore, 1, 2))
G = Val(“&H” & Mid(colore, 3, 2))
B = Val(“&H” & Mid(colore, 5, 2))

select case componente
case “R”
decode_htmlcolor=R
case “G”
decode_htmlcolor=G
case “B”
decode_htmlcolor=B
end select

end function

%>

Realizzazione di una funzione per elencare i file presenti in una cartella (utilizzo dell’oggetto FileSystemObject)

Function ElencoDir(DirName)

Dim fso        ‘ il file system object
Dim folder     ‘ la directory
Dim file       ‘ oggetto file
Dim string
‘ N.B. dirName è il nome della directory di cui si vuole l’elenco dei file contenuti

‘ Creazione del FileSystemObject
Set fso = CreateObject(“Scripting.FileSystemObject”)

‘ Accesso alla singola cartella
Set folder = fso.GetFolder( dirName )

string = “”

‘ esecuzione del ciclo sugli oggetti file contenuti nell’oggetto cartella e riempo la stringa string con i
For Each file in folder.Files
string = string & file.name
string = string & vbCrLf
Next

Set folder=Nothing
Set fso=Nothing
end function

Elenco dei possibili valori del comando Response.ContentType(“”)

application/andrew-inset ez
application/mac-binhex40 hqx
application/mac-compactpro cpt
application/mathml+xml mathml
application/msword doc
application/octet-stream bin dms lha lzh exe class so dll
application/oda oda
application/ogg ogg
application/pdf pdf
application/postscript ai eps ps
application/rdf+xml rdf
application/smil smi smil
application/srgs gram
application/srgs+xml grxml
application/vnd.mif mif
application/vnd.mozilla.xul+xml xul
application/vnd.ms-excel xls
application/vnd.ms-powerpoint ppt
application/vnd.wap.wbxml wbxml
application/vnd.wap.wmlc .wmlc wmlc
application/vnd.wap.wmlscriptc .wmlsc wmlsc
application/voicexml+xml vxml
application/x-bcpio bcpio
application/x-cdlink vcd
application/x-chess-pgn pgn
application/x-cpio cpio
application/x-csh csh
application/x-director dcr dir dxr
application/x-dvi dvi
application/x-futuresplash spl
application/x-gtar gtar
application/x-hdf hdf
application/x-httpd-php .php .php4 .php3 .phtml
application/x-httpd-php-source .phps
application/x-javascript js
application/x-koan skp skd skt skm
application/x-latex latex
application/x-netcdf nc cdf
application/x-pkcs7-crl .crl
application/x-sh sh
application/x-shar shar
application/x-shockwave-flash swf
application/x-stuffit sit
application/x-sv4cpio sv4cpio
application/x-sv4crc sv4crc
application/x-tar .tgz tar
application/x-tcl tcl
application/x-tex tex
application/x-texinfo texinfo texi
application/x-troff t tr roff
application/x-troff-man man
application/x-troff-me me
application/x-troff-ms ms
application/x-ustar ustar
application/x-wais-source src
application/x-x509-ca-cert .crt
application/xhtml+xml xhtml xht
application/xml xml xsl
application/xml-dtd dtd
application/xslt+xml xslt
application/zip zip
audio/basic au snd
audio/midi mid midi kar
audio/mpeg mpga mp2 mp3
audio/x-aiff aif aiff aifc
audio/x-mpegurl m3u
audio/x-pn-realaudio ram rm
audio/x-pn-realaudio-plugin rpm
audio/x-realaudio ra
audio/x-wav wav
chemical/x-pdb pdb
chemical/x-xyz xyz
image/bmp bmp
image/cgm cgm
image/gif gif
image/ief ief
image/jpeg jpeg jpg jpe
image/png png
image/svg+xml svg
image/tiff tiff tif
image/vnd.djvu djvu djv
image/vnd.wap.wbmp .wbmp wbmp
image/x-cmu-raster ras
image/x-icon ico
image/x-portable-anymap pnm
image/x-portable-bitmap pbm
image/x-portable-graymap pgm
image/x-portable-pixmap ppm
image/x-rgb rgb
image/x-xbitmap xbm
image/x-xpixmap xpm
image/x-xwindowdump xwd
model/iges igs iges
model/mesh msh mesh silo
model/vrml wrl vrml
text/calendar ics ifb
text/css css
text/html .shtml html htm
text/plain asc txt
text/richtext rtx
text/rtf rtf
text/sgml sgml sgm
text/tab-separated-values tsv
text/vnd.wap.wml .wml wml
text/vnd.wap.wmlscript .wmls wmls
text/x-setext etx
video/mpeg mpeg mpg mpe
video/quicktime qt mov
video/vnd.mpegurl mxu
video/x-msvideo avi
video/x-sgi-movie movie
x-conference/x-cooltalk ice

 

top