Upload
fabiano-dalla-piazza
View
435
Download
2
Embed Size (px)
Citation preview
Ingegneria del software
1
INTERVENTI DI MANUTENZIONE E PROGETTO DI UN MODULO DI
REGISTRAZIONE AL SITO www.ing.units.it/bca
A CURA DI:Fabiano Dalla Piazza
Ingegneria del software
2
INDICE GENERALE
1. DEFINIZIONE DEL PROBLEMA 3 2. CONTESTO E FATTIBILITA’ 3 3. ANALISI DEI REQUISITI 3
a. Menù di accesso alla pagina 3 b.Parola chiave di accesso al modulo di iscrizione 3 c.Modulo d’iscrizione 6 d.Archivio 7 e.Schemi 7 4. PROGETTAZIONE 9 a.Pagina di accesso del sito 9 b.Pagina di accesso al form 9 c.Schema Entità-Relazione 9 d.Progettazione delle maschere 11 5.IMPLEMENTAZIONE 13 a.Menu di accesso alla pagina informativa 13 b.Pagina di accesso al form 15 c.Database in Microsoft Access 19 maschera principale 20 codice maschera principale 20 maschera admin 23 codice maschera admin 23 maschera corsisti 27 codice maschera principale 27 maschera autorizzati 31 codice maschera autorizzati 31 maschera iscritti 38 codice maschera iscritti 38 maschera richiedi password 45 codice maschera richiedi password 45 maschera password 47 codice maschera password 47 codice modulo1 49 d.Form di iscrizione in .asp 49 interfaccia alumni.asp 50 codice alumni.asp 51 interfaccia psswrd2.asp 54 codice psswrd2.asp 54 6.CONCLUSIONI 57
Ingegneria del software
3
1. Definizione del problema
La tesina riguarda la sostituzione nel sito http://www.ing.units.it/bca della colonna e relativo titolo “Registrazione” con una pagina contenente un’informativa sulla AT Alumni Association provvista di un collegamento con un’altra pagina dove è possibile iscriversi.Al termine della procedura,che deve accertarsi di eventuali errori ortografici e controllare i nomi autorizzati,viene rilasciata una password che consente al sottoscrittore di ricevere gli aggiornamenti.In caso di “utente non autorizzato” viene previsto un messaggio recante tale dicitura.
2. Contesto e fattibilità
Il sito http://www.ing.units.it/bca si occupa del Master universitario di primo livello in Assistite technology,uno dei cui curatori,la prof.Scotti è anche l’ideatrice di questo lavoro,ed eventualmente collaboratrice nel progetto.Il lavoro non è vincolato da contratto,per cui non presenta,almeno in linea teorica,limiti di costo o tempo.Ed è stato eseguito in armonia con il lavoro svolto dal collega Maurizio Chivella sull’omonimo sito.
3. Analisi dei requisiti
a. Menù di accesso alla pagina: In basso col colore blu(fig.1) è riportato un fac-simile del menù di scelta una volta che ci si collega con http://www.ing.units.it/bca.Un primo aggiustamento riguarda la voce “Registrazione” da sostituire con “Alumni”.Naturalmente cliccando poi su tale voce, si deve aprire il file con l’informativa sull’AT Alumni Association(fig. 2).
Home | Chi siamo | Didattica| FAQ| Sponsor| Registrazione| News| Contatti| Edizioni precedenti |
Figura 1
AT Alumni Association
AT Alumni Association è l’associazione aperta agli studenti ed ex studenti del Master in Assistive Technology.
L’obiettivo della AT Alumni Association è quello di valorizzare e tenere unito il più grande patrimonio di un Master: il network dei suoi studenti.
L’Associazione vuole offrire a tutti gli iscritti opportunità di aggiornamento e di crescita professionale: incoraggia il networking, favorisce lo sviluppo delle relazioni, organizza attività di formazione continua.
- Attraverso il networking e le numerose occasioni di incontro, tutti gli associati hanno la possibilità di condividere esperienze, informazioni e conoscenze, fondamentali per il continuo aggiornamento della propria professionalità. - Attraverso le attività di formazione organizzate dall’Associazione, gli iscritti hanno l’occasione di perfezionare le proprie competenze sui principali temi dell’Assistive Technology.
Ingegneria del software
4
Le attività dell’Associazione supportano anche i diplomati che desiderano riposizionarsi sul mercato del lavoro; attraverso azioni di networking e diffusione mirata di curricula, l’Associazione diviene uno strumento privilegiato di supporto al replacement dei diplomati del Master AT. Per iscriversi per la prima volta si deve compilare il form on-line. Iscrizione riservata ai Diplomati del Master in Assistive Technology e ai due Corsi di Perfezionamento in Assistive Technology L’Associazione opera attraverso:
• organizzazione di incontri periodici itineranti su specifiche tematiche di Assistive Technology
• organizzazione di iniziative di formazione continua
• attività destinate tipicamente al replacement degli associati
• circolazione di newsletter periodiche di aggiornamento
• organizzazione di occasioni di svago e intrattenimento destinate agli associati
•
Figura 2
b. Parola chiave di accesso al modulo di iscrizione: nella fig.2 ,dove è riportata la pagina informativa,c’è la parola chiave form on-line (qui riprodotta fedelmente).Cliccando su questa,si deve poter accedere al modulo di iscrizione,una cui rappresentazione viene visualizzata nella figura sottostante(fig.3),compresiva dei titoli.
Iscriviti all'associazione AT Alumni
E-MAIL * * Invalid Email
Nome * *
Cognome * *
Riempi i campi sottostanti Indirizzo di residenza *
*
Ingegneria del software
5
Indirizzo per invio corrispondenza *
*
Telefono * *
Corso Frequentato * CPAT: Corso di Perfezionamento in Assistive Technology MAT: Master in Assistive Technology
CPAT
MAT * Seleziona quale corso hai frequentato
Edizione * *
Inserire l’anno accademico dell’edizione frequentata
Note
Invia
Figura 3
Ingegneria del software
6
c. Modulo d’iscrizione: Tutti i campi* da riempire sono obbligatori,tranne uno.Vanno effettuati dei controlli che accertino eventuali incongruenze,mentre la lunghezza dei vari campi* è stabilita nell’ottica di eccedere,piuttosto che difettare:
� Nome:deve essere costituito solo da caratteri alfabetici,fino ad un massimo fissato arbitrariamente di 40;
� Cognome:deve essere costituito solo da caratteri alfabetici, fino ad un massimo fissato arbitrariamente di 40;
� E-mail:può essere costituito da caratteri alfanumerici e contenere almeno un @, fino ad un massimo fissato arbitrariamente di 50;
� Indirizzo di residenza:deve essere costituito solo da caratteri alfanumerici, fino ad un massimo fissato arbitrariamente di 60;
� Indirizzo per invio corrispondenza: deve essere costituito solo da caratteri alfanumerici, fino ad un massimo fissato arbitrariamente di 60;
� Telefono:sono ammessi esclusivamente caratteri numerici,con minimo di 9 fino ad un massimo fissato di 14(4 cifre di prefisso estero+4 cifre di prefisso distretto+6 cifre del numero);
� Corso frequentato:è obbligatorio indicare almeno uno dei corsi frequentati;
� Edizione:è obbligatorio inserire una cifra numerica di quattro lettere “realistica”(per es. una persona non può aver frequentato un corso nel 3014);
� Note:campo opzionale in cui sono ammessi caratteri alfanumerici, fino ad un massimo fissato arbitrariamente di 120.
� Password:deve essere costituita da caratteri ASCII validi in numero totale di 9.
d. Archivio: Naturalmente non è sufficiente un controllo ortografico o formale.Un requisito necessario affinché un utente si possa iscrivere è la partecipazione a uno dei corsi precedenti.La consultazione dell’archivio deve consentire questo controllo. Una volta che la registrazione ha avuto successo,viene richiesta una password(e conferma) per ciascun sottoscrittore,che verrà comunicata dall’utente.Qualora il processo di identificazione dia risultato negativo deve comparire il messaggio “Utente non autorizzato”.
Il committente non ha fornito,al momento,ulteriori dettagli sul successivo processo di riconoscimento finalizzato all’accesso,una volta che l’iscrizione sia già avvenuta.
e. Schemi: Uno schema generale indica l’interazione tra le parti(fig.4). Un collegamento consente di raggiungere dal sito,la pagina ancorata AT Alumni.Un secondo permette di giungere da questa al form di registrazione;il form richiede i dati utente,esegue controlli ortografici e di coerenza,richiede se l’utente risulti abilitato(utente autorizzato);l’utente riceve una risposta condizionata in base al controllo autorizzazione.
* campi:qui si intende il valore alfabetico,numerico o alfanumerico di una singola voce invocata dal modulo.Es. Nome
Ingegneria del software
7
LE
LEGENDA: Collegamento Risposta Richiesta dati Invio password o messaggio utente non autorizzato
Figura 4
Uno schema delle varie funzioni fatto mediante diagramma di flusso è riportato a pagina seguente(fig.5).In esso è indicata la sequenza delle operazioni.La convenzione adottata piuttosto diffusa stabilisce di indicare con rettangoli gli agenti esterni,con cerchi funzioni o processi,con doppia linea parallela gli archivi o basi di dati,con dei rombi le decisioni condizionate(per es.nel caso “inserisci Nome”,se dal controllo emergono dei valori incoerenti o scorretti,uscita rossa “NO” e ridigitazione Nome da parte dell’utente;in caso contrario uscita blu “OK” e prosegui con inserisci Cognome).
SITO WEB
AT ALUMNI
# #
FORM
ISCRIZIONE
ARCHIVIO
UTENTE
Ingegneria del software
8
UTENTE
ACCESSO AL SITO
SITO WEB
ACCESSO PAGINA AT
COMMUNITYFORM
ACCESSO AL FORM
E-MAILCOGNOME
INDIRIZZO INVIO
CORRISPONDENZA
TELEFONO EDIZIONE
INSERISCI
NOTE
PAGINA AT COMM
NOMEINDIRIZZO RESIDENZA
INSERISCI INDIRIZZO
INVIO CORRISPONDEN
ZA
CORSO FREQUENTA
TO
NOTECONTROLLOGENERA
PASSWORD
INV
IA
CO
MU
NIC
AZ
ION
E
ISC
RIZ
ION
E
INV
IA
ME
SS
AG
GIO
DI
ER
RO
RE
CHIEDI AUTORIZZAZIO
NE
INSERISCI E-MAIL
INSERISCI COGNOME
INSERISCI INDIRIZZO RESIDENZA
INSERISCI TELEFONO
INSERISCI CORSO
FREQUENTATO
INSERISCI EDIZIONE
NOME ESISTENTE
NELL’ARCHIVIO
OK
NO
OKOKOK
OKOKOK
OK
SI
NONONO
NO
NO NO NO
NO
INSERISCI NOME
SI
CHIEDI CONFERMA PASSWORD
CONFERMA ISCRIZIONE
NO
Figura 5
Ingegneria del software
9
4. Progettazione
a) Pagina di accesso del sito: la pagina del sito www.ing.units.it/bca reca il menu con cui si accede alla pagina di informazione.Un primo intervento prevede la sostituzione di “Registrazione” con “Alumni” nel codice HTML della pagina,memorizzata in un file la cui sottocartella è:\Master Assistive Technology_file\menu.htm.Quando si apre la pagina web,il codice HTML esegue delle chiamate delimitate da <A> e </A> tramite delle href a delle risorse memorizzate,che,nel caso venga scelto “Registrati”,carica il file contenuto in: "http://www.ing.units.it/bca/contenuti/06-07/registrazioni06-07.htm".Bisogna quindi memorizzare a tale indirizzo la nuova pagina comprensiva dell’informativa all’AT Alumni e accesso al form.E’ bene variare anche il titolo “Registrazione al sito” con “AT Alumni”,per evitare equivoci.
b) Pagina di accesso al form: nella pagina di accesso viene inserito un link di
collegamento a: "http://www.mib.edu/forms/Alumni.asp".Nel sito mib.edu si ricerca,tra le risorse forms,la pagina Alumni che effettua il controllo sui record.
c) Schema Entità-Relazione: in fig.6 è riportato lo schema Entità-Relazione
per il database.
ISCRITTI
CORSO MASTER
CORSISTI
PARTECIPAZIONE
APPARTENENZA
ID
NOME
INDIRIZZO RESIDENZA
INDIRIZZO INVIO TELEFONO
NOTE
PASSWORD
NOME
COGNOME
ID
TIPO
EDIZIONE
(1,N)
(1,N)
(1,1) (0,1)
COGNOME
ID_CORSOM
Figura 6
Ingegneria del software
10
ID_MAS CONTATORE A CHIAVE PRIMARIA;CAMPO AGGIORNATO AUTOMATICAMENTE
TIPO STRINGA NUMERICA:AI NUMERI I PULSANTI OPZIONALI ASSOCIANO I VALORI
NUMERICI INCREMENTALI;CAMPO OBBLIGATORIO
EDIZIONE STRINGA NUMERICA DI 4 CARATTERI ACCETTABILE;CAMPO OBBLIGATORIO
TABELLA CORSI MASTER
STRINGA ALFANUMERICA <=40 CARATTERI;CAMPO OBBLIGATORIOCOGNOME
NOME STRINGA ALFANUMERICA <=40 CARATTERI;CAMPO OBBLIGATORIO
TABELLA CORSISTI
ID_ISC
NOME
COGNOME
INDIRIZZO DI RESIDENZA
INDIRIZZO DI INVIO
TELEFONO
NOTE
PASSWORD
ID_CORSOM
CONTATORE A CHIAVE PRIMARIA;CAMPO AGGIORNATO AUTOMATICAMENTE
STRINGA ALFANUMERICA <=50 CARATTERI CONTENENTE ‘@’;CAMPO OBBLIGATORIO
STRINGA ALFANUMERICA <=40 CARATTERI;CAMPO OBBLIGATORIO
STRINGA ALFANUMERICA <=40 CARATTERI;CAMPO OBBLIGATORIO
STRINGA ALFANUMERICA <=60 CARATTERI;CAMPO OBBLIGATORIO
STRINGA ALFANUMERICA <=60 CARATTERI;CAMPO OBBLIGATORIO
STRINGA NUMERICA >=9 E <=14 CARATTERI;CAMPO OBBLIGATORIO
STRINGA ALFANUMERICA DI MAX 120 CARATTERI;CAMPO OBBLIGATORIO
STRINGA ALFANUMERICA DI MAX 9 CARATTERI;CAMPO OBBLIGATORIO
STRINGA NUMERICA DI COLEGAMENTO TABELLA CORSI MASTER
TABELLA ISCRITTI
Figura 7
In figura 7 compaiono le caratteristiche dei campi nelle tabelle,mentre a pagina seguente(fig.8)è riportato lo schema di collegamento fra le tabelle.L’iscrizione di un’utente può avvenire tramite confronto e relativo accertamento dell’appartenenza all’archivio corsisti,poiché ha partecipato ad un corso master.Ogni riga individua un campo della tabella,mentre i campi in rosso rappresentano le chiavi primarie.
Ingegneria del software
11
Figura 8
I D _ I S CN O M E
C O G N O M E
N O M E
C O G N O M E
I N D I R I Z Z O D I R E S I D E N Z A
I N D I R I Z Z O D I I N V I O
N O T E
P A S S W O R D
E - M A I L
I D _ M A S
T I P O
E D I Z I O N E
I D _ C O R S O M
d. Progettazione delle maschere: nella figura sotto(fig.9) è riportato lo schema utilizzato per le maschere.
ADMINADMIN
ISCRITTIISCRITTI
RICHIEDI RICHIEDI PASSWORDPASSWORD
PASSWORDPASSWORD
accedi al record dove accedi al record dove registrarsiregistrarsi
inserisci i dati utenteinserisci i dati utente
inserisci la passwordinserisci la password
conferma la passwordconferma la password
ute
nte non au
torizzato:esci
ute
nte n
on au
torizzato
:esci
ute
nte
aut
oriz
zato
uten
te
auto
rizz
ato
Passw
ord n
on P
assword
non
con
ferma
ta:rip
eticon
ferma
ta:rip
eti
Passw
ord con
fermata
:invia
Passw
ord co
nfermata
:invia
m
essagg
io iscrizione riuscita
messag
gio iscrizio
ne riu
scita
PRINCIPALEPRINCIPALEmodalità inserimento modalità inserimento
utenteutente
CORSISTICORSISTIAUTORIZZATIAUTORIZZATI
amministratoreamministratore
leggi o modifica i dati leggi o modifica i dati iscrittiiscritti
leggi ,modifica o leggi ,modifica o inserisci dei corsistiinserisci dei corsisti
Figura 9
Ingegneria del software
12
All’apertura del file Iscritti.mdb viene aperta in automatico la maschera “Principale”.Da essa si sceglie se inserire un nuovo iscritto,o agire da amministratore.Se si sceglie l’opzione “Admin” viene aperta la maschera “Iscritti” in modalità Aggiungi come form di iscrizione utente,selezionando il record.Qui i dati utente vengono confrontati con quelli dell’archivio partecipanti.Nonostante sia previsto un filtraggio(nome e cognome risultanti in archivio),qualora un cognome non soddisfi i requisiti,viòla comunque i requisiti dell’integrità referenziale,generando un errore e abortendo la transazione.L’errore viene successivamente “intercettato” e riformulato con la frase “UTENTE NON AUTORIZZATO”,che provoca l’uscita dal file. La maschera “Richiedi Password” permette l’inserimento di una parola chiave;usa poi una maschera “Password” per richiedere la digitazione.Se le due coincidono,viene comunicato all’utente l’avvenuta iscrizione,altrimenti viene inoltrata un’ulteriore richiesta,fino al successo dell’operazione,salvo uscita volontaria.
L’uscita provoca la chiusura di tutte le maschere. Se invece si opta per la maschera “Amministratore,si aprono le maschere “Autorizzati” per le operazioni sui dati “Iscritti” e “Corsisti” per immettere o modificare i corsisti.
GLI OGGETTI DI CLASSE IMPIEGATI:
� Form_Principale USA Form_Admin e Form_Autorizzati e Form_Corsisti
� Form_Admin USA Form_Iscritti
� Form_Iscritti USA Form_Richiedi_Password
� Form_Richiedi_Password USA Form_Password
� Form_Password
� Form_Corsisti
� Form_Autorizzati
I MODULI UTILIZZATI:
� Modulo1 PER IMPOSTARE COSTANTI
Il codice relativo alle maschere è riportato in testa al codice sorgente(parte 5).
Ingegneria del software
13
5. Implementazione
a) Menu di accesso alla pagina informativa: in fig.10 è visualizzata la nuova pagina del sito recante a sinistra il menu di scelta.
Figura 10
Sotto viene visualizzato il codice HTML (fig.11)della precedente pagina che è stata sostituita.Il codice è variato poiché è stata modificata la veste grafica del sito.La variazione da eseguire alla data di assegnazione del lavoro nella vecchia pagina riguarda la parte indicata in rosso,da sostituire con la parola in verde. Le modifiche alla pagina sono state apportate dai responsabili della progettazione sito e E-Learning,fra cui Roberto Tomat.
Ingegneria del software
14
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <!-- saved from url=(0052)http://www.ing.units.it/bca/contenuti/06-07/menu.htm -->
<HTML><HEAD><TITLE>Master in Assistive Technology 2004-2005</TITLE> <META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.6000.16481" name=GENERATOR> <SCRIPT language=JavaScript1.2> <!-- var yourwords = 'Si raccomanda di consultare frequentemente il sito in quanto viene spesso aggiornato';
var speed = 1000; var control = 1;
function flash() { if (control == 1) { document.forms["myform"].testo2.value=yourwords; control=0; speed=1400 } else { document.forms["myform"].testo2.value=""; control=1; speed=500 } setTimeout("flash();",speed); }
function MM_reloadPage(init) { //reloads the window if Nav4 resized if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) { document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }} else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload(); } MM_reloadPage(true); //--> </SCRIPT> </HEAD> <BODY vLink=#000000 aLink=#000000 link=#ffffff bgColor=#006699 background=menu_file/color_background.jpg> <DIV id=Layer1 style="Z-INDEX: 1; LEFT: 1px; WIDTH: 858px; POSITION: absolute; TOP: 218px; HEIGHT: 35px" align=center> <P><FONT face="Verdana, Arial, Helvetica, sans-serif" size=3><A title="Home page" href="http://www.ing.units.it/bca/contenuti/06-07/intro.htm" target=contenuti><STRONG>Home</STRONG></A> | <A title="chi siamo" href="http://www.ing.units.it/bca/contenuti/06-07/chisiamo06-07.htm" target=contenuti><STRONG>Chi siamo </STRONG></A>| <A title="programma didattico"
href="http://www.ing.units.it/bca/contenuti/06-07/didattica06-07.htm" target=contenuti><STRONG>Didattica</STRONG></A>| <A title=faq href="http://www.ing.units.it/bca/contenuti/06-07/faq06-07.htm" target=contenuti><STRONG>FAQ</STRONG></A>| <A title=sponsor href="http://www.ing.units.it/bca/contenuti/06-07/sponsor06-07.htm" target=contenuti><STRONG>Sponsor</STRONG></A>| <A title="Registrazione al sito" href="http://www.ing.units.it/bca/contenuti/06-07/registrazioni06-07.htm" target=contenuti><STRONG>Registrazione SOSTITUITA CON Alumni </STRONG></A>| <A title=Eventi href="http://www.ing.units.it/bca/contenuti/06-07/eventi06-07.htm" target=contenuti><STRONG>News</STRONG></A>| <A title=Contatti href="http://www.ing.units.it/bca/contenuti/06-07/contatti06-07.htm" target=contenuti><STRONG>Contatti</STRONG></A>| <A title="Edizioni precedenti del Master" href="http://www.ing.units.it/bca/contenuti/06-07/edizioni_precedenti06-07.htm" target=contenuti><STRONG>Edizioni precedenti</STRONG></A> | </FONT></P></DIV> <DIV id=Layer2 style="Z-INDEX: 11; LEFT: 5px; WIDTH: 281px; POSITION: absolute; TOP: 7px; HEIGHT: 70px"><IMG height=77 alt="Logo università di Trieste" src="menu_file/logo_units2.jpg" width=77> <IMG height=37 alt="Facoltà di ingegneria" src="menu_file/logo_units2_testo.jpg" width=192 align=top> </DIV> <DIV id=Layer3 style="Z-INDEX: 3; LEFT: 5px; WIDTH: 271px; POSITION: absolute; TOP: 85px; HEIGHT: 58px"><IMG
Ingegneria del software
15
height=75 alt="Logo università di Pordenone" src="menu_file/logo_unipn2.jpg" width=68> <IMG height=68 alt="Consorzio di Pordenone per la Formazione Superiore gli Studi Universitari e la Ricerca" src="menu_file/logo_unipn2_testo.jpg" width=183 align=top></DIV> <DIV id=Layer4 style="Z-INDEX: 4; LEFT: 4px; WIDTH: 266px; POSITION: absolute; TOP: 168px; HEIGHT: 42px"><IMG height=41 alt="Logo Fondazione Risorsa Donna" src="menu_file/logo_risdonna2.jpg" width=67><IMG height=36 alt="Con il Patrocinio della Fondazione risorsa donna" src="menu_file/logo_fonddonna2_testo.jpg" width=172></DIV> <DIV id=Layer5 style="Z-INDEX: 5; LEFT: 503px; WIDTH: 322px; POSITION: absolute; TOP: 7px; HEIGHT: 211px"> <P align=center><IMG height=62 alt="Master di I livello" src="menu_file/master_univ_testo.jpg" width=245><BR><IMG height=81 alt="Assistive Technology" src="menu_file/ass_technology_testo.jpg" width=259> <BR><IMG height=27 alt="Ausili per l'utenza ampliata" src="menu_file/ausili_per_testo.jpg" width=314> <BR><IMG height=32 src="menu_file/quartaedizione.jpg" width=333> </P></DIV> <DIV id=Layer8 style="Z-INDEX: 8; LEFT: 286px; WIDTH: 186px; POSITION: absolute; TOP: 5px; HEIGHT: 209px"><IMG height=203 src="menu_file/Vitruvio-web%2520small.png"
width=177></DIV></BODY></HTML>
Figura 11
b) Pagina di accesso al form: di seguito(fig.12) viene riportato il codice HTML della pagina informativa per accedere al form di iscrizione.In rosso è evidenziato il collegamento href,con in verde il form di iscrizione Alumni.asp.In fig.13,una visualizzazione zoomata della pagina come appare nel web.Il committente ha alla fine deciso di modificare il titolo “AT Community” con “AT Alumni”.Comunque basta sostituire la parola in alcuni programmi e il codice viene generato automaticamente.Se si opera direttamente in HTML bisogna cambiare il codice stesso(più laborioso).
<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns="http://www.w3.org/TR/REC-html40"> <head> <meta http-equiv=Content-Type content="text/html; charset=windows-1252"> <meta name=ProgId content=Word.Document> <meta name=Generator content="Microsoft Word 9"> <meta name=Originator content="Microsoft Word 9"> <link rel=File-List href="./Alumni_file/filelist.xml"> <title>Registrazione al sito</title> <!--[if gte mso 9]><xml> <o:DocumentProperties> <o:Author>fiorenza</o:Author> <o:Template>Normal</o:Template> <o:LastAuthor>FABIANO DALLA PIAZZA</o:LastAuthor> <o:Revision>2</o:Revision> <o:TotalTime>43</o:TotalTime> <o:Created>2007-08-21T15:30:00Z</o:Created> <o:LastSaved>2007-08-21T15:30:00Z</o:LastSaved> <o:Pages>1</o:Pages> <o:Words>300</o:Words> <o:Characters>1710</o:Characters> <o:Lines>14</o:Lines> <o:Paragraphs>3</o:Paragraphs> <o:CharactersWithSpaces>2100</o:CharactersWithSpaces> <o:Version>9.2812</o:Version> </o:DocumentProperties> <o:CustomDocumentProperties>
Ingegneria del software
16
<o:_AdHocReviewCycleID dt:dt="float">918374387</o:_AdHocReviewCycleID> <o:_NewReviewCycle dt:dt="string"></o:_NewReviewCycle> <o:_EmailSubject dt:dt="string">argomento per tesina d'esame</o:_EmailSubject> <o:_AuthorEmail dt:dt="string">[email protected]</o:_AuthorEmail> <o:_AuthorEmailDisplayName dt:dt="string">Fiorenza Scotti</o:_AuthorEmailDisplayName> </o:CustomDocumentProperties> </xml><![endif]--><!--[if gte mso 9]><xml> <w:WordDocument> <w:HyphenationZone>14</w:HyphenationZone> <w:PunctuationKerning/> </w:WordDocument> </xml><![endif]--> <style> <!-- /* Font Definitions */ @font-face {font-family:Wingdings; panose-1:5 0 0 0 0 0 0 0 0 0; mso-font-charset:2; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:0 268435456 0 0 -2147483648 0;} @font-face {font-family:Verdana; panose-1:2 11 6 4 3 5 4 4 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:536871559 0 0 0 415 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman";} h1 {margin-right:0cm; mso-margin-top-alt:auto; mso-margin-bottom-alt:auto; margin-left:0cm; mso-pagination:widow-orphan; mso-outline-level:1; font-size:24.0pt; font-family:"Times New Roman"; mso-font-kerning:18.0pt; font-weight:bold;} h3 {margin-right:0cm; mso-margin-top-alt:auto; mso-margin-bottom-alt:auto; margin-left:0cm; mso-pagination:widow-orphan; mso-outline-level:3; font-size:13.5pt; font-family:"Times New Roman"; font-weight:bold;} p.MsoFooter, li.MsoFooter, div.MsoFooter {margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; tab-stops:center 240.95pt right 481.9pt; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman";} p {margin-right:0cm; mso-margin-top-alt:auto; mso-margin-bottom-alt:auto; margin-left:0cm; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman";} p.stile2, li.stile2, div.stile2
Ingegneria del software
17
{mso-style-name:stile2; margin-right:0cm; mso-margin-top-alt:auto; mso-margin-bottom-alt:auto; margin-left:0cm; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman";} p.p1, li.p1, div.p1 {mso-style-name:p1; margin-right:0cm; mso-margin-top-alt:auto; mso-margin-bottom-alt:auto; margin-left:0cm; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman";} span.evidenziaprogrammi {mso-style-name:evidenzia_programmi;} /* Page Definitions */ @page {mso-footnote-separator:url("./Alumni_file/header.htm") fs; mso-footnote-continuation-separator:url("./Alumni_file/header.htm") fcs; mso-endnote-separator:url("./Alumni_file/header.htm") es; mso-endnote-continuation-separator:url("./Alumni_file/header.htm") ecs;} @page Section1 {size:595.3pt 841.9pt; margin:70.85pt 2.0cm 2.0cm 2.0cm; mso-header-margin:35.4pt; mso-footer-margin:35.4pt; mso-even-footer:url("./Alumni_file/header.htm") ef1; mso-footer:url("./Alumni_file/header.htm") f1; mso-paper-source:0;} div.Section1 {page:Section1;} /* List Definitions */ @list l0 {mso-list-id:999767469; mso-list-template-ids:-1750029814;} @list l0:level1 {mso-level-number-format:bullet; mso-level-text:\F0B7; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Symbol;} ol {margin-bottom:0cm;} ul {margin-bottom:0cm;} --> </style> <!--[if gte mso 9]><xml> <o:shapedefaults v:ext="edit" spidmax="2050"/> </xml><![endif]--><!--[if gte mso 9]><xml> <o:shapelayout v:ext="edit"> <o:idmap v:ext="edit" data="1"/> </o:shapelayout></xml><![endif]--> </head> <body lang=IT style='tab-interval:35.4pt'> <div class=Section1> <p class=MsoNormal><span style='font-family:Verdana'>AT Alumni Association <o:p></o:p></span></p> <p><strong><span style='font-family:Verdana'>AT Alumni Association</span></strong><span style='font-family:Verdana'> è l’associazione aperta agli studenti ed ex studenti del Master in Assistive Technology.<span style="mso-spacerun: yes"> </span><o:p></o:p></span></p> <p><span style='font-family:Verdana'> L’obiettivo della AT Alumni Association è quello di <strong>valorizzare e tenere unito il più grande patrimonio di<span style="mso-spacerun: yes"> </span>un Master: il network dei
Ingegneria del software
18
suoi studenti. </strong><o:p></o:p></span></p> <p><span style='font-family:Verdana'>L’Associazione vuole offrire a tutti gli iscritti opportunità di aggiornamento e di crescita professionale: incoraggia il networking, favorisce lo sviluppo delle relazioni, organizza attività di formazione continua. <o:p></o:p></span></p> <p class=MsoNormal><span style='font-family:Verdana'>- Attraverso il <strong>networking e le numerose occasioni di incontro</strong>, tutti gli associati hanno la possibilità di condividere esperienze, informazioni e conoscenze, fondamentali per il continuo aggiornamento della propria professionalità.<o:p></o:p></span></p> <p class=MsoNormal><span style='font-family:Verdana'>- Attraverso le <strong>attività di formazione</strong> organizzate dall’Associazione, gli iscritti hanno l’occasione di perfezionare le proprie competenze sui principali temi dell’Assistive Technology.<o:p></o:p></span></p> <p class=MsoNormal><span style='font-family:Verdana'> <o:p></o:p></span></p> <p class=MsoNormal><span style='font-family:Verdana'>Le attività dell’Associazione supportano anche i diplomati che desiderano riposizionarsi sul mercato del lavoro; attraverso azioni di <strong>networking e diffusione mirata di curricula</strong>, l’Associazione diviene uno strumento privilegiato di supporto al replacement dei diplomati del Master AT.<o:p></o:p></span></p> <p class=MsoNormal><span style='font-family:Verdana'> <o:p></o:p></span></p> <p class=MsoNormal><span style='font-family:Verdana'> <o:p></o:p></span></p> <p class=MsoNormal><strong><span style='font-family:Verdana'>Per iscriversi per la prima volta si deve compilare il </span></strong><span style='font-family: Verdana'><a href="http://www.mib.edu/forms/Alumni.asp"><strong>form on-line</strong></a><strong>. </strong><o:p></o:p></span></p> <p class=MsoNormal><span style='font-family:Verdana'><br> <strong><span style='color:red'>Iscrizione riservata ai Diplomati del Master in Assistive Technology e ai due Corsi di Perfezionamento in Assistive Technology</span></strong><b><span style='color:red'><br> <br> </span></b><span class=evidenziaprogrammi>L’Associazione opera attraverso:</span><o:p></o:p></span></p> <ul type=disc> <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; mso-list:l0 level1 lfo1;tab-stops:list 36.0pt'><span style='font-family: Verdana'>organizzazione di incontri periodici itineranti su specifiche tematiche di Assistive Technology <o:p></o:p></span></li> <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; mso-list:l0 level1 lfo1;tab-stops:list 36.0pt'><span style='font-family: Verdana'>organizzazione di iniziative di formazione continua<o:p></o:p></span></li> <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; mso-list:l0 level1 lfo1;tab-stops:list 36.0pt'><span style='font-family: Verdana'>attività destinate tipicamente al replacement degli associati<o:p></o:p></span></li> <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; mso-list:l0 level1 lfo1;tab-stops:list 36.0pt'><span style='font-family: Verdana'>circolazione di newsletter periodiche di aggiornamento<o:p></o:p></span></li> <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; mso-list:l0 level1 lfo1;tab-stops:list 36.0pt'><span style='font-family: Verdana'>organizzazione di occasioni di svago e intrattenimento destinate agli associati<o:p></o:p></span></li> </ul> <h1><span style='font-size:12.0pt;font-family:Verdana'><![if !supportEmptyParas]> <![endif]><o:p></o:p></span></h1> </div> </body> </html>
Figura 12
Ingegneria del software
19
AT Alumni Association
AT Alumni Association è l’associazione aperta agli studenti ed ex studenti del Master in Assistive Technology.
L’obiettivo della AT Alumni Association è quello di valorizzare e tenere unito il più grande patrimonio di un Master: il network dei suoi studenti.
L’Associazione vuole offrire a tutti gli iscritti opportunità di aggiornamento e di crescita professionale: incoraggia il networking, favorisce lo sviluppo delle relazioni, organizza attività di formazione continua.
- Attraverso il networking e le numerose occasioni di incontro, tutti gli associati hanno la possibilità di condividere esperienze, informazioni e conoscenze, fondamentali per il continuo aggiornamento della propria professionalità. - Attraverso le attività di formazione organizzate dall’Associazione, gli iscritti hanno l’occasione di perfezionare le proprie competenze sui principali temi dell’Assistive Technology. Le attività dell’Associazione supportano anche i diplomati che desiderano riposizionarsi sul mercato del lavoro; attraverso azioni di networking e diffusione mirata di curricula, l’Associazione diviene uno strumento privilegiato di supporto al replacement dei diplomati del Master AT. Per iscriversi per la prima volta si deve compilare il form on-line. Iscrizione riservata ai Diplomati del Master in Assistive Technology e ai due Corsi di Perfezionamento in Assistive Technology L’Associazione opera attraverso:
• organizzazione di incontri periodici itineranti su specifiche tematiche di Assistive Technology
• organizzazione di iniziative di formazione continua
• attività destinate tipicamente al replacement degli associati
• circolazione di newsletter periodiche di aggiornamento
• organizzazione di occasioni di svago e intrattenimento destinate agli associati
Figura 13
c) Database in Microsoft Access: in fig.14 viene mostrata la maschera “principale” avviata in automatico all’apertura del file,mentre in fig.15 ne viene visualizzato il codice.Di seguito vengono proposti la maschera “Admin”(fig.16) e relativo codice(fig.17) e la maschera(fig.18) e il codice(fig.19) “Corsisti”.
Ingegneria del software
20
MASCHERA PRINCIPALE
Figura 14
CODICE MASCHERA PRINCIPALE Option Compare Database '===================================================================================== 'CODICE MASCHERA PRINCIPALE '===================================================================================== 'Tutte le Sub eseguite sono procedure interne 'Le costanti usate sono FORM_ATTIVO e le COSTANTI per i colori 'All' apertura del file viene eseguito il codice Form_Open che in automatico chiama la machera principale Private Sub Form_Open(Cancel As Integer) 'Rendi il Form attivo FORM_ATTIVO = True 'Imposta i colori dello sfondo(BackColor) e dei pulsanti di comando Iscriviti(Comando_Apri_Iscritti, 'Esci(Comando_Chiudi_Principale) e Amministratore(Apri_Admin) Corpo.BackColor = COLORE_BIANCO Etichetta_Scegliere.FontSize = 14 Comando_Apri_Iscritti.ForeColor = COLORE_ROSSO Comando_Chiudi_Principale.ForeColor = COLORE_ROSSO Comando_Apri_Admin.ForeColor = COLORE_ROSSO End Sub 'Se si clicca con il mouse sul pulsante Iscriviti cambia il colore della scritta Private Sub Comando_Apri_Iscritti_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Apri_Iscritti.ForeColor = COLORE_ROSSO End Sub 'Se ci si sposta con il mouse sopra il pulsante Iscriviti cambia il colore e lo spessore della scritta Private Sub Comando_Apri_Iscritti_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Apri_Iscritti.ForeColor = COLORE_NERO Comando_Apri_Iscritti.FontBold = True End Sub
Ingegneria del software
21
'Al rilascio del tasto del mouse dopo il click sul pulsante Iscriviti cambia il colore della scritta Private Sub Comando_Apri_Iscritti_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Apri_Iscritti.ForeColor = COLORE_BLU End Sub 'Se si clicca con il mouse sul pulsante Esci cambia il colore della scritta Private Sub Comando_Chiudi_Principale_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Chiudi_Principale.ForeColor = COLORE_ROSSO End Sub 'Se ci si sposta con il mouse sopra il pulsante Esci cambia il colore e lo spessore della scritta Private Sub Comando_Chiudi_Principale_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Chiudi_Principale.ForeColor = COLORE_NERO Comando_Chiudi_Principale.FontBold = True End Sub 'Al rilascio del tasto del mouse dopo il click sul pulsante Esci cambia il colore della scritta Private Sub Comando_Chiudi_Principale_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Chiudi_Principale.ForeColor = COLORE_BLU End Sub 'Se si clicca con il mouse sul pulsante Amministratore cambia il colore della scritta Private Sub Comando_Apri_Admin_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Apri_Admin.ForeColor = COLORE_ROSSO End Sub 'Se ci si sposta con il mouse sopra il pulsante Amministratore cambia il colore e lo spessore della scritta Private Sub Comando_Apri_Admin_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Apri_Admin.ForeColor = COLORE_NERO Comando_Apri_Admin.FontBold = True End Sub 'Al rilascio del tasto del mouse dopo il click sul pulsante Amministratore cambia il colore della scritta Private Sub Comando_Apri_Admin_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Apri_Admin.ForeColor = COLORE_BLU End Sub 'Se si clicca sul corpo della maschera cambia il colore Private Sub Corpo_Click() Corpo.BackColor = COLORE_DEFAULT End Sub 'Se si clicca sul pulsante Iscriviti Private Sub Comando_Apri_Iscritti_Click() 'Se c'è un errore salta all' etichetta Err_Comando_Apri_Iscritti_Click e ne esegue il codice On Error GoTo Err_Comando_Apri_Iscritti_Click 'Va fino all'ultimo record registrato DoCmd.GoToRecord , , acLast 'Apre la maschera Iscritti in modalità aggiungi record DoCmd.OpenForm "Iscritti", acNormal, "", "", acAdd, acNormal 'Procedura di uscita Exit_Comando_Apri_Iscritti_Click: Exit Sub 'Procedura di errore:visualizza l'errore(description) ed esce Err_Comando_Apri_Iscritti_Click: MsgBox Err.Description Resume Exit_Comando_Apri_Iscritti_Click End Sub
Ingegneria del software
22
'Se si clicca sul pulsante Esci Private Sub Comando_Chiudi_Principale_Click() 'Se c'è un errore salta all' etichetta Err_Comando_Chiudi_Principale_Click e ne esegue il codice On Error GoTo Err_Comando_Chiudi_Principale_Click 'Chiude la maschera attuale DoCmd.Close 'Esce dal file DoCmd.Quit 'Procedura di uscita Exit_Comando_Chiudi_Principale_Click: Exit Sub 'Procedura di errore:visualizza l'errore(description) ed esce Err_Comando_Chiudi_Principale_Click: MsgBox Err.Description Resume Exit_Comando_Chiudi_Principale_Click End Sub 'Se si clicca sul comando Amministratore Private Sub Comando_Apri_Admin_Click() 'Se c'è un errore salta all' etichetta Err_Comando_Apri_Admin e ne esegue il codice On Error GoTo Err_Comando_Apri_Admin_Click 'Variabili stringhe Dim stDocName As String Dim stLinkCriteria As String 'Memorizza il nome della maschera che verrà aperta stDocName = "Admin" 'Apre la maschera Richiedi password con i criteri esposti DoCmd.OpenForm stDocName, , , stLinkCriteria 'Procedura di uscita Exit_Comando_Apri_Admin_Click: Exit Sub 'Procedura di errore:visualizza l'errore(description) ed esce Err_Comando_Apri_Admin_Click: MsgBox Err.Description Resume Exit_Comando_Apri_Admin_Click End Sub Figura 15
Ingegneria del software
23
MASCHERA ADMIN
Figura 16
CODICE MASCHERA ADMIN Option Compare Database '============================================================================================================ 'CODICE MASCHERA ADMIN '============================================================================================================ 'Tutte le Sub eseguite sono procedure interne 'Le costanti utilizzate sono quelle per i colori 'All' apertura del file viene eseguito il codice Form_Open che in automatico chiama la machera principale Private Sub Form_Open(Cancel As Integer) 'All'apertura imposta il colore degli sfondi maschera e menu pulsanti opzionali,ingrandisce 'i caratteri delle due etichette istruttive,stabilisce il colore della scritta del pulsante invio 'e fissa i colori di tutte le etichette di tutti i campi
Ingegneria del software
24
Corpo.BackColor = COLORE_BIANCO Etichetta_Corsisti.FontSize = 14 Etichetta_Iscritti.FontSize = 14 Comando_Lettura_Corsisti.ForeColor = COLORE_ROSSO Comando_Inserisci_Corsisti.ForeColor = COLORE_ROSSO Comando_Modifica_Corsisti.ForeColor = COLORE_ROSSO Comando_Lettura_Iscritti.ForeColor = COLORE_ROSSO Comando_Modifica_Iscritti.ForeColor = COLORE_ROSSO Comando_Torna_Principale.ForeColor = COLORE_ROSSO End Sub '=======================================CORSISTI===================================== 'Se si clicca con il mouse sul pulsante Sola lettura cambia il colore della scritta Private Sub Comando_Lettura_Corsisti_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Lettura_Corsisti.ForeColor = COLORE_ROSSO End Sub 'Al rilascio del tasto del mouse dopo il click sul pulsante Sola lettura cambia il colore della scritta Private Sub Comando_Lettura_Corsisti_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Lettura_Corsisti.ForeColor = COLORE_BLU End Sub 'Se ci si sposta con il mouse sopra il pulsante Sola Lettura cambia il colore e lo spessore della scritta Private Sub Comando_Lettura_Corsisti_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Lettura_Corsisti.ForeColor = COLORE_NERO Comando_Lettura_Corsisti.FontBold = True End Sub 'Se si clicca con il mouse sul pulsante Inserisci cambia il colore della scritta Private Sub Comando_Inserisci_Corsisti_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Inserisci_Corsisti.ForeColor = COLORE_ROSSO End Sub 'Al rilascio del tasto del mouse dopo il click sul pulsante Inserisci cambia il colore della scritta Private Sub Comando_Inserisci_Corsisti_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Inserisci_Corsisti.ForeColor = COLORE_BLU End Sub 'Se ci si sposta con il mouse sopra il pulsante Inserisci cambia il colore e lo spessore della scritta Private Sub Comando_Inserisci_Corsisti_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Inserisci_Corsisti.ForeColor = COLORE_NERO Comando_Inserisci_Corsisti.FontBold = True End Sub 'Se si clicca con il mouse sul pulsante Modifica cambia il colore della scritta Private Sub Comando_Modifica_Corsisti_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Modifica_Corsisti.ForeColor = COLORE_ROSSO End Sub 'Al rilascio del tasto del mouse dopo il click sul pulsante Modifica cambia il colore della scritta Private Sub Comando_Modifica_Corsisti_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Modifica_Corsisti.ForeColor = COLORE_BLU End Sub 'Se ci si sposta con il mouse sopra il pulsante Modifica cambia il colore e lo spessore della scritta Private Sub Comando_Modifica_Corsisti_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Modifica_Corsisti.ForeColor = COLORE_NERO Comando_Modifica_Corsisti.FontBold = True End Sub
Ingegneria del software
25
'===========================================ISCRITTI=================================== 'Se si clicca con il mouse sul pulsante Sola lettura cambia il colore della scritta Private Sub Comando_Lettura_Iscritti_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Lettura_Iscritti.ForeColor = COLORE_ROSSO End Sub 'Al rilascio del tasto del mouse dopo il click sul pulsante Sola lettura cambia il colore della scritta Private Sub Comando_Lettura_Iscritti_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Lettura_Iscritti.ForeColor = COLORE_BLU End Sub 'Se ci si sposta con il mouse sopra il pulsante Sola Lettura cambia il colore e lo spessore della scritta Private Sub Comando_Lettura_Iscritti_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Lettura_Iscritti.ForeColor = COLORE_NERO Comando_Lettura_Iscritti.FontBold = True End Sub 'Se si clicca con il mouse sul pulsante Modifica cambia il colore della scritta Private Sub Comando_Modifica_Iscritti_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Modifica_Iscritti.ForeColor = COLORE_ROSSO End Sub 'Al rilascio del tasto del mouse dopo il click sul pulsante Modifica cambia il colore della scritta Private Sub Comando_Modifica_Iscritti_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Modifica_Iscritti.ForeColor = COLORE_BLU End Sub 'Se ci si sposta con il mouse sopra il pulsante Modifica cambia il colore e lo spessore della scritta Private Sub Comando_Modifica_Iscritti_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Modifica_Iscritti.ForeColor = COLORE_NERO Comando_Modifica_Iscritti.FontBold = True End Sub 'Se si clicca con il mouse sul pulsante Torna alla maschera principale cambia il colore della scritta Private Sub Comando_Torna_Principale_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Torna_Principale.ForeColor = COLORE_ROSSO End Sub 'Al rilascio del tasto del mouse dopo il click sul pulsante Torna alla maschera principale 'cambia il colore della scritta Private Sub Comando_Torna_Principale_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Torna_Principale.ForeColor = COLORE_BLU End Sub 'Se ci si sposta con il mouse sopra il pulsante Torna alla maschera principale 'cambia il colore e lo spessore della scritta Private Sub Comando_Torna_Principale_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Torna_Principale.ForeColor = COLORE_NERO Comando_Torna_Principale.FontBold = True End Sub 'Se si clicca sul corpo della maschera cambia il colore Private Sub Corpo_Click() Corpo.BackColor = COLORE_DEFAULT End Sub 'Se si clicca sul pulsante Inserisci di corsisti:se c'è un errore esegue la sua procedura Private Sub Comando_Inserisci_Corsisti_Click() On Error GoTo Err_Comando_Inserisci_Corsisti_Click 'Variabili stringhe Dim stDocName As String Dim stLinkCriteria As String
Ingegneria del software
26
'Apre la maschera corsisti collegandola tramite il cognome stDocName = "Corsisti" stLinkCriteria = "[Cognome]=" & "'" & Me![Cognome] & "'" DoCmd.OpenForm stDocName, , , stLinkCriteria 'Procedura di uscita Exit_Comando_Inserisci_Corsisti_Click: Exit Sub 'Procedura di errore:visualizza l'errore(description) ed esce Err_Comando_Inserisci_Corsisti_Click: MsgBox Err.Description Resume Exit_Comando_Inserisci_Corsisti_Click End Sub 'Se si clicca sul pulsante Torna alla maschera principale di corsisti:se c'è un errore esegue la sua procedura Private Sub Comando_Torna_Principale_Click() On Error GoTo Err_Comando_Torna_Principale_Click 'Chiude la maschera DoCmd.Close 'Procedura di uscita Exit_Comando_Torna_Principale_Click: Exit Sub 'Procedura di errore:visualizza l'errore(description) ed esce Err_Comando_Torna_Principale_Click: MsgBox Err.Description Resume Exit_Comando_Torna_Principale_Click End Sub 'Se si clicca sul pulsante Modifica di corsisti:se c'è un errore esegue la sua procedura Private Sub Comando_Modifica_Corsisti_Click() On Error GoTo Err_Comando_Modifica_Corsisti_Click 'Apre la maschera corsisti e visualizza la maschera Trova record DoCmd.OpenForm "Corsisti", acNormal, "", "", acEdit, acNormal Screen.PreviousControl.SetFocus DoCmd.DoMenuItem acFormBar, acEditMenu, 10, , acMenuVer70 'Procedura di uscita Exit_Comando_Modifica_Corsisti_Click: Exit Sub 'Procedura di errore:visualizza l'errore(description) ed esce Err_Comando_Modifica_Corsisti_Click: MsgBox Err.Description Resume Exit_Comando_Modifica_Corsisti_Click End Sub 'Se si clicca sul pulsante Modifica di iscritti:se c'è un errore esegue la sua procedura Private Sub Comando_Modifica_Iscritti_Click() On Error GoTo Err_Comando_Modifica_Iscritti_Click 'Apre la maschera Autorizzati(con i dati iscritti) e visualizza la maschera Trova record DoCmd.OpenForm "Autorizzati", acNormal, "", "", acEdit, acNormal Screen.PreviousControl.SetFocus DoCmd.DoMenuItem acFormBar, acEditMenu, 10, , acMenuVer70 'Procedura di uscita Exit_Comando_Modifica_Iscritti_Click: Exit Sub 'Procedura di errore:visualizza l'errore(description) ed esce Err_Comando_Modifica_Iscritti_Click: MsgBox Err.Description Resume Exit_Comando_Modifica_Iscritti_Click End Sub 'Se si clicca sul pulsante Sola lettura di corsisti:se c'è un errore esegue la sua procedura Private Sub Comando_Lettura_Corsisti_Click()
Ingegneria del software
27
On Error GoTo Err_Comando_Lettura_Corsisti_Click 'Apre la maschera Corsisti in modalità struttura DoCmd.OpenForm "Corsisti", acDesign, "", "", acReadOnly, acNormal 'Procedura di uscita Exit_Comando_Lettura_Corsisti_Click: Exit Sub 'Procedura di errore:visualizza l'errore(description) ed esce Err_Comando_Lettura_Corsisti_Click: MsgBox Err.Description Resume Exit_Comando_Lettura_Corsisti_Click End Sub 'Se si clicca sul pulsante Sola lettura di iscritti:se c'è un errore esegue la sua procedura Private Sub Comando_Lettura_Iscritti_Click() On Error GoTo Err_Comando_Lettura_Iscritti_Click 'Apre la maschera Autorizzati(con i dati iscritti) in modalità struttura DoCmd.OpenForm "Autorizzati", acDesign, "", "", acReadOnly, acNormal 'Procedura di uscita Exit_Comando_Lettura_Iscritti_Click: Exit Sub 'Procedura di errore:visualizza l'errore(description) ed esce Err_Comando_Lettura_Iscritti_Click: MsgBox Err.Description Resume Exit_Comando_Lettura_Iscritti_Click End Sub Figura 17
MASCHERA CORSISTI
Figura 18
CODICE MASCHERA CORSISTI Option Compare Database
Ingegneria del software
28
'========================================================================================= 'CODICE MASCHERA CORSISTI '========================================================================================= 'Tutte le Sub eseguite sono procedure interne 'Non sono utilizzate costanti stringhe o booleane 'All' apertura del file viene eseguito il codice Form_Open che in automatico chiama la machera principale Private Sub Form_Open(Cancel As Integer) 'Imposta i colori dello sfondo,dei pulsanti di comando Torna alla maschera amministratore e 'Torna alla maschera principale,delle etichette Nome e Cognome 'e il carattere dell'etichetta Inserisci i dati Corpo.BackColor = COLORE_BIANCO Etichetta_Inserisci_Dati.FontSize = 14 Nome_Etichetta.ForeColor = COLORE_NERO Cognome_Etichetta.ForeColor = COLORE_NERO Comando_Torna_Admin.ForeColor = COLORE_ROSSO Comando_Torna_Principale.ForeColor = COLORE_ROSSO End Sub 'Se ci si sposta col mouse nel campo o etichetta Nome ingrandisce il carattere delle scritte di entrambi Private Sub Nome_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Nome_Etichetta.FontSize = 10 Nome.FontSize = 10 End Sub 'Se ci si sposta col mouse nel campo o etichetta Cognome ingrandisce il carattere delle scritte di entrambi Private Sub Cognome_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Cognome_Etichetta.FontSize = 10 Cognome.FontSize = 10 End Sub 'Se si entra nella casella di Nome vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub Nome_Enter() Nome_Etichetta.ForeColor = COLORE_NERO Nome_Etichetta.FontSize = 8 Nome.FontSize = 8 End Sub 'Se si clicca nella casella di Nome vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub Nome_Click() Nome_Etichetta.ForeColor = COLORE_NERO Nome_Etichetta.FontSize = 8 Nome.FontSize = 8 End Sub 'Se si esce dalla casella di Nome vengono definiti colore e 'grandezza scrittadell'etichetta e grandezza scritta nella casella Private Sub Nome_Exit(Cancel As Integer) Nome_Etichetta.ForeColor = COLORE_BIANCO Nome_Etichetta.FontSize = 8 Nome.FontSize = 8 End Sub 'Se si entra nella casella di Cognome vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub Cognome_Enter() Cognome_Etichetta.ForeColor = COLORE_NERO Cognome_Etichetta.FontSize = 8 Cognome.FontSize = 8
Ingegneria del software
29
End Sub 'Se si clicca nella casella di Cognome vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub Cognome_Click() Cognome_Etichetta.ForeColor = COLORE_NERO Cognome_Etichetta.FontSize = 8 Cognome.FontSize = 8 End Sub 'Se si esce dalla casella di Cognome vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub Cognome_Exit(Cancel As Integer) Cognome_Etichetta.ForeColor = COLORE_BIANCO Cognome_Etichetta.FontSize = 8 Cognome.FontSize = 8 End Sub 'Se si clicca con il mouse sul pulsante Torna alla maschera principale 'cambia il colore della scritta Private Sub Comando_Torna_Principale_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Torna_Principale.ForeColor = COLORE_ROSSO End Sub 'Al rilascio del tasto del mouse dopo il click sul pulsante Torna alla 'maschera principale cambia il colore della scritta Private Sub Comando_Torna_Principale_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Torna_Principale.ForeColor = COLORE_BLU End Sub 'Se ci si sposta con il mouse sopra il pulsante Torna alla maschera principale 'cambia il colore e lo spessore della scritta Private Sub Comando_Torna_Principale_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Torna_Principale.ForeColor = COLORE_NERO Comando_Torna_Principale.FontBold = True End Sub 'Se si clicca con il mouse sul pulsante Torna alla maschera amministratore cambia il colore della scritta Private Sub Comando_Torna_Admin_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Torna_Admin.ForeColor = COLORE_ROSSO End Sub 'Al rilascio del tasto del mouse dopo il click sul pulsante 'Torna alla maschera amministratore cambia il colore della scritta Private Sub Comando_Torna_Admin_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Torna_Admin.ForeColor = COLORE_BLU End Sub 'Se ci si sposta con il mouse sopra il pulsante Torna alla 'maschera amministratore cambia il colore e lo spessore della scritta Private Sub Comando_Torna_Admin_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Torna_Admin.ForeColor = COLORE_NERO Comando_Torna_Admin.FontBold = True End Sub 'Se si clicca sul corpo della maschera cambia il colore Private Sub Corpo_Click() Corpo.BackColor = COLORE_DEFAULT End Sub 'Se si clicca sul pulsante Torna alla maschera principale:se c'è un errore esegue la sua procedura Private Sub Comando_Torna_Principale_Click() On Error GoTo Err_Comando_Torna_Principale_Click 'Chiude la maschera e la precedente DoCmd.Close
Ingegneria del software
30
DoCmd.Close acForm, "Admin" 'Procedura di uscita Exit_Comando_Torna_Principale_Click: Exit Sub 'Procedura di errore:visualizza l'errore(description) ed esce Err_Comando_Torna_Principale_Click: MsgBox Err.Description Resume Exit_Comando_Torna_Principale_Click End Sub 'Se si clicca sul pulsante Torna alla maschera amministratore:se c'è un errore esegue la sua procedura Private Sub Comando_Torna_Admin_Click() On Error GoTo Err_Comando_Torna_Admin_Click 'Chiude la maschera DoCmd.Close 'Procedura di errore Exit_Comando_Torna_Admin_Click: Exit Sub 'Procedura di errore:visualizza l'errore(description) ed esce Err_Comando_Torna_Admin_Click: MsgBox Err.Description Resume Exit_Comando_Torna_Admin_Click End Sub Figura 19
Nelle seguenti fig.20 e fig.21 sono riportati rispettivamente la maschera e i codici della maschera “Autorizzati”.Infine le ultime tre maschere in sequenza: “Iscritti”(fig.22)con suo relativo codice(fig.23),”Richiedi_Password”(fig.24) e relativo codice(fig.25) e “Password”(fig.26) con codice visualizzato in fig.27.
Ingegneria del software
31
MASCHERA AU TORIZZATI
Figura 20
CODICE MASCHERA AUTO RIZZATI
Option Compare Database '========================================================================================== 'CODICE MASCHERA AUTORIZZATI '========================================================================================== 'Tutte le Sub eseguite sono procedure interne 'Le costanti usate sono le COSTANTI per i colori 'All' apertura del file viene eseguito il codice Form_Open che in automatico chiama la machera principale Private Sub Form_Open(Cancel As Integer)
Ingegneria del software
32
'Imposta i colori dello sfondo(BackColor) e dei pulsanti di comando Iscriviti(Comando_Apri_Iscritti, 'Esci(Comando_Chiudi_Principale) e Amministratore(Apri_Admin) Corpo.BackColor = COLORE_BIANCO Etichetta_dati_Iscritti.FontSize = 14 Etichetta_Seleziona.BackColor = COLORE_BIANCO Comando_Torna_Admin.ForeColor = COLORE_ROSSO Comando_Torna_Principale.ForeColor = COLORE_ROSSO E_Mail_Etichetta.ForeColor = COLORE_NERO Nome_Etichetta.ForeColor = COLORE_NERO Cognome_Etichetta.ForeColor = COLORE_NERO Indirizzo_di_residenza_Etichetta.ForeColor = COLORE_NERO Indirizzo_di_invio_Etichetta.ForeColor = COLORE_NERO Telefono_Etichetta.ForeColor = COLORE_NERO Corso_Frequentato_Etichetta.ForeColor = COLORE_NERO Edizione_Etichetta.ForeColor = COLORE_NERO Password_Etichetta.ForeColor = COLORE_NERO End Sub 'Se ci si sposta col mouse nel campo o etichetta E-Mail ingrandisce il carattere delle scritte di entrambi Private Sub E_Mail_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) E_Mail_Etichetta.FontSize = 10 E_Mail.FontSize = 10 End Sub 'Se ci si sposta col mouse nel campo o etichetta Nome ingrandisce il carattere delle scritte di entrambi Private Sub Nome_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Nome_Etichetta.FontSize = 10 Nome.FontSize = 10 End Sub 'Se ci si sposta col mouse nel campo o etichetta Cognome ingrandisce il carattere delle scritte di entrambi Private Sub Cognome_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Cognome_Etichetta.FontSize = 10 Cognome.FontSize = 10 End Sub 'Se ci si sposta col mouse nel campo o etichetta Indirizzo di residenza ingrandisce 'il carattere delle scritte di entrambi Private Sub Indirizzo_di_residenza_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Indirizzo_di_residenza_Etichetta.FontSize = 10 Indirizzo_di_residenza.FontSize = 10 End Sub 'Se ci si sposta col mouse nel campo o etichetta Indirizzo di invio ingrandisce 'il carattere delle scritte di entrambi Private Sub Indirizzo_di_invio_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Indirizzo_di_invio_Etichetta.FontSize = 10 Indirizzo_di_invio.FontSize = 10 End Sub 'Se si clicca con il mouse sul pulsante opzionale CPAT cambia il colore della scritta Private Sub Opzione_CPAT_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Etichetta_CPAT.ForeColor = COLORE_ROSSO End Sub 'Se si clicca con il mouse sul pulsante opzionale MAT cambia il colore della scritta Private Sub Opzione_MAT_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Etichetta_MAT.ForeColor = COLORE_ROSSO End Sub 'Al rilascio del tasto del mouse dopo il click sul pulsante opzionale CPAT cambia il colore della scritta Private Sub Opzione_CPAT_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Etichetta_CPAT.ForeColor = COLORE_BLU End Sub 'Al rilascio del tasto del mouse dopo il click sul pulsante opzionale MAT cambia il colore della scritta Private Sub Opzione_MAT_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Ingegneria del software
33
Etichetta_MAT.ForeColor = COLORE_BLU End Sub 'Se ci si sposta col mouse nel campo o etichetta Telefono ingrandisce il carattere delle scritte di entrambi Private Sub Telefono_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Telefono_Etichetta.FontSize = 10 Telefono.FontSize = 10 End Sub 'Se ci si sposta col mouse nell' etichetta Corso frequentato ingrandisce la scritta dell'etichetta, 'ne toglie il corsivo e la tramuta in grassetto Private Sub Corso_Frequentato_Etichetta_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Corso_Frequentato_Etichetta.FontSize = 10 Etichetta_CPAT.FontItalic = False Etichetta_MAT.FontItalic = False Etichetta_CPAT.FontBold = True Etichetta_MAT.FontBold = True End Sub 'Se ci si sposta col mouse nel pulsante opzionale CPAT trasforma la scritta in corsivo Private Sub Opzione_CPAT_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Etichetta_CPAT.FontItalic = True End Sub 'Se ci si sposta col mouse nel pulsante opzionale MAT trasforma la scritta in corsivo Private Sub Opzione_MAT_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Etichetta_MAT.FontItalic = True End Sub 'Se ci si sposta col mouse nel campo o etichetta Edizione ingrandisce il carattere delle scritte di entrambi Private Sub Edizione_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Edizione_Etichetta.FontSize = 10 Edizione.FontSize = 10 End Sub 'Se si entra nella casella di E-Mail vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub E_Mail_Enter() E_Mail_Etichetta.ForeColor = COLORE_NERO E_Mail_Etichetta.FontSize = 8 E_Mail.FontSize = 8 End Sub 'Se si clicca nella casella di E-Mail vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub E_Mail_Click() E_Mail_Etichetta.ForeColor = COLORE_NERO E_Mail_Etichetta.FontSize = 8 E_Mail.FontSize = 8 End Sub 'Se si esce dalla casella di E-Mail vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub E_Mail_Exit(Cancel As Integer) E_Mail_Etichetta.ForeColor = COLORE_BIANCO E_Mail_Etichetta.FontSize = 8 E_Mail.FontSize = 8 End Sub 'Se si entra nella casella di Nome vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub Nome_Enter() Nome_Etichetta.ForeColor = COLORE_NERO Nome_Etichetta.FontSize = 8 Nome.FontSize = 8 End Sub
Ingegneria del software
34
'Se si clicca nella casella di Nome vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub Nome_Click() Nome_Etichetta.ForeColor = COLORE_NERO Nome_Etichetta.FontSize = 8 Nome.FontSize = 8 End Sub 'Se si esce dalla casella di Nome vengono definiti colore e 'grandezza scrittadell'etichetta e grandezza scritta nella casella Private Sub Nome_Exit(Cancel As Integer) Nome_Etichetta.ForeColor = COLORE_BIANCO Nome_Etichetta.FontSize = 8 Nome.FontSize = 8 End Sub 'Se si entra nella casella di Cognome vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub Cognome_Enter() Cognome_Etichetta.ForeColor = COLORE_NERO Cognome_Etichetta.FontSize = 8 Cognome.FontSize = 8 End Sub 'Se si clicca nella casella di Cognome vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub Cognome_Click() Cognome_Etichetta.ForeColor = COLORE_NERO Cognome_Etichetta.FontSize = 8 Cognome.FontSize = 8 End Sub 'Se si esce dalla casella di Cognome vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub Cognome_Exit(Cancel As Integer) Cognome_Etichetta.ForeColor = COLORE_BIANCO Cognome_Etichetta.FontSize = 8 Cognome.FontSize = 8 End Sub 'Se si entra nella casella di Indirizzo di residenza vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub Indirizzo_di_residenza_Enter() Indirizzo_di_residenza_Etichetta.ForeColor = COLORE_NERO Indirizzo_di_residenza_Etichetta.FontSize = 8 Indirizzo_di_residenza.FontSize = 8 End Sub 'Se si clicca nella casella di Indirizzo di residenza vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub Indirizzo_di_residenza_Click() Indirizzo_di_residenza_Etichetta.ForeColor = COLORE_NERO Indirizzo_di_residenza_Etichetta.FontSize = 8 Indirizzo_di_residenza.FontSize = 8 End Sub 'Se si esce dalla casella di Indirizzo di residenza vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub Indirizzo_di_residenza_Exit(Cancel As Integer) Indirizzo_di_residenza_Etichetta.ForeColor = COLORE_BIANCO Indirizzo_di_residenza_Etichetta.FontSize = 8 Indirizzo_di_residenza.FontSize = 8 End Sub 'Se si entra nella casella di Indirizzo di invio vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub Indirizzo_di_invio_Enter() Indirizzo_di_invio_Etichetta.ForeColor = COLORE_NERO Indirizzo_di_invio_Etichetta.FontSize = 8
Ingegneria del software
35
Indirizzo_di_invio.FontSize = 8 End Sub 'Se si clicca nella casella di Indirizzo di invio vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub Indirizzo_di_invio_Click() Indirizzo_di_invio_Etichetta.ForeColor = COLORE_NERO Indirizzo_di_invio_Etichetta.FontSize = 8 Indirizzo_di_invio.FontSize = 8 End Sub 'Se si esce dalla casella di Indirizzo di invio vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub Indirizzo_di_invio_Exit(Cancel As Integer) Indirizzo_di_invio_Etichetta.ForeColor = COLORE_BIANCO Indirizzo_di_invio_Etichetta.FontSize = 8 Indirizzo_di_invio.FontSize = 8 End Sub 'Se si entra nella casella di Telefono vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub Telefono_Enter() Telefono_Etichetta.ForeColor = COLORE_NERO Telefono_Etichetta.FontSize = 8 Telefono.FontSize = 8 End Sub 'Se si clicca nella casella di Telefono vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub Telefono_Click() Telefono_Etichetta.ForeColor = COLORE_NERO Telefono_Etichetta.FontSize = 8 Telefono.FontSize = 8 End Sub 'Se si esce dalla casella di Telefono vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub Telefono_Exit(Cancel As Integer) Telefono_Etichetta.ForeColor = COLORE_BIANCO Telefono_Etichetta.FontSize = 8 Telefono.FontSize = 8 End Sub 'Se si entra nella casella di Edizione vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub Edizione_Enter() Edizione_Etichetta.ForeColor = COLORE_NERO Edizione_Etichetta.FontSize = 8 Edizione.FontSize = 8 End Sub 'Se si clicca nella casella di Edizione vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub Edizione_Click() Edizione_Etichetta.ForeColor = COLORE_NERO Edizione_Etichetta.FontSize = 8 Edizione.FontSize = 8 End Sub 'Se si esce dalla casella di Edizione vengono definiti colore e 'grandezza scritta dell'etichetta egrandezza scritta nella casella Private Sub Edizione_Exit(Cancel As Integer) Edizione_Etichetta.ForeColor = COLORE_BIANCO Edizione_Etichetta.FontSize = 8 Edizione.FontSize = 8 End Sub
Ingegneria del software
36
'Se ci si sposta col mouse nel campo o etichetta Password ingrandisce il carattere delle scritte di entrambi Private Sub Password_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Password_Etichetta.FontSize = 10 Password.FontSize = 10 End Sub 'Se si entra nella casella di Password vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub Password_Enter() Password_Etichetta.ForeColor = COLORE_NERO Password_Etichetta.FontSize = 8 Password.FontSize = 8 End Sub 'Se si clicca nella casella di Password vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub Password_Click() Password_Etichetta.ForeColor = COLORE_NERO Password_Etichetta.FontSize = 8 Password.FontSize = 8 End Sub 'Se si esce dalla casella di Password vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub Password_Exit(Cancel As Integer) Password_Etichetta.ForeColor = COLORE_BIANCO Password_Etichetta.FontSize = 8 Password.FontSize = 8 End Sub 'Se si clicca sul corpo della maschera cambia il colore Private Sub Corpo_Click() Corpo.BackColor = COLORE_DEFAULT Etichetta_Seleziona.BackColor = COLORE_DEFAULT End Sub 'Se si clicca con il mouse sul pulsante Torna alla maschera amministratore 'cambia il colore della scritta Private Sub Comando_Torna_Admin_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Torna_Admin.ForeColor = COLORE_ROSSO End Sub 'Se ci si sposta con il mouse sopra il pulsante Torna alla maschera amministratore 'cambia il colore e lo spessore della scritta Private Sub Comando_Torna_Admin_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Torna_Admin.ForeColor = COLORE_NERO Comando_Torna_Admin.FontBold = True End Sub 'Al rilascio del tasto del mouse dopo il click sul pulsante Torna 'alla maschera amministratore cambia il colore della scritta Private Sub Comando_Torna_Admin_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Torna_Admin.ForeColor = COLORE_BLU End Sub 'Se si clicca con il mouse sul pulsante Torna alla maschera principale cambia il colore della scritta Private Sub Comando_Torna_Principale_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Torna_Principale.ForeColor = COLORE_ROSSO End Sub 'Se ci si sposta con il mouse sopra il pulsante Torna alla maschera principale 'cambia il colore e lo spessore della scritta Private Sub Comando_Torna_Principale_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Torna_Principale.ForeColor = COLORE_NERO Comando_Torna_Principale.FontBold = True End Sub
Ingegneria del software
37
'Al rilascio del tasto del mouse dopo il click sul pulsante Torna alla 'maschera principale cambia il colore della scritta Private Sub Comando_Torna_Principale_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Torna_Principale.ForeColor = COLORE_BLU End Sub 'Se si clicca su Torna alla maschera amministratore:se c'è errore esegue la sua procedura Private Sub Comando_Torna_Admin_Click() On Error GoTo Err_Comando_Torna_Admin_Click 'Chiude la maschera DoCmd.Close 'Procedura di uscita Exit_Comando_Torna_Admin_Click: Exit Sub 'Procedura di errore:visualizza l'errore(description) ed esce Err_Comando_Torna_Admin_Click: MsgBox Err.Description Resume Exit_Comando_Torna_Admin_Click End Sub 'Se si clicca su Torna alla maschera principale:se c'è errore esegue la sua procedura Private Sub Comando_Torna_Principale_Click() On Error GoTo Err_Comando_Torna_Principale_Click 'Chiude la maschera e la precedente DoCmd.Close DoCmd.Close acForm, "Admin" 'Procedura di uscita Exit_Comando_Torna_Principale_Click: Exit Sub 'Procedura di errore:visualizza l'errore(description) ed esce Err_Comando_Torna_Principale_Click: MsgBox Err.Description Resume Exit_Comando_Torna_Principale_Click End Sub
Figura 21
Ingegneria del software
38
MASCHERA ISCRITTI
Figura 22
CODICE MASCHERA ISCRITTI Option Compare Database '=============================================================================================== 'CODICE MASCHERA ISCRITTI '=============================================================================================== 'Tutte le Sub eseguite sono procedure interne 'Le costanti usate sono STRINGA_NOME e STRINGA_COGNOME 'All' apertura del file viene eseguito il codice Form_Open che in automatico chiama la machera principale Private Sub Form_Open(Cancel As Integer)
Ingegneria del software
39
'All'apertura imposta i colori degli sfondi maschera e menu pulsanti opzionali,ingrandisce 'i caratteri delle due etichette istruttive,stabilisce il colore della scritta del pulsante invio 'e fissa i colori di tutte le etichette di tutti i campi Corpo.BackColor = COLORE_BIANCO Etichetta_Seleziona.BackColor = COLORE_BIANCO Etichetta_Iscriviti.FontSize = 14 Etichetta_Riempi.FontSize = 14 Comando_Invio.ForeColor = COLORE_ROSSO E_Mail_Etichetta.ForeColor = COLORE_NERO Nome_Etichetta.ForeColor = COLORE_NERO Cognome_Etichetta.ForeColor = COLORE_NERO Indirizzo_di_residenza_Etichetta.ForeColor = COLORE_NERO Indirizzo_di_invio_Etichetta.ForeColor = COLORE_NERO Telefono_Etichetta.ForeColor = COLORE_NERO Corso_Frequentato_Etichetta.ForeColor = COLORE_NERO Edizione_Etichetta.ForeColor = COLORE_NERO End Sub 'Se ci si sposta col mouse nel campo o etichetta E-Mail ingrandisce il carattere delle scritte di entrambi Private Sub E_Mail_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) E_Mail_Etichetta.FontSize = 10 E_Mail.FontSize = 10 End Sub 'Se ci si sposta col mouse nel campo o etichetta Nome ingrandisce il carattere delle scritte di entrambi Private Sub Nome_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Nome_Etichetta.FontSize = 10 Nome.FontSize = 10 End Sub 'Se ci si sposta col mouse nel campo o etichetta Cognome ingrandisce il carattere delle scritte di entrambi Private Sub Cognome_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Cognome_Etichetta.FontSize = 10 Cognome.FontSize = 10 End Sub 'Se ci si sposta col mouse nel campo o etichetta Indirizzo di residenza ingrandisce 'il carattere delle scritte di entrambi Private Sub Indirizzo_di_residenza_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Indirizzo_di_residenza_Etichetta.FontSize = 10 Indirizzo_di_residenza.FontSize = 10 End Sub 'Se ci si sposta col mouse nel campo o etichetta Indirizzo di invio ingrandisce 'il carattere delle scritte di entrambi Private Sub Indirizzo_di_invio_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Indirizzo_di_invio_Etichetta.FontSize = 10 Indirizzo_di_invio.FontSize = 10 End Sub 'Se ci si sposta col mouse nel campo o etichetta Telefono ingrandisce il carattere delle scritte di entrambi Private Sub Telefono_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Telefono_Etichetta.FontSize = 10 Telefono.FontSize = 10 End Sub 'Se ci si sposta col mouse nell' etichetta Corso frequentato ingrandisce la scritta dell'etichetta, 'ne toglie il corsivo e la tramuta in grassetto Private Sub Corso_Frequentato_Etichetta_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Corso_Frequentato_Etichetta.FontSize = 10 Etichetta_CPAT.FontItalic = False Etichetta_MAT.FontItalic = False Etichetta_CPAT.FontBold = True Etichetta_MAT.FontBold = True End Sub 'Se ci si sposta col mouse nel pulsante opzionale CPAT trasforma la scritta in corsivo Private Sub Opzione_CPAT_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Ingegneria del software
40
Etichetta_CPAT.FontItalic = True End Sub 'Se ci si sposta col mouse nel pulsante opzionale MAT trasforma la scritta in corsivo Private Sub Opzione_MAT_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Etichetta_MAT.FontItalic = True End Sub 'Se ci si sposta col mouse nel campo o etichetta Edizione ingrandisce il carattere delle scritte di entrambi Private Sub Edizione_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Edizione_Etichetta.FontSize = 10 Edizione.FontSize = 10 End Sub 'Se ci si sposta col mouse nel campo o etichetta Note ingrandisce il carattere delle scritte di entrambi Private Sub Note_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Note_Etichetta.FontSize = 10 Note_Etichetta.FontSize = 10 End Sub 'Se si clicca con il mouse sul pulsante opzionale CPAT cambia il colore della scritta Private Sub Opzione_CPAT_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Etichetta_CPAT.ForeColor = COLORE_ROSSO End Sub 'Se si clicca con il mouse sul pulsante opzionale MAT cambia il colore della scritta Private Sub Opzione_MAT_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Etichetta_MAT.ForeColor = COLORE_ROSSO End Sub 'Al rilascio del tasto del mouse dopo il click sul pulsante opzionale CPAT cambia il colore della scritta Private Sub Opzione_CPAT_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Etichetta_CPAT.ForeColor = COLORE_BLU End Sub 'Al rilascio del tasto del mouse dopo il click sul pulsante opzionale MAT cambia il colore della scritta Private Sub Opzione_MAT_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Etichetta_MAT.ForeColor = COLORE_BLU End Sub 'Se si entra nella casella di E-Mail vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub E_Mail_Enter() E_Mail_Etichetta.ForeColor = COLORE_NERO E_Mail_Etichetta.FontSize = 8 E_Mail.FontSize = 8 End Sub 'Se si clicca nella casella di E-Mail vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub E_Mail_Click() E_Mail_Etichetta.ForeColor = COLORE_NERO E_Mail_Etichetta.FontSize = 8 E_Mail.FontSize = 8 End Sub 'Se si esce dalla casella di E-Mail vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub E_Mail_Exit(Cancel As Integer) E_Mail_Etichetta.ForeColor = COLORE_BIANCO E_Mail_Etichetta.FontSize = 8 E_Mail.FontSize = 8 End Sub 'Se si entra nella casella di Nome vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella
Ingegneria del software
41
Private Sub Nome_Enter() Nome_Etichetta.ForeColor = COLORE_NERO Nome_Etichetta.FontSize = 8 Nome.FontSize = 8 End Sub 'Se si clicca nella casella di Nome vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub Nome_Click() Nome_Etichetta.ForeColor = COLORE_NERO Nome_Etichetta.FontSize = 8 Nome.FontSize = 8 End Sub 'Se si esce dalla casella di Nome vengono definiti colore e 'grandezza scrittadell'etichetta e grandezza scritta nella casella Private Sub Nome_Exit(Cancel As Integer) Nome_Etichetta.ForeColor = COLORE_BIANCO Nome_Etichetta.FontSize = 8 Nome.FontSize = 8 End Sub 'Se si entra nella casella di Cognome vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub Cognome_Enter() Cognome_Etichetta.ForeColor = COLORE_NERO Cognome_Etichetta.FontSize = 8 Cognome.FontSize = 8 End Sub 'Se si clicca nella casella di Cognome vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub Cognome_Click() Cognome_Etichetta.ForeColor = COLORE_NERO Cognome_Etichetta.FontSize = 8 Cognome.FontSize = 8 End Sub 'Se si esce dalla casella di Cognome vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub Cognome_Exit(Cancel As Integer) Cognome_Etichetta.ForeColor = COLORE_BIANCO Cognome_Etichetta.FontSize = 8 Cognome.FontSize = 8 End Sub 'Se si entra nella casella di Indirizzo di residenza vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub Indirizzo_di_residenza_Enter() Indirizzo_di_residenza_Etichetta.ForeColor = COLORE_NERO Indirizzo_di_residenza_Etichetta.FontSize = 8 Indirizzo_di_residenza.FontSize = 8 End Sub 'Se si clicca nella casella di Indirizzo di residenza vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub Indirizzo_di_residenza_Click() Indirizzo_di_residenza_Etichetta.ForeColor = COLORE_NERO Indirizzo_di_residenza_Etichetta.FontSize = 8 Indirizzo_di_residenza.FontSize = 8 End Sub 'Se si esce dalla casella di Indirizzo di residenza vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub Indirizzo_di_residenza_Exit(Cancel As Integer) Indirizzo_di_residenza_Etichetta.ForeColor = COLORE_BIANCO Indirizzo_di_residenza_Etichetta.FontSize = 8 Indirizzo_di_residenza.FontSize = 8 End Sub
Ingegneria del software
42
'Se si entra nella casella di Indirizzo di invio vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub Indirizzo_di_invio_Enter() Indirizzo_di_invio_Etichetta.ForeColor = COLORE_NERO Indirizzo_di_invio_Etichetta.FontSize = 8 Indirizzo_di_invio.FontSize = 8 End Sub 'Se si clicca nella casella di Indirizzo di invio vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub Indirizzo_di_invio_Click() Indirizzo_di_invio_Etichetta.ForeColor = COLORE_NERO Indirizzo_di_invio_Etichetta.FontSize = 8 Indirizzo_di_invio.FontSize = 8 End Sub 'Se si esce dalla casella di Indirizzo di invio vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub Indirizzo_di_invio_Exit(Cancel As Integer) Indirizzo_di_invio_Etichetta.ForeColor = COLORE_BIANCO Indirizzo_di_invio_Etichetta.FontSize = 8 Indirizzo_di_invio.FontSize = 8 End Sub 'Se si entra nella casella di Telefono vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub Telefono_Enter() Telefono_Etichetta.ForeColor = COLORE_NERO Telefono_Etichetta.FontSize = 8 Telefono.FontSize = 8 End Sub 'Se si clicca nella casella di Telefono vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub Telefono_Click() Telefono_Etichetta.ForeColor = COLORE_NERO Telefono_Etichetta.FontSize = 8 Telefono.FontSize = 8 End Sub 'Se si esce dalla casella di Telefono vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub Telefono_Exit(Cancel As Integer) Telefono_Etichetta.ForeColor = COLORE_BIANCO Telefono_Etichetta.FontSize = 8 Telefono.FontSize = 8 End Sub 'Se si entra nella casella di Edizione vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub Edizione_Enter() Edizione_Etichetta.ForeColor = COLORE_NERO Edizione_Etichetta.FontSize = 8 Edizione.FontSize = 8 End Sub 'Se si clicca nella casella di Edizione vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub Edizione_Click() Edizione_Etichetta.ForeColor = COLORE_NERO Edizione_Etichetta.FontSize = 8 Edizione.FontSize = 8 End Sub 'Se si esce dalla casella di Edizione vengono definiti colore e 'grandezza scritta dell'etichetta egrandezza scritta nella casella
Ingegneria del software
43
Private Sub Edizione_Exit(Cancel As Integer) Edizione_Etichetta.ForeColor = COLORE_BIANCO Edizione_Etichetta.FontSize = 8 Edizione.FontSize = 8 End Sub 'Se si entra nella casella di Note vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub Note_Enter() Note_Etichetta.ForeColor = COLORE_NERO Note_Etichetta.FontSize = 8 Note.FontSize = 8 End Sub 'Se si clicca nella casella di Note vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub Note_Click() Note_Etichetta.ForeColor = COLORE_NERO Note_Etichetta.FontSize = 8 Note.FontSize = 8 End Sub 'Se si esce dalla casella di Note vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub Note_Exit(Cancel As Integer) Note_Etichetta.ForeColor = COLORE_BIANCO Note_Etichetta.FontSize = 8 Note.FontSize = 8 End Sub 'Se si clicca sul pulsante Invio Private Sub Comando_Invio_Click() 'Se c'è un errore salta all'etichetta Err_Comando_Invio_Click e ne esegue il codice On Error GoTo Err_Comando_Invio_Click 'Variabili stringa Dim stLinkCriteria As String Dim stDocName As String 'Si sposta nell'ultimo record registrato DoCmd.GoToRecord , , acLast 'Memorizza il nome e cognome del potenziale sottoscrittore STRINGA_NOME = Me![Nome].Value STRINGA_COGNOME = Me![Cognome].Value 'Applica il filtro:verifica che i nomi compaiano nell'archivio corsisti DoCmd.ApplyFilter "", "[Corsisti].[NOME]" = STRINGA_NOME And "[Corsisti].[COGNOME]" = STRINGA_COGNOME 'Memorizza il nome della maschera che verrà aperta stDocName = "Richiedi_Password" 'Usa un criterio che associa questa maschera con la prossima che verrà aperta 'in base al cognome stLinkCriteria = "[Cognome]=" & "'" & Me![Cognome] & "'" 'Apre la maschera Richiedi password con i criteri esposti DoCmd.OpenForm stDocName, , , stLinkCriteria 'Procedura di uscita Exit_Comando_Invio_Click: Exit Sub 'Procedura di intercettazione dell'errore:se il sistema invia il messaggio '"L'azione ApplyFilter è stata annullata."si è verificata una violazione del vincolo 'di integrità dovuta alla mancanza dei dati utente nell'archivio corsisti autorizzati. 'Quindi salta all'etichetta Utente_Non_Aut,segnala l'inabilitazione e chiude tutto. 'Se l'errore è di un altro tipo,esegue la normale procedura di errore ed esce Err_Comando_Invio_Click: If Err.Description = "L'azione ApplyFilter è stata annullata." Then GoTo Utente_Non_Aut End If
Ingegneria del software
44
MsgBox Err.Description Resume Exit_Comando_Invio_Click Utente_Non_Aut: MsgBox "UTENTE NON AUTORIZZATO" DoCmd.Quit End Sub 'Se si clicca con il mouse sul pulsante Invio cambia il colore della scritta Private Sub Comando_Invio_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Invio.ForeColor = COLORE_ROSSO End Sub 'Al rilascio del tasto del mouse dopo il click sul pulsante Invio cambia il colore della scritta Private Sub Comando_Invio_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Invio.ForeColor = COLORE_BLU End Sub 'Se ci si sposta con il mouse sopra il pulsante Invio cambia il colore e lo spessore della scritta Private Sub Comando_Invio_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Invio.ForeColor = COLORE_NERO Comando_Invio.FontBold = True End Sub 'Se si clicca con il mouse sul pulsante Chiudi cambia il colore della scritta Private Sub Comando_Chiudi_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Chiudi.ForeColor = COLORE_ROSSO End Sub 'Al rilascio del tasto del mouse dopo il click sul pulsante Chiudi cambia il colore della scritta Private Sub Comando_Chiudi_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Chiudi.ForeColor = COLORE_BLU End Sub 'Se ci si sposta con il mouse sopra il pulsante Chiudi cambia il colore e lo spessore della scritta Private Sub Comando_Chiudi_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Chiudi.ForeColor = COLORE_NERO Comando_Chiudi.FontBold = True End Sub 'Se si clicca sul corpo della maschera cambia il colore Private Sub Corpo_Click() Corpo.BackColor = COLORE_DEFAULT Etichetta_Seleziona.BackColor = COLORE_DEFAULT End Sub 'Se si clicca sul pulsante Chiudi Private Sub Comando_Chiudi_Click() On Error GoTo Err_Comando_Chiudi_Click 'Chiude la maschera DoCmd.Close 'Procedura di uscita Exit_Comando_Chiudi_Click: Exit Sub 'Procedura di errore:visualizza l'errore(description) ed esce Err_Comando_Chiudi_Click: MsgBox Err.Description Resume Exit_Comando_Chiudi_Click End Sub Figura 23
Ingegneria del software
45
MASCHERA RICHIEDI PASSWORD
Figura 24
CODICE MASHERA RICHIEDI PASSW ORD Option Compare Database '============================================================================================= 'CODICE MASCHERA RICHIEDI PASSWORD '============================================================================================= 'Tutte le Sub eseguite sono procedure interne 'Le costanti usate sono STRINGA_PASSWORD e le COSTANTI per i colori 'All' apertura del file viene eseguito il codice Form_Open che in automatico chiama la machera principale Private Sub Form_Open(Cancel As Integer) 'All'apertura imposta il colore dello sfondo maschera,la grandezza dell'etichetta 'informativa,il colore della scritta del comando Invia password e il colore 'dell'etichetta del campo password Corpo.BackColor = COLORE_BIANCO Etichetta_Inserisci_Password.FontSize = 14 Comando_Invia_Password.ForeColor = COLORE_ROSSO Password_Etichetta.ForeColor = COLORE_NERO End Sub 'Se si clicca sul pulsante Invia password Private Sub Comando_Invia_Password_Click() 'Se c'è un errore salta all'etichetta Err_Comando_Invia_Password_Click e ne esegue il codice On Error GoTo Err_Comando_Invia_Password_Click 'Chiude il Form Iscritti DoCmd.Close acForm, "Iscritti" 'Variabili stringa Dim stDocName As String Dim stLinkCriteria As String 'Memorizza la password inserita(successivamente verrà richiesto di ripeterla e se 'dal confronto emerge una diversità la password non verrà acettata finché non 'coinciderà con la prima digitzione,cioé questa) STRINGA_PASSWORD = Me![Password].Value 'Memorizza il nome della maschera che verrà aperta stDocName = "Password"
Ingegneria del software
46
'Usa un criterio che associa questa maschera con la prossima che verrà aperta 'in base al cognome stLinkCriteria = "[Cognome]=" & "'" & Me![Cognome] & "'" 'Apre la maschera Richiedi password con i criteri esposti DoCmd.OpenForm stDocName, , , stLinkCriteria 'Procedura di uscita Exit_Comando_Invia_Password_Click: Exit Sub 'Procedura di errore:visualizza l'errore(description) ed esce Err_Comando_Invia_Password_Click: MsgBox Err.Description Resume Exit_Comando_Invia_Password_Click End Sub 'Se ci si sposta col mouse nel campo o etichetta Password ingrandisce il carattere delle scritte di entrambi Private Sub Password_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Password_Etichetta.FontSize = 10 Password.FontSize = 10 End Sub 'Se si entra nella casella di Password vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub Password_Enter() Password_Etichetta.ForeColor = COLORE_NERO Password_Etichetta.FontSize = 8 Password.FontSize = 8 End Sub 'Se si clicca nella casella di Password vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub Password_Click() Password_Etichetta.ForeColor = COLORE_NERO Password_Etichetta.FontSize = 8 Password.FontSize = 8 End Sub 'Se si esce dalla casella di Password vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub Password_Exit(Cancel As Integer) Password_Etichetta.ForeColor = COLORE_BIANCO Password_Etichetta.FontSize = 8 Password.FontSize = 8 End Sub 'Se si clicca con il mouse sul pulsante Invia password cambia il colore della scritta Private Sub Comando_Invia_Password_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Invia_Password.ForeColor = COLORE_ROSSO End Sub 'Al rilascio del tasto del mouse dopo il click sul pulsante Invia password cambia il colore della scritta Private Sub Comando_Invia_Password_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Invia_Password.ForeColor = COLORE_BLU End Sub 'Se ci si sposta con il mouse sopra il pulsante Invia password cambia il colore e lo spessore della scritta Private Sub Comando_Invia_Password_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Invia_Password.ForeColor = COLORE_NERO Comando_Invia_Password.FontBold = True End Sub 'Se si clicca sul corpo della maschera cambia il colore Private Sub Corpo_Click() Corpo.BackColor = COLORE_DEFAULT End Sub Figura 25
Ingegneria del software
47
MASCHERA PASSWO RD
Figura 26
CODICE MASCHERA PASSWOR D Option Compare Database '============================================================================================= 'CODICE MASCHERA PASSWORD '============================================================================================= 'Tutte le Sub eseguite sono procedure interne 'Le costanti usate sono STRINGA_PASSWORD e le COSTANTI dei colori 'All' apertura del file viene eseguito il codice Form_Open che in automatico chiama la machera principale Private Sub Form_Open(Cancel As Integer) 'All'apertura imposta il colore dello sfondo maschera,la grandezza dell'etichetta 'informativa,il colore della scritta del comando Torna al sito(Identificativo Chiudi) e il colore 'dell'etichetta del campo password Corpo.BackColor = COLORE_BIANCO Etichetta_Ripeti_Password.FontSize = 14 Comando_Chiudi.ForeColor = COLORE_ROSSO Password_Etichetta.ForeColor = COLORE_NERO End Sub 'Se si clicca sul pulsante Torna al sito(Id.Chiudi) Private Sub Comando_Chiudi_Click() 'Se c'è un errore salta all'etichetta Err_Comando_Chiudi_Click e ne esegue il codice On Error GoTo Err_Comando_Chiudi_Click 'Se la password ridigitata non coincide con quella memorizzata precedentemente 'viene inviato un messaggio all'utente,il codice salta al comando 'di uscita e ripete la procedura finchè le due non si eguagliano. 'In caso contrario la password viene confermata e ne viene data comunicazione If Me![Password].Value = STRINGA_PASSWORD Then MsgBox "OK.PASSWORD CONFERMATA" Else MsgBox "LA PASSWORD DIGITATA NON E' IDENTICA ALLA PRECEDENTE.RIPROVARE" GoTo Exit_Comando_Chiudi_Click End If
Ingegneria del software
48
'Messaggio all'utente MsgBox "REGISTRAZIONE ESEGUITA CON SUCCESSO" 'Chiude il Form Richiedi Password DoCmd.Close acForm, "Richiedi_Password" 'Chiude questo Form DoCmd.Close 'Chiude tutto il file DoCmd.Quit 'Procedura di uscita Exit_Comando_Chiudi_Click: Exit Sub 'Procedura di errore:visualizza l'errore(description) ed esce Err_Comando_Chiudi_Click: MsgBox Err.Description Resume Exit_Comando_Chiudi_Click End Sub 'Se ci si sposta col mouse nel campo o etichetta Password ingrandisce il carattere delle scritte di entrambi Private Sub Password_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Password_Etichetta.FontSize = 10 Password.FontSize = 10 End Sub 'Se si entra nella casella di Password vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub Password_Enter() Password_Etichetta.ForeColor = COLORE_NERO Password_Etichetta.FontSize = 8 Password.FontSize = 8 End Sub 'Se si clicca nella casella di Password vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub Password_Click() Password_Etichetta.ForeColor = COLORE_NERO Password_Etichetta.FontSize = 8 Password.FontSize = 8 End Sub 'Se si esce dalla casella di Password vengono definiti colore e 'grandezza scritta dell'etichetta e grandezza scritta nella casella Private Sub Password_Exit(Cancel As Integer) Password_Etichetta.ForeColor = COLORE_BIANCO Password_Etichetta.FontSize = 8 Password.FontSize = 8 End Sub 'Se si clicca con il mouse sul pulsante Torna al sito cambia(Id.Chiudi) il colore della scritta Private Sub Comando_Chiudi_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Chiudi.ForeColor = COLORE_ROSSO End Sub 'Al rilascio del tasto del mouse dopo il click sul pulsante Torna al sito(Id.Chiudi) 'cambia il colore della scritta Private Sub Comando_Chiudi_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Chiudi.ForeColor = COLORE_BLU End Sub 'Se ci si sposta con il mouse sopra il pulsante Torna al sito(Id.Chiudi) 'cambia il colore e lo spessore della scritta Private Sub Comando_Chiudi_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Comando_Chiudi.ForeColor = COLORE_NERO Comando_Chiudi.FontBold = True End Sub
Ingegneria del software
49
'Se si clicca sul corpo della maschera cambia il colore Private Sub Corpo_Click() Corpo.BackColor = COLORE_DEFAULT End Sub Figura 27
Segue il codice di modulo1(fig.28) dichiarante costanti e variabili impiegati nel programma. CODICE MODULO1 Option Compare Database '================================================== ' 'ASSEGNAZIONE DEI VALORI DELLE COSTANTI E VARIABILI ' '================================================== 'Definizione dei colori assegnati Public Const COLORE_NERO As Long = 0 Public Const COLORE_BIANCO As Long = 16777215 Public Const COLORE_DEFAULT As Long = -2147483633 Public Const COLORE_CELESTE As Long = 16776960 Public Const COLORE_ROSSO As Long = 255 Public Const COLORE_BLU As Long = 16711680 'Definizione di form attivo Public FORM_ATTIVO As Boolean 'Definizione di una stringa per memorizzazione il nome e verificare che sia un corsista Public STRINGA_NOME As String 'Definizione di una stringa per memorizzare il cognome e verificare che sia un corsista Public STRINGA_COGNOME As String 'Definizione di una stringa per memorizzare la password e verificare che sia ripetuta correttamente Public STRINGA_PASSWORD As String Figura 28
d) Form di iscrizione in .asp: per garantire l’accesso al form di iscrizione anche agli utenti che non dispongano di MS Access,rendendo l’applicazione maggiormente integrabile,sono state predisposte due pagine in .asp.Uno schema è riportato in fig.29.Una volta chiusa la connessione nella prima pagina “Alumni.asp”,viene caricata la seconda pagina “Psswrd2.asp”.
Ingegneria del software
50
CONNESSIONE AL DATABASE CONTROLLO
US
CIT
A C
ON
M
ES
SA
GG
IO N
ON
A
UT
OR
IZZ
AT
O
NON OK
OK
SPOSTAMENTO ALL’ULTIMO
RECORD AGGIUNTA RECORD
CH
IUS
UR
A
CO
NN
ES
SIO
NE
CONNESSIONE AL DATABASE CONTROLLO
US
CIT
A C
ON
M
ES
SA
GG
IO N
ON
A
UT
OR
IZZ
AT
ONON OK
OK
SPOSTAMENTO AL RECORD UTENTE
AGGIUNTA PASSWORD AL
RECORD
CH
IUS
UR
A
CO
NN
ES
SIO
NE
CO
N
ME
SS
AG
GIO
PAGINA Alumni.asp
PAGINA Psswrd2.asp
Carica pagina Psswrd2.asp
Figura 29
INTERFACCIA ALUMNI.ASP
Iscriviti all'associazione AT Alumni
E-Mail*:
Nome*:
Cognome*:
Riempi i campi sottostanti
Ingegneria del software
51
Indirizzo di residenza*:
Indirizzo per invio corrispondenza*:
Telefono*:
Corso frequentato*:
CPAT=Corso di Perfezionamento in
Assistive Technology
MAT=Master in Assistive Technology
CPAT
MAT
Seleziona quale corso hai frequentato
Edizione*:
Inserisci l’anno accademico dell’edizione frequentata
Note:
Invia
Figura 30
In figura 30 è raffigurato l’interfaccia della pagina “Alumni.asp”,mentre nella successiva fig.31 ne viene mostrato il codice.
CODICE ALUMNI.ASP
<!-- #include file="adovbs.inc" --> <% Option Explicit Dim objConn 'ogget to creato per la connessione Dim rsIscritti 'recor set per la tabella Iscritti Dim rsCorsi_Master 'recor dset per la tabella Corsi_Master
Ingegneria del software
52
Dim rsCorsisti 'recor dset per la tabella Corsisti Dim strDatab 'perco rso database strDatab="/data/Iscritti.mdb" 'asseg nazione percorso %> <html> <head> <meta http-equiv= "Content-Type" content= "text/html; charset=windows-1252" > <meta name= "GENERATOR" content= "Microsoft FrontPage 4.0" > <meta name= "ProgId" content= "FrontPage.Editor.Document" > <title> Nuova pagina 1 </title> </head> <body> <p> </p> <form method= "POST" action= "psswrd2.asp" name= "FrontPage_Form1" enctype= "hidden" onsubmit= "return FrontPage_Form1_Validator(this)" > <p><b><font SIZE= "5" >Iscriviti all'associazione AT Alumni </font></b></p> <div align= "left" > <table border= "1" width= "237" height= "113" > <tr> <td width= "237" height= "32" >E-Mail*: <!--webbot bot="Validation" S-Display-Name="E_Mail" S-Data-Type="String" B-Allow-Letters="TRUE" B-Allow-Digits="TR UE" S-Allow-Other-Chars="@" B-Value-Required="TRUE" I-Maximum-Length= "50" --> <input type= "text" name="E_Mail" size= "20" maxlength= "50" ></td> </tr> <tr> <td width= "237" height= "32" >Nome*: <!--webbot bot="Validation" S-Display-Name="Nome" S- Data-Type="String" B-Allow-Letters="TRUE" B-Value-Required=" TRUE" I-Maximum-Length="40" --> <input type= "text" name= "Nome" size= "20" maxlength= "40" ></td> </tr> <tr> <td width= "237" height= "33" >Cognome*: <!--webbot bot="Validation" S-Display-Name="Cognome" S-Data-Type="Str ing" B-Allow-Letters="TRUE" B-Value-Required="TRUE" I-Maximum-Length= "40" --> <input type= "text" name="Cognome" size= "20" maxlength= "40" ></td> </tr> </table> </div> <p> </p> <p><b><font SIZE= "5" >Riempi i campi sottostanti </font></b></p> <div align= "left" > <table border= "1" width= "636" height= "580" > <tr> <td width= "256" height= "128" >Indirizzo di residenza*: </td> <td width= "364" height= "128" ><!--webbot bot="Validation" S-Display-Name="Indirizzo_di_residenza" S -Data-Type="String" B-Allow-Letters="TRUE" B-Allow-Digits="TR UE" B-Value-Required="TRUE" I-Maximum-Length="60" --> <textarea rows= "6" name= "Indirizzo_di_residenza" cols= "35" ></textarea></td> </tr> <tr> <td width= "256" height= "125" >Indirizzo per invio corrispondenza*: </td> <td width= "364" height= "125" ><!--webbot bot="Validation" S-Display-Name="Indirizzo_di_invio" S-Dat a-Type="String" B-Allow-Letters="TRUE" B-Allow-Digits="TR UE" B-Value-Required="TRUE" I-Maximum-Length="60" --> <textarea rows= "6" name= "Indirizzo_di_invio" cols= "35" ></textarea></td> </tr> <tr> <td width= "256" height= "32" >Telefono*: td> <td width= "364" height= "32" ><!--webbot bot="Validation" S-Display-Name="Telefono" S-Data-Type="St ring" B-Allow-Digits="TRUE" B-Value-Required="TRUE" I-Minimum-Length= "9" I-Maximum-Length="14" --> <input type= "text" name= "Telefono" size= "20" maxlength= "14" ></td>
Ingegneria del software
53
</tr> <tr> <td width= "256" height= "76" > <p>Corso frequentato*: </p> <p>CPAT=Corso di Perfezionamento in </p> <p>Assistive Technology </p> <p>MAT=Master in Assistive Technology   ; </p> <p> </p> <p> </td> <td width= "364" height= "76" ><input type= "radio" value= "1" checked name= "R1" >CPAT <p> </p> <p> </p> <p><input type= "radio" name= "R1" value= "2" >MAT</p> <p><i> Seleziona quale corso hai frequentato </i></td> </tr> <tr> <td width= "256" height= "9" ><p>Edizione*:  </p> <p> p> <p> </td> <td width= "364" height= "9" ><!--webbot bot="Validation" S-Display-Name="Edizione" S-Data-Type="In teger" S-Number-Separators="." B-Value-Required= "TRUE" I-Minimum-Length="4" I-Maximum-Length="4" S-Validation-Constraint="Greater than or equal to" S-Validation-Value="2002" S-Validation-Constraint="Less than or equ al to" S-Validation-Value="2008" --> <input type= "text" name= "Edizione" size= "12" maxlength= "4" > <p><i> Inserisci l’anno accademico dell’edizione frequentata </i></td> </tr> <tr> <td width= "256" height= "108" >Note: </td> <td width= "364" height= "108" ><textarea rows= "5" name= "Note" cols= "35" ></textarea></td> </tr> <% set objConn=Server.CreateObject("ADODB.Connection ") 'connette il database e objConn.Open "DBQ="& Server.MapPath(strDatab) &"; Driver=(Microsoft Access Driver (*.mdb));DriverId=25;FIL=MS Access; " 'crea dei recordset delle tabelle set rsIscritti=Server.CreateObject("ADODB.Records et") set rsCorsi_Master=Server.CreateObject("ADODB.Rec ordset") set rsCorsisti=Server.CreateObject("ADODB.Records et") set rsIscritti=objConn.OpenRecordset("Iscritti",d bOpenTable) set rsCorsi_Master=objConn.OpenRecodset("Corsi_Ma ster",dbopenTable) set rsCorsisti=objConn.OpenRecodset("Corsisti",db openTable) On Error Resume Next 'se c'è errore esce Do while not rsCorsisti.EOF If rsCorsisti.Fields(“Nome”)=[Nome] AND rsCo rsisti.Fields(“Cognome”)=Cognome Then 'controlla autorizzazione rsIscritti.MoveLast 'sposta il puntatore nell'ultimo rsCorsi_Master.MoveLast 'record che diventa il corrente, rsIscritti.AddNew 'lo aggiunge e rsCorsi_Master.AddNew rsIscritti.Fields(“E-Mail”)=[E_Mail] rsIscritti.Fields(“Nome”)=[Nome] rsIscritti.Fields(“Cognome”)=[Cognome ] rsIscritti.Fields(“Indirizzo_di_resid enza”)=[Indirizzo_di_residenza] rsIscritti.Fields(“Indirizzo_di_invio ”)=[Indirizzo_di_invio] rsIscritti.Fields(“Telefono”)=[Telefo no] rsIscritti.Fields(“Note”)=[Note]
Ingegneria del software
54
rsCorsi_Master.Fields(“Tipo”)=[R1] rsCorsi_Master.Fields(“Edizione”)=[Ed izione] rsIscritti.Update 'aggiorna rsCorsi_Master.Update Else MsgBox "UTENTE NON AUTORIZZATO" 'se non autorizzato esce con Exit 'messaggio di errore End If Loop rsCorsisti.Close 'chiude i recordset e rsIscritti.Close rsCorsi_Master.Close objConn.Close 'l'oggetto di connessione %> <tr> <td width= "636" height= "30" colspan= "2" > <input type= "submit" value= "Invia" name= "B1" ></td> </tr> </table> </div> <p> </p> <p> </p> <p> </p> </form> </body> </html>
Figura 31
INTERFACCIA PSSWRD2.ASP
Inserisci una password di massimo 9 caratteri
Password*:
Invia
Torna al sito: http://www.ing.units.it/bca
Figura 32
CODICE PSSWRD2.ASP <!-- #include file="adovbs.inc" --> <% Option Explicit Dim SEL_NOME 'st ringa nome Dim SEL_COGNOME 'st ringa cognome Dim rs 're cordset per la tabella Iscritti Dim objConn 'og getto per la connessione Dim strDatab 'pe rcorso
Ingegneria del software
55
strDatab="/data/Iscritti.mdb" 'as segnazione percorso %> <html> <head> <meta http-equiv= "Content-Type" content= "text/html; charset=windows-1252" > <meta name= "GENERATOR" content= "Microsoft FrontPage 4.0" > <meta name= "ProgId" content= "FrontPage.Editor.Document" > <title> Nuova pagina 1 </title> </head> <body> <p><b><font size= "5" >Inserisci una password di massimo 9 caratteri </font></b></p> <p>Password*: <!--webbot bot="Validation" S-Display-Name="Passwor d" S-Data-Type="String" B-Allow-Letters="TRUE" B-All ow-Digits="TRUE" B-Value-Required="TRUE" I-Maximum-Length="9" --> <input type= "password" name= "Password" size= "20" maxlength= "9" ></p> <% SEL_NOME=Request.Form("Nome") 'SEL_NOME diventa il nome assegnatogli SEL_COGNOME=Request.Form("Cognome") 'SEL_COGNOME diventa il cognome assegnatogli set objConn=Server.CreateObject("ADODB.Connection ") 'crea una connessione con il database objConn.Open "DBQ="& Server.MapPath(strDatab) &"; Driver=(Microsoft Access Driver (*.mdb));DriverId=25;FIL=MS Access; " set rs=Server.CreateObject("ADODB.Recordset") 'crea un recorset per la tabella Iscritti set rs=objConn.OpenRecordset("Iscritti",dbOpenTab le) On Error Resume Next 'se c'è un errore Do while not rs.EOF 'cerca il nome tra i corsisti If rs.Fields(“Nome”)=SEL_NOME AND rs.Fields( “Cognome”)=SEL_COGNOME Then 'se lo trova esce dal ciclo con il puntatore a quel record Exit Do Else MsgBox "NON AUTORIZZATO" 'altrimenti esce con messaggio informativo Exit End If Loop Rs.Fields(“Password”)=[Password] rs.Update 'aggiorna la tabella MsgBox "REGISTRAZIONE ESEGUITA CON SUCCESSO" rs.Close 'chiude il recorset e la connessione objConn.Close %> <p> <input type= "submit" value= "Invia" name= "Invio_password" ></p> <p>Torna al sito: <a href= "http://www.ing.units.it/bca" >http://www.ing.units.it/bca </a></p> </form> </body> </html> Figura 33
Ingegneria del software
56
Nella figura 32 a pagina 54 è raffigurato l’interfaccia della pagina “Psswrd2.asp”,mentre nella superiore fig.33 ne viene mostrato il codice.
6. Conclusioni
Una progettazione di applicativi simili per volumi di dati superiori renderebbe sconsigliabile la scelta di impostare come chiave primaria i cognomi dell’archivio iscritti.Tuttavia anche qualora si verificasse un caso di omonimia del cognome,la tabella non permetterebbe equivoci sugli attributi,dal momento che espleta esclusivamente funzione di verifica autorizzazione e non contiene altri attributi.In questo modo l’applicazione guadagna un’ulteriore grado di affidabilità,non consentendo registrazioni di utenti con un cognome corrispondente anche in caso di errore filtraggio,per violazione dell’integrità referenziale. Vi è una correttezza generale del file realizzato in MS Access e dei collegamenti,verificata con alcuni test. La robustezza e l’usabilità sono garantite grazie alle funzionalità e interfacce fornite da MS Access per il file in .mdb e MS Frontpage per i file in .asp. L’applicazione dovrà poi subire delle operazioni di manutenzione allo scopo di adattarla o eventualmente correggerla qualora emergano alcuni errori non riscontrati in un primo tempo. Naturalmente è anche migliorabile con una serie di interventi.Per esempio sul codice “Visual Basic” delle maschere,un buon intervento sarebbe creare delle procedure(Sub) di eventi comuni(es.MouseMove) da applicare poi ai vari oggetti.Usare una procedura diversa per ogni oggetto anche per un evento simile determina un aumento delle linee di codice e un’exploit meno performante. Un altra miglioria potrebbe interessare la gestione del database automatizzandolo attraverso delle procedure(ad es. ApriSolaLettura) costruite in pagine .asp o addirittura in .aspx con ASP.NET(linguaggio più Object Oriented e meno ibrido). Al fine di garantire l’integrità del codice si potrebbe trasformare il file .mdb in .mde e utilizzare questo come database,conservando l’originale .mdb solo per futuri lavori di manutenzione.