Tesina D’esame - A.s. 2004-05 Crescenzo Francesco Mori Filippo Il Registro Elettronico Il Registro Elettronico Come integrare la tecnologia con la quotidianità! Trasformare un registro cartaceo in uno interattivo! Classe 5B INF A.S. 2004/2005 -1- Tesina D’esame - A.s. 2004-05 Crescenzo Francesco Mori Filippo Il Registro Elettronico INDICE GENERALE Introduzione Pag. 3 Il nostro Palmare Pag. 5 Le Funzionalità del Programma Pag. 6 I Palmari Pag. 14 Il Linguaggio Sql Pag. 20 Microsoft Access Pag.23 Descrzione Dettagliata del DataBase Pag.25 Problema DataBase Pag.27 Configurazione degli Ambienti Client e di Sviluppo Pag.30 Il .Net Compact Framework Pag.33 Classi di SQL Server CE Pag.39 Bibliografia Pag.46 -2- Tesina D’esame - A.s. 2004-05 Crescenzo Francesco Mori Filippo Il Registro Elettronico Introduzione Ormai la tecnologia fa parte del nostro vivere quotidiano. Perché non integrare allora la normale vita scolastica con quella tecnologia? I Palmari, Pocket PC sono sempre più diffusi perché permettono di unire molteplici funzioni come la funzionalità e l'utilità di un computer e l'utilizzo del telefono cellulare tutto nel palmo di una mano. Si è pensato di trasformate il registro normalmente utilizzato quotidianamente nelle aule, in un'applicazione per Pocket Pc, di modo che ogni professore possa scegliere mediante un'interfaccia semplice ma efficace, cosa fare, che classe visualizzare, mettere assenze e presenze ed eventualmente aggiungere note… Il palmare su cui si andrà a costruire il DataBase che conterrà i dati, funziona in modo autonomo infatti, l'applicazione che gira su palmare, fa utilizzo dei dati usando la sua porzione di memoria. L'ambiente utilizzato, SQL Server CE, che è utilizzato proprio per i palmari si divide in ambiente Client e Server. L'architettura che interviene nel processo di comunicazione tra SQL Server installato sul computer e SQL Server CE su Palmare, è costruita in questo modo: su Palmare è presente: l'applicazione vera e propria, SQL Server CE lato Client, che gestisce le funzionalità del DataBase sul palmare, SQL Server CE Engine, che gestisce proprio il DataBase (cioè la connessione tra DataBase e applicazione) e il DataBase vero e proprio. C'è da aggiungere che il DB su palmare è differente da un DB su un normale computer poiché su palmare non esiste Microsoft Access. Un DB su palmare ha estensione .sdf, e si può creare tramite un'applicazione. Sul Pocket all'interno del programma SQL Server CE Engine è possibile utilizzare SQL Query per interrogare il DB, è un'interfaccia minima per gestire un DataBase. -3- Tesina D’esame - A.s. 2004-05 Crescenzo Francesco Mori Filippo Il Registro Elettronico Il collegamento con il Server di data Base (ovvero l’istanza di SQL Server sul server remoto) può avvenire in due modi distinti: 1. Collegamento via scheda di rete: se il Pocket PC ha in dotazione uno slot per scheda di rete è possibile collegare il Pocket PC alla nostra rete locale e sincronizzare i dati direttamente con il server. In tal caso bisogna configurare la scheda di rete con i parametri di connessione della rete locale così come siamo abituati a fare sui nostri PC quando si crea una connessione di rete. 2. Collegamento tramite PC Proxy via ActiveSync: in questo caso il Pocket PC raggiunge il Server remoto tramite un computer che agisce da Proxy e del quale si sfrutta la connessione alla rete locale. L’ultimo stato dell’architettura è rappresentato dall’ambiente Server. In tale ambiente troviamo un computer sul quale è installato il WEB Server IIS e l’istanza di SQL Server. L'ambiente di sviluppo utilizzato, permette, per nostra fortuna, di p poter costruire applicazione per Palmari o meglio per “SmartDevice”, q questo ci permette di costruire un'applicazione anche senza utilizzare i il Dispositivo fisico, in quanto è possibile utilizzare l'emulatore che ha l le stesse funzioni di un dispositivo Pocket Pc fisico. -4- Tesina D’esame - A.s. 2004-05 Crescenzo Francesco Mori Filippo Il Registro Elettronico Il nostro Palmare Per Poter realizzare il nostro Registro Elettronico abbiamo utilizzato un Palmare Ipaq della Compaq che non è uno degli ultimi palmari in commercio ma sicuramente soddisfa tutte le nostre esigenze. E’ dotato di un sistema operativo Windows Ce, processore Mhz Intel, 32Mb di Ram, 16 Mb di Rom, porta infrarossi, touch screen con penna e cavo per il collegamento del nostro palmare al pc. Per la sincronizzazione è stato utilizzato il software Microsoft ActiveSync (in dotazione con il pocket pc) che rileva automaticamente il nostro dispositivo e ci permette di esplorarlo per poter visualizzare i file al suo interno. Quando si vuole trasportare un file da pc a palmare ActiveSyn converte i file da formato pc a formato Pocket Pc compattandoli. In questo modo un programma che sul pc occupa 1 Mb sul palmare risulta grande 3k rendendolo cosi più veloce da caricare e da eseguire. -5- Tesina D’esame - A.s. 2004-05 Crescenzo Francesco Mori Filippo Il Registro Elettronico Le Funzionalità Del Programma Sappiamo tutti come funziona un normale registro di classe: appello, assenze, giustifiche… però quante volte capitano degli errori di distrazione che fanno diventare un alunno assente mentre invece è presente, oppure ci si dimentichi di firmare? Con il palmare, tutto questo diventa più facile e veloce, grazie soprattutto al fatto che diventa anche divertente. Ormai i palmari sono in grande diffusione, e non sarebbe male l’idea di creare davvero dei registri elettronici per ogni classe! Ora simuliamo la una tipica giornata scolastica, la mattina alle 08:00. Suona la campanella, ed entra il professore della prima ora. Accende il suo Pocket, fa partire MONZO ed ecco che compare la prima schermata: Il docente in questione, che per noi sarà Ferrari, entra con il suo user abituale. Purtroppo abbiamo potuto mettere solo lo user, in quanto le password non ci sono state fornite.. Però lo user ci permette di capire se ad entrare nel registro è un alunno o un insegnante, in quanto uno studente non ha le stesse funzioni di un insegnante, come ad esempio non può dare note, mettersi assente o giustificarsi, però ha tutte le funzioni di routine, come vedere gli argoment del giorno, le materie, le assenze. L’utente professore entra, e compare la schermata successiva: -6- Tesina D’esame - A.s. 2004-05 Crescenzo Francesco Mori Filippo Il Registro Elettronico Vengono date alcune informazioni, e viene richiesta la specializzazione e poi dopo la specializzazione, la classe. È già possibile scegliere se si vuole andare nel registro di oggi, oppure visualizzare un giorno passato con le relative informazioni. Per fare le varie richieste al database, abbiamo usato a volte il dataadapter, anche se è codice da scrivere tutto a mano perché la funzionalità Palmare non supporta il wizard grafico, oppure abbiamo usato il cmd e l’rdr per la lettura, a seconda dei casi. Per esempio nella scelta delle specializzazioni e della classe, il codice usato è stato impostato in questo modo: //iniziamo col definire la connessione. SqlCeConnection vuole la fonte da cui andare a prendere i dati. Nel nostro caso è in My Documents, itis.sdf SqlCeConnection conn=new SqlCeConnection(@"Data Source=\My Documents\itis.sdf"); //apriamo la connessione conn.Open(); //e dopo questo, nel load della form, vengono caricate informazioni di specializzazioni, dando un comando al cmd le cmd.CommandText = "SELECT DISTINCT Specializzazione FROM Classi"; rdr= cmd.ExecuteReader(); while (rdr.Read()) { comboSpecializzazione.Items.Add(rdr.GetString(0)); } rdr.Close(); Una volta scelta la specializzazione, allo stesso modo si caricano le classi, passandogli come criterio stavolta, la specializzazione. Una volta entrato, viene caricato l’orario del giorno -7- Tesina D’esame - A.s. 2004-05 Crescenzo Francesco Mori Filippo Il Registro Elettronico Ora, nel caso ci sia una supplenza, si può cambiare nella combo dell’ora in questione, la materia e anche il nome dell’insegnante. Ad esempio, la prima ora la Lanzi non fa più inglese ma il TutorCepu.. I cambi di materia vengono salvati davvero nel database, perché come in un registro cartaceo, se un giorno c’è un’ora di supplenza, su quell’ora rimane scritta la supplenza e da chi è stata fatta. In questo caso nel caricamento delle materie, ho usato il datadapter, o meglio l’SqlCeDataAdapter. Il suo uso all’inizio è parso difficile, proprio prchè bisognava farlo a mano, poi però ci si rende conto che è abbastanza facile. Prima cosa, si istanzia un nuovo adapter SqlCeDataAdapter adapterRegistro = new SqlCeDataAdapter(); All’adapter viene passata l’istruzione. In questo caso bisogna carica la tabella del registro, cioè la struttura -8- Tesina D’esame - A.s. 2004-05 Crescenzo Francesco Mori Filippo Il Registro Elettronico adapterRegistro.SelectCommand= new SqlCeCommand("SELECT * FROM Registro WHERE Giorno= ? AND Classe=? " ,conn); I due parametri contrassegnati da ? vengono passati nelle istruzioni successive adapterRegistro.SelectCommand.Parameters.Add("Giorno",System.Data.SqlDbType.DateTi me); adapterRegistro.SelectCommand.Parameters["Giorno"].Value= DateTime.Today; “Giorno” è trattato come una data e quindi gli viene passato un DateTime. Il DateTime lavora al rovescio, cioè mette la data in questa forma: aaaa/mm/gg adapterRegistro.SelectCommand.Parameters.Add("Classe",System.Data.SqlDbType.NVarC har); adapterRegistro.SelectCommand.Parameters["Classe"].Value= classe; “Classe” è una stringa e a cui è passata la classe adapterRegistro.Fill(ds, "Registro"); Viene fatto il Fill della tabella Registro Normale routine della mattina è l’appello. Si seleziona da Modifica del menù a tedina Appello, e viene visualizzata la seguente form. Tutti gli alunni vengono dati in una tabella, dove è possibile mettere gli assenti, oppure un ritardo, oppure un permesso di uscita. Ma se un alunno entra alle 08:50? Il docente in questione è tenuto ad andare sempre dal menù a tendina di modifica, ciccare su “Assenze” e qui sarà possibile scegliere fra due opzioni: vedere le assenze di oggi, oppure, se serve, le assenze di un altro giorno. Nel caso comunque di un ritardo, selezionerà “Oggi”. E apparirà la seguente form: -9- Tesina D’esame - A.s. 2004-05 Crescenzo Francesco Mori Filippo Il Registro Elettronico Per esempio, io sono entrato alla terza ora ed ho anche giustificato. Se non avessi giustificato, io domani dovrei portare la giustifica. A proposito di giustifiche, un’altra cosa che si deve fare sempre è vedere chi deve giustificare. Sempre da Modifica del menù a tendina, si clicca su “Giustifiche”. Ecco che si apre la form con tutti gli studenti che devono giustificare. Basta cliccare sulla check e lo studente sarà automaticamente giustificato. Parlando di Note, queste sono divise in Note di Classe e Note Studente. Sulle prime è possibile vederle tutte insieme, oppure dare una nota di classe. Nella form seguente si vedono le tipiche note della classe 5B INF -10- Tesina D’esame - A.s. 2004-05 Crescenzo Francesco Mori Filippo Il Registro Elettronico Nella tabella ci sono tutte le note, e ciccando su una riga, grazie al DataBinding, le informazioni vengono visualizzate nei due riquadri, cioè chi insegnante ha dato la nota, e il contesto della nota. Per quanto riguarda le note studenti, è possibile vederle sia tutte insieme, sia per uno studente specifico: Nella combo in alto vengono visualizzati tutti gli studenti di quella classe, ed è così possibile selezionare lo studente da visualizzare. Invece dando le note: -11- Tesina D’esame - A.s. 2004-05 Crescenzo Francesco Mori Filippo Il Registro Elettronico Sulla base di una datagrid, viene scelto l’alunno a cui è destinata la nota, nella combo si seleziona il professore, e nel riquadro in basso, si scrive la nota. Altro punto importante del programma sono gli argomenti, in cui è possibile vedere sia gli argomenti passati, sia quelli di oggi, e sia quelli futuri, cioè, in una data giornata si possono o visualizzare gli argomenti se già ce ne sono, oppure segnarli (come ad esempio, i compiti in classe) ad esempio, negli argomenti del 22 giugno è segnata la prima prova d’esame. Visualizzando invece gli argomenti di oggi viene visualizzata la form che contiene già gli argomenti che saranno stati segnati qualche giorno prima. -12- Tesina D’esame - A.s. 2004-05 Crescenzo Francesco Mori Filippo Il Registro Elettronico Un’ultima operazione possibile dal palmare, è quella di aprire il registro ad una certa data,ciccando sul menù a tendina File, Apri, e permette di andare a scegliere di vedere il registro di un altro giorno. è possibile anche cambiare specializzazione e classe. -13- Tesina D’esame - A.s. 2004-05 Crescenzo Francesco Mori Filippo Il Registro Elettronico I Palmari Il Palmare è un dispositivo che negli ultimi anni si sta diffondendo sempre di più perché gli ultimi modelli garantiscono migliaia di funzionalità e la loro memoria si sta ampliando sempre di più. Non tutti però utilizzano lo stesso sistema operativo e qualcuno di loro ha incorporato in se pure una piccola tastiera. Di seguito sono elencati tutti i vari tipi di palmari: Senza Tastiera con SO non windows I computer palmari senza tastiera sono molto leggeri, facili da usare e "veramente" palmari (nel senso che solo i palmari senza tastiera stanno su un palmo di una mano). I computer palmari senza WindowsCE e senza tastiera si differenziano molto tra loro, appunto perché non sono "vincolati" dal sistema operativo e possono avere funzioni, dimensioni e prezzi diversi. Un esempio è la PC Card della REX, grande (anzi piccola) quanto una carta di credito con la possibilità di mettergli dentro un bel po' di informazioni direttamente dalla porta PC CARD (PCMCIA) del proprio PC. Si può veramente parlare di palmare in quanto è davvero piccola; purtroppo non c'è la possibilità di inserire dati (infatti, nasce solo per -14- Tesina D’esame - A.s. 2004-05 Crescenzo Francesco Mori Filippo Il Registro Elettronico visualizzare i dati velocemente). In Italia non è commercializzata la versione CE. Esiste una versione PRO (più costosa) ove è possibile l'inserimento dati. Attenzione: si collega al computer come una scheda PCMCIA, se la si vuole collegare via seriale bisogna comprare la base di ancoraggio. Un ottimo palmare senza tastiera e senza WinCE è il PALM IIIx della 3COM. Questo ha una penna con la quale si può scrivere sul display, è dotato di porta a infrarossi ed ha una buona dotazione di programmi e 4MB di memoria. Esiste la versione a colori il PALM IIIc con 8 MB di memoria. Davvero splendido, peccato che il sistema operativo sia in inglese!. Il fratello maggiore (il PALM Vx) ha 8MB di memoria e ha la possibilità di navigare su Internet. Questo modello incorpora il nuovo sistema operativo Palm OS 3.5. La versione italiana disponibile è quella del Palm V (vecchio modello con 2 Mb di memoria e con il vecchio sistema operativo). Girovagando sul Web c'è la possibilità di trovare una miriade di programmi adatti a questo palmare. Finalmente questi palmari possono utilizzare la posta elettronica tramite la porta infrarossi. La porta infrarossi, sinora, serviva solo per collegarli ai PC, ma adesso si può scaricare dal sito della PalmPilot la patch per aggionarli (e dargli una sorta di Accesso Remoto). Interessante è un accessorio che trasforma il Palm in un GSM. Per quanto riguarda il Palm V, esiste una tastiera (ripiegabile in quattro, quindi molto portatile) da potere collegare al palmare. Una bella invenzione! Inoltre, a breve, avranno anche un modulo per la sintesi vocale e si potranno registrare ed ascoltare dati online. Recentemente il Palm è stato utilizzato come cervello di un piccolo robottino (è la Robotics Institute sta pensando di mettere in vendita un Palm Pilot Robot Kit). Ma gli accessori per il Palm non finiscono qui: è disponibile anche un piccolo pad che trasforma il palmare in un Game boy! Il piu' economico e' il Canon ZX-10 (1 MB), ma molto interessante e' anche quello della Olivetti, il daVinci. Non eccezionale, ma anche questo molto economico, dotato di 2 MB di RAM e con il sistema operativo disponibile in 6 lingue diverse (italiano, inglese, tedesco, francese, spagnolo e portoghese) . Altri modelli di palmari li trovate nella sezione GSM-Palmari con proprio sistema operativo. -15- Tesina D’esame - A.s. 2004-05 Crescenzo Francesco Mori Filippo Il Registro Elettronico Con Tastiera e proprio SO Tra questi tipi di palmari spicca la serie dello PSION. Sono i maggiori antagonisti dei palmari con tastiera dotati di Windows CE. Ne esistono quattro modelli, ma i primi due (Siena e 3MX) non sono paragonabili ai palmari con WinCE. Il Revo è un buon palmare, in considerazione anche che è presente la versione italiana (anche qui non siamo ai livelli di WinCE ma ci avviciniamo moltissimo), ma il "pezzo forte" è lo Psion Serie 5MX: un ottimo prodotto. E' l'unico che si può collegare ai Macintosh, si possono registrare messaggi audio, mandare Fax, navigare su Internet, ha una ottima tastiera, molti programmi disponibili (anche in italiano, cosa che manca per i palmari con WinCE). Se si sta cercando un palmare da utilizzare per viaggiare questo è il migliore in assoluto. Ha una durata ottima delle batterie e soprattutto si possono acquistare diversi programmi adatti a chi viaggia (Autostrade, Cartine delle Città, Traduttori ecc).Il punto di forza degli PSION è sicuramente la gestione dei sistemi GPS. Anche la PSION ha creato palmari grandi quanto un portatile. Infatti lo PSION serie 7 e' un palmare dalle dimensioni di un notebook e con un sistema collaudato come quello degli PSION ed è A COLORI. Sicuramente molto superiore ai suoi concorrenti dotati di Windows CE, un palmare dalle dimensioni di un notebook continua a non convincermi affatto: è ingombrante quanto un notebook, non molto più leggero degli ultimi notebook, ma soprattutto dotato di un sistema operativo nettamente inferiore a Windows '95 o successivi. Novità: è disponibile per i Palm (per tradizione palmari senza tastiera) una tastiera della grandezza tradizionale, ma ripiegabile in quattro. Questo interessante accessorio permette ai Palm di entrare in questa sezione. Senza Tastiera e con Win CE Sono molto eleganti e leggeri. Si assomigliano molto tra loro perché adoperando lo stesso sistema operativo, hanno più o meno bisogno degli stessi tasti. Sono molto diffusi e sostituiscono in tutto e per tutto l'agenda (hanno infatti Pocket Outlook, Inbox, Note Taker, calcolatrice ed altre funzioni). Sono disponibili una infinità di programmi (da ricercare sul Web). I Palmari senza tastiera e con Windows CE sono i piu' diffusi; per questo -16- Tesina D’esame - A.s. 2004-05 Crescenzo Francesco Mori Filippo Il Registro Elettronico motivo il mercato in questo settore e' molto attivo. Il futuro dei palmari sembra orientato verso questi modelli, infatti i palmari con tastiera sono destinati ad essere soppiantati da Notebook sempre piu' piccoli. Adesso questi palmari senza tastiera sono A COLORI!!! Abbiamo il Casio Cassiopeia E-105 (a 65.536 colori ed e' dotato di un'uscita stereo per usarlo come walkman MP3, 32 MB, possibilità di vedere video MPEG, processore a 131 Mhz e sistema operativo in italiano) che è strabiliante(!) e il Compaq Aero 2130 (ottimo ed economico). Molto validi il Casio Cassioeia E100 l'HP Jornada 430. La buona notizia e' che i "vecchi" palmari a toni di grigio, costano oggi pochissimo e sono ancora molto buoni (ad esempio il Nino 300 o i "vecchi" Cassiopeia). Su questi modelli sta puntando molto la Microsoft (a loro è rivolto il sistema operativo Pocket PC). Senza Tastiera e con Pocket PC I Palmari senza tastiera e con Windows CE (vecchio software) sono i piu' diffusi: per questo motivo il mercato in questo settore e' molto attivo. Il futuro dei palmari sembra orientato verso questi modelli (con il nuovo software), infatti i palmari con tastiera sono destinati ad essere soppiantati da Notebook sempre piu' piccoli. Sui palmari senza tastiera sta puntando molto la Microsoft: a loro è rivolto il sistema operativo Pocket PC. I modelli dotati di Pocket PC presentati per primi sono stati Casio E115 e HP Jornada 540. Davvero degli splendidi palmari, con un sistema operativo più potente ma allo stesso tempo più semplice e adatto a questo tipo di macchine. La Compaq ha prodotto come Pocket PC il Compaq iPAQ H3600 Pocket PC (il top della gamma a colori, disponibile anche in Italia) e come Pocket PC economico a scala di grigi l'Aero 1550 16MB Pocket PC (la versione Aero 1530 così come quasi tutti i palmari Compaq sono comunque aggiornabili a Pocket PC). Ma l'ondata di palmari con Pocket PC non si arresta e la Casio ha presentato 4 nuovi modelli (a colori e non): IT-70, IT-700, EG-80 e EG-800. Ma la vera novità della Casio è il suo EM-500YW un Pocket PC realizzato pensando esclusivamente alla multimedialità che un palmare può offrire. -17- Tesina D’esame - A.s. 2004-05 Crescenzo Francesco Mori Filippo Il Registro Elettronico Con Tastiera E Win CE A prima vista sembrano dei portatili in miniatura, ma bisogna ricordare invece che sono abbastanza lontani dai portatili. Considerando che i portatili sono sempre piu' piccoli e potenti, scegliere oggi un palmare con la tastiera e' solo una questione di prezzo! Quindi, questi palmari sono destinati a scomparire a vantaggio dei piccoli portatili o dei palmari senza tastiera. La versione attualmente più diffusa di Windows CE è la 2.1 in italiano (vedi più avanti la 3). I palmari sono a colori od in bianco e nero (da 4 sino a 16 toni di grigio). Quelli a colori costruiti sino a poco tempo fa sono strettamente legati al PC poiché la durate delle batterie è breve (solo 2 ore). Sono "quasi" inutili se li vogliamo usare per collegarci ad Internet con le batterie e la scheda PCMCIA (massimo 15 minuti). Molto interessanti, invece, i palmari in bianco e nero che assicurano una durata tra le 6 e le 12 ore (e con ottimi prezzi, visto che sono stati abbondantemente superati dai nuovi modelli), ma attenzione: anche in questo caso navigando su Internet la durata delle batterie si abbassa considerevolmente (da una a due ore). Attenzione alla macchina fotografica digitale che pubblicizza la Sharp. Questa è una piccola macchina fotografica digitale che si attacca allo Sharp tramite la scheda PCMCIA. Bella idea, ma sarebbe un acquisto sbagliato: la camera card si alimenta tramite le batterie del palmare che così durano da 2 a 10 minuti (che divertimento!!!). Il migliore palmare a colori nella versione 2.1 è della Hewlett-Packard: HP Jornada 690 Handheld PC. Questo palmare è un po' più grande dei classici palmari, ma ha una tastiera comodissima, è molto veloce, ha il -18- Tesina D’esame - A.s. 2004-05 Crescenzo Francesco Mori Filippo Il Registro Elettronico modem incorporato 56 Kb, una autonomia di 8 ore, una uscità VGA, e soprattutto ha il nuovo Windows CE 2.1 Jupiter con l'introduzione di alcuni ottimi programmi (primi tra tutti Pocket Access) e alcune migliorie (su InBox e Pocket Explorer). Altro ottimo palmare è l' LG- H-220C della LG Electronics. Oltre ad una ottima autonomia, ottima tastiera e modem incorporato, è dotato di una uscita VGA e soprattutto una uscita parallela (se si vuole usare il palmare anche per stampare sulle comuni stampanti, è la migliore scelta). (Anche se purtroppo la LG ha smesso la produzione di Computer Palmari e non vedremo mai alla luce un aggiornamento). Nuovi palmari con Windows CE 3 - Handheld PC 2000 Splendide macchine nate da poco. Si distinguono per il potente Pocket Explorer 4.0 compatibile e la possibilità di usare la connessione USB. La HP vince la concorrenza con HP Jornada 720 handheld PC il primo palmare con tastiera dotato di jack stereo, ha un modem interno, la possibilità di connessione USB e l'allocazione della CF separata a quella della PCMCIA. HPC PRO Sono considerati i palmari di nuova generazione quelli dotati di WinCE 2.11 Jupiter. Questi palmari hanno le stesse dimensioni di un portatile (hanno lo schermo 640*480 e non 640*240). La forza sta nel prezzo e nella facilità di uso (infatti il Windows CE è molto facile da usare e non ha procedure di avvio o di installazione). Secondo me, comunque, non è una buona scelta, in quanto in definitiva è grande quanto un portatile, ma ha un sistema operativo semplice ma limitato come il WinCE. E guardando l'andamento dei prezzi dei nuovi portatili, non è neanche conveniente. Segnalo, comunque, il Compaq Aero 8000 e l' HP Jornada 820e. -19- Tesina D’esame - A.s. 2004-05 Crescenzo Francesco Mori Filippo Il Registro Elettronico Il Linguaggio Sql L’SQL (Structured Query Language) è un linguaggio non procedurale utilizzato nella gestione dei database relazionali. Rispetto ad altri linguaggi di programmazione per database è molto semplice per quanto riguarda: 1) concisione dei comandi; 2) visione tabellare dei dati; 3) facilità istruzioni; il che fa aumentare il suo sviluppo nelle applicazioni di carattere gestionale. Esso permette all’utente di: - definire la struttura delle relazioni del database (FUNZIONE DDL); - modificare i contenuti del database, con operazioni di inserimento, modifica e cancellazione (FUNZIONE DML); - gestire il controllo degli accessi (FUNZIONE DML); - interrogare la base di dati (FUNZIONE QUERY LANGUAGE). Inoltre l’SQL fornisce opportuni comandi per definire in modo facile i tabulati di uscita dei risultati (reporter). L’SQL utilizza: - caratteri alfabetici; - cifre decimali; - operatori aritmetici e di confronto ( * / + - < >); - altri caratteri di particolare significato nella sintassi delle istruzioni. Gli IDENTIFICATORI (nomi di tabelle, nome di attributi) sono costituiti da sequenze di caratteri non superiori a 18. Per identificare l’attributo di una tabella bisogna utilizzare la nozione: Nome Tabella . Nome Attributo Quando una tabella viene dichiarata bisogna specificare anche il tipo dei dati scelti per gli attributi che possono essere: CHARACTER(n) DATE TIME INTEGER(p) SMALLINT Stringa di lunghezza n Data nella forma MM/GG/AA Ora nella forma HH:MM Numero intero con precisione p Numero intero con precisione 5 -20- n da 1 a 15000 p da 1 a 45 da –32768 a 32767 Tesina D’esame - A.s. 2004-05 Crescenzo Francesco Mori Filippo Il Registro Elettronico INTEGER Numero intero con precisione 10 DECIMAL(p, s) Numero decimale con s cifre decimali Numero reale con precisione 7 Numero reale con precisione 15 Numero reale con precisione 15 Numero reale con precisione 15 FLOAT(p) REAL FLOAT DOUBLE PRECISION precisione p e mantissa di mantissa di mantissa di mantissa di da –2147483648 a 2147483647 p da 1 a 45 s da 0 a p Valore 0 oppure valore assoluto da 1E-38 a 1E+38 Valore 0 oppure valore assoluto da 1E-38 a 1E+38 Valore 0 oppure valore assoluto da 1E-38 a 1E+38 Valore 0 oppure valore assoluto da 1E-38 a 1E+38 Nelle colonne gli attributi che hanno valore non definito o non disponibile assumono il valore NULL. Nella definizione può essere specificato che un attributo deve essere NOT NULL. FUNZIONE DDL Per definire la tabella viene usata la nozione: CREATE TABLE seguita dal nome della tabella e dall’elenco degli attributi. FUNZIONE DCL La struttura tabellare può essere successivamente modificata con il comando: ALTER TABLE nome tabella ADD colonna da aggiungere per aggiungere una nuova colonna ALTER TABLE nome tabella DROP colonna da togliere per togliere una colonna già esistente Per creare un nuovo indice sulla tabella viene usato il comando CREATE INDEX, se non si vuole che ci siano valori duplicati per l’attributo associato ad indice in righe diverse si userà: CREATE UNIQUE INDEX nome indice ON nome tabella (nome attributi) FUNZIONE DML -21- Tesina D’esame - A.s. 2004-05 Crescenzo Francesco Mori Filippo Il Registro Elettronico Per manipolare i dati vengono utilizzati i seguenti comandi: INSERT INTO nome tabella (attributi) VALUES (‘valori’) per inserire nuovi valori in una tabella UPDATE nome tabella SET (valore da ottenere) WHERE (valori da modificare) per aggiornare i valori di una riga DELETE FROM nome tabella WHERE (condizione) per cancellare i valori di una riga FUNZIONE Query Per interrogare il database SELECT attributi FROM nome tabella WHERE condizione SELECT può essere seguito da DISTINCT se si desidera che nella tabella risultante le righe duplicate siano ridotte a una. -22- Tesina D’esame - A.s. 2004-05 Crescenzo Francesco Mori Filippo Il Registro Elettronico Microsoft Access Per effettuare interrogazioni particolarmente complesse, è stato utilizzato anche Microsoft Access. Questo programma consiste principalmente in un sistema di gestione di basi di dati relazionali, può essere utilizzato su personal computer con sistema operativo Microsoft e permette di definire al suo interno applicazioni SQL. In un database gestito da Access possono essere definite sette categorie d’oggetti diversi: le tabelle, le quey, le maschere, i report, le macro, i moduli e le pagine d’accesso. Tabelle:costituiscono lo schema secondo cui sono organizzati i dati all’interno del database. I dati raccolti nelle strutture tabellari formano il livello logico del database. Query(interrogazioni sui dati): permettono di ricavare nuove tabelle da quelle iniziali definite nel livello logico e formano, il livello esterno del database; le tabelle ottenute attraverso una query, generalmente, non rispettano le forme di normalizzazione. Maschere e Report: consentono di presentare all’utente finale i dati in modo da facilitare la consultazione (report) e il loro aggiornamento (maschere). Le macro e i moduli: consentono di automatizzare operazioni particolari sui dati. In particolare le macro sono sequenze di comandi di Access raccolte in un’unica operazione che libera l’utente da lavori ripetitivi e noiosi, mentre i moduli sono procedure scritte in un linguaggio interno ad Access, che permettono di eseguire operazioni più complesse di quelle che è possibile definire attraverso le macro. Le pagine d’accesso: sono utilizzate per visualizzare e pubblicare i dati del database su internet utilizzando maschere generate automaticamente. Tabelle Una tabella è un insieme di dati relativi ad una stessa entità. I dati di una tabella vengono rappresentati suddivisi in colonne e righe. Le colonne vengono denominate campi e le righe record. Per definizione di tabella si intende la descrizione della struttura della tabella specificandom per ogni tabella: Il nome della colonna Il tipo di dati che esso contiene La dimensione massima prevista per i dati. I vari tipi di dato sono: Testo Memo -23- Tesina D’esame - A.s. 2004-05 Crescenzo Francesco Mori Filippo Il Registro Elettronico Numerico Data/Ora Valuta Contatore Si/No In ogni tabella è possibile definire un dato come chiave primaria oppure inserire un contatore. Access offre la possibilità di definire e di memorizzare le associazioni esistenti tra le tabelle del database su cui si sta lavorando. Inoltre la definizione delle associazioni è realizzata utilizzando in modo intuitivo l’interfaccia grafica. Query Per query si intende un’interrogazione che viene posta riguardo ai dai presenti in un database. I dati che forniscono la risposta alla domanda definita dalla query possono provenire da una o più tabelle; inoltre i dati prodotti da una query sono organizzati secondo la struttura di una tabella. I dati possono essere visualizzati in modalità: Struttura Foglio dati, presenta la tabella con i dati ottenuti come risulato dell’interrogazione SQL, mostra l’istruzione SQL associata alla query. Vi sono due tipi di query: A campi incrociati, questa estrae i valori di riepilogo, come somme, conteggi e medie da un campo di una tabella e li raggruppa visualizzandoli in una tabella a doppia entrata ponendo sulla riga di intestazione la prima chiave di raggruppamento e sulla colonna a sinistra la seconda chiave di raggruppamento. Di comando, apporta modifiche a molti rcordm con una sola operazione. Esistono 4 tipi di query di comando: Di creazione di tabella Di aggiornamento Di accoramento Di eliminazione -24- Tesina D’esame - A.s. 2004-05 Crescenzo Francesco Mori Filippo Il Registro Elettronico Descrizione Dettagliata del Database La struttura del DataBase utilizzato per la realizzazione del registro di classe, proviene dal vero DataBase Itis.mdb, che a nostra opinione è fatto davvero bene. Alle tabelle già esistenti sono state poi aggiunte altre tabelle, che vengono utilizzate per rendere il programma efficiente e quanto più assomigliante alla realtà di un vero registro elettronico. Come si può vedere, il DataBase risulta in alcuni punti un pò complesso, per via dei collegamenti tra le tabelle. Il DataBase è composto da 16 tabelle: -AccountPesonale e AccounStudente: contengono diversi dati importanti, in particolare la matricola degli insegnanti e degli studenti, lo user e la password che servono per i vari servizi offerti dalla scuola(come ad esempio l’accesso alla posta elettronica), e il full name. -Studenti e Personale contengono Matricola che è collegato alle rispettive AccountStudenti e AccountPersonale, poi vari dati personali quali Cognome, Nome, Data di nascita, Gruppo di Appartenenza e per gli studenti una cosa importante è la classe attuale, che va collegata alla tabella classi quando si ricercano studenti di una specifica classe. -25- Tesina D’esame - A.s. 2004-05 Crescenzo Francesco Mori Filippo Il Registro Elettronico -Classi contiene Classe, che è il codice della classe(Es: 5B9), Nome cioè il nome proprio della classe (Es: 5B INF), Specializzazione e Gruppo. -Materie contiene l’Id della materia, Il Nome per intero della materia(Es: Lingua e lettere italiane ) e il “Breve”, cioè il nome comune della materia (Es: Italiano) -Orario è una delle tabelle importanti del programma. Collegata alla tabella Materie e AccountPersonale, consente di visualizzare l’orario scolastico. Contiene Matricola, che è la matricola del docente, (Es: 00198), Classe (Es:5B9), Materia , che viene dato l’identificativo della materia, e l’Ora, che è formato dalle due prime lettere del giorno e dal numero che identifica l’ora (Es: LU1 identifica la prima ora del lunedi) -Registro: La tabella Registro è molto importante perché intorno ad essa ruotano tante altre tabelle. La tabella è fondamentale nel programma, anche se è un po’ statica. Contiene il Giorno, di cui si vede l’orario, o comunque il giorno della lezione, la Classe del registro, il “Day” che identifica il giorno della settimana , cioè lunedì, martedì.. Materia, che va da 1 a 6 che e che sono le 6materie nell’arco di una giornata (abbiamo standardizzato che nelle ore di laboratorio ci sia il docente di laboratorio senza mettere l’altro docente ) e poi c’è MatricolaInsegnante, sempre da 1 a 6, che riporta l’insegnante della data ora. -Argomenti è un’altra delle tabelle un po’ statiche, perché contiene sei campi che riportano gli argomenti delle sei ore di una giornata normale. -Assenti si collega al registro con la classe e il giorno, però vengono usati anche i campi Cognome e Nome -Ritardi è simile ad Assenti, però contiene un campo con l’ora d’entrata, e se ha giustificato oppure no. -Giustifiche e Giustificato riportano rispettivamente gli alunni che devono giustificare e quelli invece cha hanno giustificato. -NoteClasse e NoteStudenti sono le note disciplinari. Le NoteClasse riportano le note date alla classe, mentre le NoteStudenti riportano le note date ai singoli studenti. -26- Tesina D’esame - A.s. 2004-05 Crescenzo Francesco Mori Filippo Il Registro Elettronico Problema DataBase Uno dei problemi principali che abbiamo affrontato per la realizzazione del programma, è stato quello di mettere il nostro data base su palmare. Purtroppo, il normale mdb usato sul personal, non viene riconosciuto dal palmare perché non esiste il componente Microsoft Access. L’unico formato che permette di utilizzare un DataBase con SqlCE Query Analizer è un .sdf, che non è possibile creare spostando il DataBase dal personal al Pc attraverso la copia oppure con l’importazione dei dati che è una funzionalità che si attiva con la sincronizzazione del palmare con ActiveSync. Qui possiamo vedere come avviene la copia e la conversione -27- Tesina D’esame - A.s. 2004-05 Crescenzo Francesco Mori Filippo Il Registro Elettronico Per risolvere il problema, abbiamo tentanto oltre che trasportare il database su palmare, di utilizzare anche la MergeReplication, che però richiedeva la connessione ad Internet del palmare ed inoltre l’installazione dell’ IIS sulla macchina, che ipoteticamente permetteva di visualizzare un database preso da SqlServer2000. Quindi abbiamo deciso di trasformare le tabelle del database, in script Sql apribili da SqlCe del palmare, che permettesse la creazione della tabella e l’inserimento dei dati. Anche se è codice SQL, SqlCe non è proprio fratello di Sql normale, ma presenta alcune minime variazioni ad esempio in materia del tipo di dati. Per creare le tabelle è stato usato il programma DbaMgr che permette di creare degli Script di SQL. Si connette alla macchina locale o comunque quella dove è il database. Grazie all’Enterprise Manager di Microsoft SQL Server è possibile importate i dati di un database esterno, grazie semplicemente alla funzione importa dati. Con l’uso del programma DbaMgr, vengono create l tabelle com file .Sql. un esempio della creazione della tabella e dello script dell’inserimento dei suoi dati. Es: Studenti.Sql CREATE TABLE Studenti ( Matricola nvarchar (5) NULL , Cognome nvarchar (20) NULL , Nome nvarchar (20) NULL , DataNascita nvarchar(20) NULL , ClasseAttuale nvarchar (4) NULL , -28- Tesina D’esame - A.s. 2004-05 Crescenzo Francesco Mori Filippo Il Registro Elettronico ClasseProvenienza nvarchar (4) NULL , GruppoAlternativo1 nvarchar (11) NULL , GruppoAlternativo2 nvarchar (11) NULL ) è stata creata la tabella. Ora bisogna prendere i dati. INSERT INTO [dbo].[Studenti] ([Matricola], [Cognome], [Nome], [DataNascita], [ClasseAttuale], [ClasseProvenienza], [GruppoAlternativo1], [GruppoAlternativo2] ) VALUES ( '00078', 'VESCOVI', 'ANDREA', '1983-09-07', '5S15', '4BPG', NULL, NULL ) INSERT INTO [dbo].[Studenti] ([Matricola], [Cognome], [Nome], [DataNascita], [ClasseAttuale], [ClasseProvenienza], [GruppoAlternativo1], [GruppoAlternativo2] ) VALUES ( '00087', 'MANTOVANI', 'ANDREA', '1983-04-16', '5S17', '4S17', NULL, NULL ) Le differenze con del linguaggio come prima detto sta nelle parentesi quadre, e tra l’inserimento di un dato e l’altro è richiesto il punto e virgola. Questa operazione di inserimento è utile come in questo caso che nel database ci sono oltre 1000 records che sarebbe stato folle scrivere a mano. Anche scrivendone solo una parte questo avrebbe compromesso la piena funzionalità del progetto. Questo è lo schema del database che compare sull’SQLCE Query del palmare. L’SqlCe query ha anche una componente Sql che permette di scrivere codice puro, come si vede dall’immagine sotto -29- Tesina D’esame - A.s. 2004-05 Crescenzo Francesco Mori Filippo Il Registro Elettronico E poi vedere i dati nella componente Grid Per il funzionamento del programma serve il database, e tutte le tabelle sono scaricabili dal sito. Configurazione sviluppo. degli ambienti client e di Una volta scaricato dal sito della Microsoft SQL Server CE 2.0, scaricabile da http://www.microsoft.com/sql/ce/downloads/ce20.asp È possibile effettuare il processo di installazione. Lanciato il programma di installazione bisognerà selezionare l’opzione “Development Tools”. Terminato il processo di installazione di Sql Server Ce, l’ambiente di sviluppo è già automaticamente configurato. Non viene fatto il processo di download di SQl Server Ce sul dispositivo palmare fino a che non viene eseguita una ulteriore operazione. Ecco come si effettua -30- Tesina D’esame - A.s. 2004-05 Crescenzo Francesco Mori Filippo Il Registro Elettronico l’installazione automatica da Visual Studio .Net con c# e in generale della creazione di un’applicazione per palmare: Si apre Visual Studio. Net e si crea un nuovo progetto. Si crea una nuova applicazione per Smart Device, visto che è una cosa che l’ambiente di sviluppo ci regala già di suo. Poi bisogna scegliere se l’applicazione girerà su un PocketPc o su un pocket con Window CE, che sono i palmari i ultima generazione. Per il momento e per le nostre esigenze, sciegliamo Pocket Pc. Dal menù Progetto, selezioniamo la voce Aggiungi Riferimento, e selezioniamo le voci SqlServerCe e SqlClient. Ora è sufficiente lanciare -31- Tesina D’esame - A.s. 2004-05 Crescenzo Francesco Mori Filippo Il Registro Elettronico un’applicazione perché vengano in automatico scaricati e registrati sul Pocket PC non solo SQL Server Ce, ma anche ADOCE e ADOXCE che permetteranno come componenti di accesso ai dati e di modifica dello schema del DataBase -32- Tesina D’esame - A.s. 2004-05 Crescenzo Francesco Mori Filippo Il Registro Elettronico Il .Net Compact Framework Con .NET Compact Framework viene messo a disposizione dei dispositivi la potente piattaforma di sviluppo di .NET Framework. .NET Compact Framework costituisce un ambiente indipendente dall'hardware per l'esecuzione di programmi su dispositivi di elaborazione con risorse limitate che comprendono PDA (Personal Data Assistant) quali i Pocket PC, telefoni cellulari, set-top box, dispositivi di elaborazione del settore automobilistico e dispositivi incorporati a progettazione personalizzata, creati con il sistema operativo Windows CE .NET. .NET Compact Framework, che rappresenta un sottoinsieme della libreria di classi .NET Framework, contiene anche classi appositamente progettate ed eredita interamente l'architettura .NET Framework per Common Language Runtime e l'esecuzione di codice gestito. In .NET Compact Framework vengono fornite le seguenti funzionalità principali: Supporto di protocolli di rete comuni e facile connessione con servizi Web XML. Disponibilità per gli sviluppatori di un modello che consente di progettare applicazioni e componenti per una vasta gamma di dispositivi oppure per una categoria specifica. Vantaggi a livello di progettazione e ottimizzazione delle limitate risorse di sistema. Prestazioni ottimali nella generazione di codice nativo mediante la compilazione JIT (Just-In-Time). Classi disponibili solo in .NET Compact Framework Le classi elencate di seguito sono disponibili esclusivamente in .NET Compact Framework. Classi IrDA (Infrared Data Association): Classe IrDAEndPoint Membri IrDAEndPoint Costruttori pubblici Costruttore IrDAEndPoint Inizializza una nuova istanza della classe IrDAEndPoint. -33- Tesina D’esame - A.s. 2004-05 Crescenzo Francesco Mori Filippo Il Registro Elettronico Supportato solo da .NET Compact Framework. Proprietà pubbliche AddressFamily Supportato solo da .NET Compact Framework. Sottoposto a override. Ottiene il gruppo di indirizzi a cui appartiene l'endpoint. DeviceID Supportato solo da .NET Compact Framework. Ottiene o imposta un identificatore per la periferica. ServiceName Supportato solo da .NET Compact Framework. Ottiene o imposta il nome del servizio. Metodi pubblici Create Supportato solo da .NET Compact Framework. Sottoposto a override. Crea un IrDAEndPoint da un indirizzo socket. Equals (ereditato da Object) Supportato solo da .NET Compact Framework. Sottoposto a overload. Consente di determinare se due istanze di Object sono uguali. GetHashCode (ereditato da Object) Supportato solo da .NET Compact Framework. Viene utilizzato come funzione hash per un tipo particolare, adatto per l'utilizzo in algoritmi hash e in strutture di dati simili a una tabella hash. GetType (ereditato da Object) Supportato solo da .NET Compact Framework. Ottiene l'oggetto Type dell'istanza corrente. Serialize Supportato solo da .NET Compact Framework. Sottoposto a override. Serializza le informazioni di endpoint in un SocketAddress. ToString (ereditato da Object) Supportato solo da .NET Compact Framework. Restituisce un oggetto String che rappresenta l'oggetto Object corrente. Metodi protetti Finalize (ereditato da Object) Supportato solo da .NET Compact Framework. MemberwiseClone (ereditato da Object) Supportato solo da .NET Compact Framework. Sottoposto a override. Consente a un oggetto Object di provare a liberare risorse ed eseguire altre operazioni di pulitura prima che l'oggetto Object stesso venga recuperato dalla procedura di Garbage Collection. In C# e C++ i finalizzatori sono espressi tramite la sintassi del distruttore. Consente di creare una copia dei riferimenti dell'oggetto Object corrente. Enumerazione IrDACharacterset -34- Tesina D’esame - A.s. 2004-05 Crescenzo Francesco Mori Filippo Il Registro Elettronico Enumerazione IrDACharacterSet che descrive i seguenti set di caratteri, utilizzati dalle classi IrDAClient e IrDADeviceInfo. Membri IrDACharacterset ASCII Supportato solo da .NET Compact Framework. Set di caratteri ASCII. ISO8859Arabic Supportato solo da .NET Compact Framework. Set di caratteri grafici arabo. ISO8859Cyrillic Supportato solo da .NET Compact Framework. Set di caratteri grafici cirillico. ISO8859Greek Supportato solo da .NET Compact Framework. Set di caratteri grafici greco. ISO8859Hebrew Supportato solo da .NET Compact Framework. Set di caratteri grafici ebraico. ISO8859Latin1 Supportato solo da .NET Compact Framework. Set di caratteri grafici Europa occidentale. ISO8859Latin2 Supportato solo da .NET Compact Framework. Set di caratteri grafici Europa orientale. ISO8859Latin3 Supportato solo da .NET Compact Framework. Set di caratteri grafici Europa meridionale. ISO8859Latin4 Supportato solo da .NET Compact Framework. Set di caratteri grafici Europa settentrionale. ISO8859Latin5 Supportato solo da .NET Compact Framework. Set di caratteri grafici turco. Unicode Supportato solo da .NET Compact Framework. Set di caratteri Unicode. Classe IrDAClient Membri IrDAClient Costruttori pubblici Costruttore IrDAClient Supportato solo da .NET Compact Framework. Sottoposto a overload. Inizializza una nuova istanza della classe IrDAClient. Proprietà pubbliche RemoteMachineName Supportato solo da .NET Compact Framework. Ottiene il nome della periferica che partecipa alla comunicazione. -35- Tesina D’esame - A.s. 2004-05 Crescenzo Francesco Mori Filippo Il Registro Elettronico Metodi pubblici Close Supportato solo da .NET Compact Framework. Chiude il socket della connessione. Connect Supportato solo da .NET Compact Framework. Sottoposto a overload. Effettua la connessione di un client a un servizio specificato. DiscoverDevices Supportato solo da .NET Compact Framework. Sottoposto a overload. Ottiene informazioni sulle periferiche che partecipano a comunicazioni a infrarossi. Equals (ereditato da Object) Supportato solo da .NET Compact Framework. Sottoposto a overload. Consente di determinare se due istanze di Object sono uguali. GetHashCode (ereditato da Object) Supportato solo da .NET Compact Framework. Viene utilizzato come funzione hash per un tipo particolare, adatto per l'utilizzo in algoritmi hash e in strutture di dati simili a una tabella hash. GetRemoteMachineName Supportato solo da .NET Compact Framework. Ottiene il nome di una periferica che utilizza un socket specificato. GetStream Supportato solo da .NET Compact Framework. Ottiene il flusso di dati sottostante. GetType (ereditato da Object) Supportato solo da .NET Compact Framework. Ottiene l'oggetto Type dell'istanza corrente. ToString (ereditato da Object) Supportato solo da .NET Compact Framework. Restituisce un oggetto String che rappresenta l'oggetto Object corrente. Metodi protetti Finalize (ereditato da Object) Supportato solo da .NET Compact Framework. MemberwiseClone (ereditato da Object) Supportato solo da .NET Compact Framework. Sottoposto a override. Consente a un oggetto Object di provare a liberare risorse ed eseguire altre operazioni di pulitura prima che l'oggetto Object stesso venga recuperato dalla procedura di Garbage Collection. In C# e C++ i finalizzatori sono espressi tramite la sintassi del distruttore. Consente di creare una copia dei riferimenti dell'oggetto Object corrente. Classe IrDADeviceInfo Membri IrDADeviceInfo Proprietà pubbliche CharacterSet Supportato solo da .NET Compact Framework. DeviceID Ottiene il set di caratteri utilizzato dal server, ad esempio il set di caratteri ASCII. Ottiene l'identificatore di periferica. -36- Tesina D’esame - A.s. 2004-05 Crescenzo Francesco Mori Filippo Il Registro Elettronico Supportato solo da .NET Compact Framework. DeviceName Supportato solo da .NET Compact Framework. Hints Supportato solo da .NET Compact Framework. Ottiene il nome di una periferica. Ottiene il tipo di periferica, ad esempio un computer. Metodi pubblici Sottoposto a overload. Consente di determinare se due istanze di Object sono uguali. Viene utilizzato come funzione hash per un tipo particolare, adatto per l'utilizzo in algoritmi hash e in strutture di dati simili a una tabella hash. Ottiene l'oggetto Type dell'istanza corrente. Equals (ereditato da Object) Supportato solo da .NET Compact Framework. GetHashCode (ereditato da Object) Supportato solo da .NET Compact Framework. GetType (ereditato da Object) Supportato solo da .NET Compact Framework. ToString (ereditato da Object) Supportato solo da .NET Compact Framework. Restituisce un oggetto String che rappresenta l'oggetto Object corrente. Metodi protetti Sottoposto a override. Consente a un oggetto Object di provare a liberare risorse ed eseguire altre operazioni di pulitura prima che l'oggetto Object stesso venga recuperato dalla procedura di Garbage Collection. In C# e C++ i finalizzatori sono espressi tramite la sintassi del distruttore. Consente di creare una copia dei riferimenti dell'oggetto Object corrente. Finalize (ereditato da Object) Supportato solo da .NET Compact Framework. MemberwiseClone (ereditato da Object) Supportato solo da .NET Compact Framework. Enumerazione IrDAHints Descrive un'enumerazione dei tipi di periferica possibili, ad esempio Fax. Questa enumerazione ha attributo un FlagsAttribute che consente una combinazione bit per bit dei valori dei membri. Membri IrDAHints Nome membro Computer Supportato solo da .NET Compact Framework. Fax Supportato solo da .NET Compact Framework. FileServer Supportato solo da .NET Compact Framework. Descrizione Valore PC 4 Fax 32 File server di PC 512 -37- Tesina D’esame - A.s. 2004-05 Crescenzo Francesco Mori Filippo Il Registro Elettronico LanAccess Supportato solo da .NET Compact Framework. Modem Supportato solo da .NET Compact Framework. None Supportato solo da .NET Compact Framework. PdaAndPalmtop Supportato solo da .NET Compact Framework. PnP Supportato solo da .NET Compact Framework. Printer Supportato solo da .NET Compact Framework. Telephony Supportato solo da .NET Compact Framework. Accesso alla rete locale 64 Modem 16 Nome che non indica alcuna periferica 0 Pocket PC 2 Interfaccia Plug and Play 1 Stampante 8 Dispositivo telefonico 256 Classe IrDAListener Membri IrDAListener Costruttori pubblici Costruttore IrDAListener Supportato solo da .NET Compact Framework. Sottoposto a overload. Inizializza una nuova istanza della classe IrDAListener. Proprietà pubbliche LocalEndpoint Supportato solo da .NET Compact Framework. Ottiene una nuova istanza della classe IrDAListener. Metodi pubblici AcceptIrDAClient Supportato solo da .NET Compact Framework. AcceptSocket Supportato solo da .NET Compact Framework. Equals (ereditato da Object) Supportato solo da .NET Compact Framework. GetHashCode (ereditato da Object) Supportato solo da .NET Compact Framework. GetType (ereditato da Object) Supportato solo da .NET Compact Framework. Crea un oggetto client per una connessione quando il servizio o il punto finale specificato viene rilevato dal componente listener. Crea un nuovo socket per una connessione. Sottoposto a overload. Consente di determinare se due istanze di Object sono uguali. Viene utilizzato come funzione hash per un tipo particolare, adatto per l'utilizzo in algoritmi hash e in strutture di dati simili a una tabella hash. Ottiene l'oggetto Type dell'istanza corrente. -38- Tesina D’esame - A.s. 2004-05 Crescenzo Francesco Mori Filippo Il Registro Elettronico Pending Supportato solo da .NET Compact Framework. Start Supportato solo da .NET Compact Framework. Stop Supportato solo da .NET Compact Framework. ToString (ereditato da Object) Supportato solo da .NET Compact Framework. Determina se è presente una connessione in sospeso. Avvia il socket per attendere le connessioni in ingresso. Arresta il socket per il monitoraggio delle connessioni. Restituisce un oggetto String che rappresenta l'oggetto Object corrente. Metodi protetti Finalize (ereditato da Object) Supportato solo da .NET Compact Framework. MemberwiseClone (ereditato da Object) Supportato solo da .NET Compact Framework. Sottoposto a override. Consente a un oggetto Object di provare a liberare risorse ed eseguire altre operazioni di pulitura prima che l'oggetto Object stesso venga recuperato dalla procedura di Garbage Collection. In C# e C++ i finalizzatori sono espressi tramite la sintassi del distruttore. Consente di creare una copia dei riferimenti dell'oggetto Object corrente. Classi di SQL Server CE: Spazio dei nomi System.Data.SqlServerCE Lo spazio dei nomi System.Data.SqlServerCe è il provider di dati .NET Compact Framework di SQL Server CE. Il provider di dati .NET Compact Framework di SQL Server CE descrive un insieme di classi utilizzate per accedere a un database SQL Server CE da periferiche basate su Windows CE nello spazio gestito. Con lo spazio dei nomi System.Data.SqlServerCe, è possibile creare database SQL Server CE su una periferica e stabilire connessioni a database SQL Server su un'altra periferica o su un server remoto. Classi SqlCeCommand SqlCeCommandBuilder SqlCeConnection SqlCeDataAdapter Rappresenta un'istruzione SQL da eseguire in relazione a un'origine dati. Consente la generazione automatica di comandi di tabella singola per risolvere le modifiche apportate a un oggetto DataSet con il database SQL Server CE associato. Questa classe non può essere ereditata. Rappresenta una connessione aperta a un'origine dati. Rappresenta un gruppo di comandi di dati e una connessione a un database utilizzati per -39- Tesina D’esame - A.s. 2004-05 Crescenzo Francesco Mori Filippo Il Registro Elettronico SqlCeDataReader SqlCeEngine SqlCeError SqlCeErrorCollection SqlCeException SqlCeInfoMessageEventArgs SqlCeParameter SqlCeParameterCollection SqlCeRemoteDataAccess SqlCeReplication SqlCeRowUpdatedEventArgs SqlCeRowUpdatingEventArgs SqlCeTransaction compilare l'oggetto DataSet e aggiornare l'origine dati. Fornisce un modo per leggere un flusso di righe di dati forward-only da un'origine dati. Questa classe non può essere ereditata. Rappresenta le proprietà, i metodi e altri oggetti del modulo di gestione SQL Server CE. Questa classe non può essere ereditata. Raccoglie informazioni importanti relative a un avviso o a un errore restituito dall'origine dati. Questa classe non può essere ereditata. Raccoglie tutti gli errori generati dal provider di dati .NET Compact Framework di SQL Server. Questa classe non può essere ereditata. Eccezione generata quando il provider sottostante restituisce un avviso o un errore da un'origine dati SQL Server CE. Questa classe non può essere ereditata. Fornisce i dati per l'evento InfoMessage. Questa classe non può essere ereditata. Rappresenta un parametro di un oggetto SqlCeCommand e, facoltativamente, il relativo mapping a una colonna DataSet. Questa classe non può essere ereditata. Raccoglie tutti i parametri principali di un oggetto SqlCeCommand e i rispettivi mapping alle colonne di DataSet. Consente di inizializzare una nuova istanza dell'oggetto SqlCeRemoteDataAccess. Per ulteriori informazioni sull'accesso remoto ai dati, vedere la documentazione in linea di SQL Server CE. Consente di inizializzare una nuova istanza dell'oggetto SqlCeReplication. Per ulteriori informazioni sulla replica, vedere la documentazione in linea di SQL Server. Per ulteriori informazioni sulla replica di tipo di merge in SQL Server CE, vedere la documentazione in linea di SQL Server CE. Fornisce i dati per l'evento RowUpdated. Fornisce i dati per l'evento RowUpdating. Rappresenta una transazione SQL da effettuare in corrispondenza di un'origine dati. Questa classe non può essere ereditata. Delegati SqlCeInfoMessageEventHandler SqlCeRowUpdatedEventHandler Rappresenta il metodo che gestirà l'evento InfoMessage di un oggetto SqlCeConnection. Rappresenta il metodo mediante il quale verrà -40- Tesina D’esame - A.s. 2004-05 Crescenzo Francesco Mori Filippo Il Registro Elettronico SqlCeRowUpdatingEventHandler gestito l'evento RowUpdated di un oggetto SqlCeDataAdapter. Rappresenta il metodo mediante il quale verrà gestito l'evento RowUpdating di un oggetto SqlCeDataAdapter. Enumerazioni AddOption Specifica l'origine del nuovo database SQL Server CE database. Opzioni utilizzate dal metodo SetRange quando viene specificato l'intervallo di indice su cui eseguire il metodo Seek. Opzioni che consentono di specificare le modalità del metodo Seek su un indice. Consente di specificare se lasciare o eliminare il database SQL Server CE durante la rimozione di una sottoscrizione. Consente di specificare se l'unione dei dati avviene al livello del server di pubblicazione o in entrambe le direzioni tra server di pubblicazione e server di sottoscrizione. Consente di specificare il protocollo di rete utilizzato. Consente di specificare se effettuare il batch delle righe associate al metodo Push in un'unica transazione. Consente di specificare se tenere traccia della tabella estratta nella periferica. DbRangeOptions DbSeekOptions DropOption ExchangeType NetworkType RdaBatchOption RdaTrackOption Descrizione delle classi fondamentali utilizzate nel nostro programma: SqlCeCommand Rappresenta un'istruzione SQL da eseguire in relazione a un'origine dati. Quando viene creata un'istanza di SqlCeCommand, le proprietà di lettura/scrittura vengono impostate sui valori iniziali. L'oggetto SqlCeCommand comprende i seguenti metodi per l'esecuzione di comandi in un'origine dati: Elemento ExecuteReader ExecuteNonQuery ExecuteScalar Descrizione Esegue i comandi che restituiscono righe. Esegue comandi SQL quali istruzioni INSERT, DELETE e UPDATE. Recupera un valore singolo, ad esempio un valore -41- Tesina D’esame - A.s. 2004-05 Crescenzo Francesco Mori Filippo Il Registro Elettronico aggregato, da un database. Il provider di dati .NET Compact Framework di SQL Server CE non supporta i parametri denominati per passare parametri a un'istruzione SQL chiamata da un oggetto SqlCeCommand quando la proprietà CommandType è impostata su Text. È necessario utilizzare il segnaposto punto interrogativo (?). Ad esempio: SELECT * FROM Customers WHERE CustomerID = ? È necessario che l'ordine in cui gli oggetti SqlCeParameter vengono aggiunti all'insieme SqlCeParameterCollection corrisponda alla posizione del segnaposto punto interrogativo per il parametro. Il provider di dati di SQL Server CE, inoltre, non supporta query in batch. È necessario che i comandi siano nel formato Select * from Customers anziché Select * from Customers; Select * from Orders; Se si utilizza del codice generato per System.Data.SqlClient, può essere necessario modificare le query in modo conforme a questa restrizione. Sebbene SQL Server CE supporti una sola connessione alla volta, è possibile che più comandi condividano la stessa connessione. Pertanto è possibile disporre di più istanze di SqlCeDataReader sulla stessa connessione. Questo comportamento è diverso da quello di System.Data.SqlClient. Se viene generata un'eccezione SqlCeException irreversibile dal metodo durante l'esecuzione di un comando SqlCeCommand, è possibile che la connessione SqlCeConnection venga chiusa. È possibile riaprire la connessione e continuare. SqlCeDataReader Fornisce un modo per leggere un flusso di righe di dati forward-only da un'origine dati. Questa classe non può essere ereditata. Per creare un oggetto SqlCeDataReader, è necessario chiamare il metodo ExecuteReader dell'oggetto SqlCeCommand, anziché utilizzare direttamente un costruttore. Mentre l'oggetto SqlCeDataReader è in uso, l'oggetto SqlCeConnection associato è occupato nel rendere disponibile l'oggetto SqlCeDataReader. In questo stato, è possibile creare più visualizzatori nella stessa connessione. Le modifiche apportate a un gruppo di risultati da un altro processo o thread durante la lettura dei dati sono visibili agli utenti di SqlCeDataReader, tuttavia il comportamento preciso dipende da quando vengono apportate. IsClosed e RecordsAffected sono le uniche proprietà che è possibile chiamare dopo la chiusura dell'oggetto SqlCeDataReader. Anche se è possibile accedere alla proprietà RecordsAffected in qualsiasi momento in presenza dell'oggetto SqlCeDataReader, è preferibile chiamare sempre -42- Tesina D’esame - A.s. 2004-05 Crescenzo Francesco Mori Filippo Il Registro Elettronico il metodo Close prima della restituzione del valore della proprietà RecordsAffected per assicurare un valore restituito preciso. SqlCeCommandBuilder Consente la generazione automatica di comandi di tabella singola per risolvere le modifiche apportate a un oggetto DataSet con il database SQL Server CE associato. Questa classe non può essere ereditata. L'oggetto SqlCeCommandBuilder crea istruzioni SQL che non rilevano conflitti. Questo comportamento è diverso da quello di System.Data.SqlClient. L'oggetto SqlCeCommandBuilder registra se stesso come listener di eventi RowUpdating ogni volta che viene impostata la proprietà DataAdapter. È possibile associare reciprocamente solo un oggetto SqlCeDataAdapter o SqlCeCommandBuilder alla volta. Per generare istruzioni INSERT, UPDATE o DELETE, l'oggetto SqlCeCommandBuilder utilizza la proprietà SelectCommand per recuperare automaticamente un set obbligatorio di metadati. Se si modifica la proprietà SelectCommand dopo il recupero dei metadati, ad esempio dopo il primo aggiornamento, è necessario chiamare il metodo RefreshSchema per aggiornare i metadati. È inoltre necessario che la proprietà SelectCommand restituisca almeno una chiave primaria o una colonna univoca. In caso contrario, viene generata un'eccezione InvalidOperation e i comandi non vengono generati. L'oggetto SqlCeCommandBuilder utilizza inoltre le proprietà Connection e Transaction a cui fa riferimento la proprietà SelectCommand. Se una di queste proprietà viene modificata o se la stessa SelectCommand viene sostituita, è necessario chiamare il metodo RefreshSchema. In caso contrario, le proprietà InsertCommand, UpdateCommand e DeleteCommand mantengono i valori precedenti. Se si chiama il metodo Dispose, SqlCeCommandBuilder viene dissociato dall'oggetto SqlCeDataAdapter e i comandi generati non vengono più utilizzati. SqlCeConnection Rappresenta una connessione aperta a un'origine dati. Un oggetto SqlCeConnection rappresenta una connessione univoca a un'origine dati. Quando si crea un'istanza di SqlCeConnection tutte le proprietà vengono impostate sui valori iniziali. Se l'oggetto SqlCeConnection diventa esterno all'ambito, non viene chiuso. È necessario chiudere esplicitamente la connessione chiamando il metodo Close o Dispose. Sebbene SQL Server CE supporti una sola connessione alla volta, è possibile che più comandi condividano la stessa connessione. È pertanto possibile disporre di più istanze di SqlCeDataReader aperte sulla stessa connessione. Questo comportamento è diverso da quello di -43- Tesina D’esame - A.s. 2004-05 Crescenzo Francesco Mori Filippo Il Registro Elettronico System.Data.SqlClient. Se viene generata un'eccezione SqlCeException irreversibile dal metodo durante l'esecuzione di un comando SqlCeCommand, è possibile che la connessione SqlCeConnection venga chiusa. È possibile riaprire la connessione e continuare. SqlCeDataAdapter Rappresenta un gruppo di comandi di dati e una connessione a un database utilizzati per compilare l'oggetto DataSet e aggiornare l'origine dati. L'oggetto SqlCeDataAdapter funge da ponte tra un oggetto DataSet e un'origine dati per il recupero e il salvataggio dei dati. L'oggetto SqlCeDataAdapter fornisce tale ponte tramite il metodo Fill per caricare i dati dall'origine dati nell'oggetto DataSet e tramite il metodo Update per inviare di nuovo all'origine dati le modifiche apportate in DataSet. Quando l'oggetto SqlCeDataAdapter inserisce i dati in un oggetto DataSet, vengono create le tabelle e le colonne necessarie per i dati restituiti, se non già esistenti. Le informazioni sulla chiave primaria non saranno incluse nello schema creato in maniera implicita a meno che la proprietà MissingSchemaAction non sia impostata su AddWithKey. È possibile inoltre fare in modo che l'oggetto SqlCeDataAdapter crei lo schema dell'oggetto DataSet, comprese le informazioni di chiave primaria, prima di inserire i dati mediante il metodo FillSchema. L'oggetto SqlCeDataAdapter contiene inoltre le proprietà SelectCommand, InsertCommand, DeleteCommand, UpdateCommand e TableMappings mediante le quali viene semplificato il caricamento e l'aggiornamento dei dati. Quando si crea un'istanza di SqlCeDataAdapter le proprietà vengono impostate sui valori iniziali. DataSet L'oggetto DataSet, che rappresenta una cache in memoria dei dati recuperati da un'origine dati, costituisce un componente fondamentale dell'architettura ADO.NET. L'oggetto DataSet è costituito da un insieme di oggetti DataTable che è possibile porre in relazione tra loro mediante oggetti DataRelation. È inoltre possibile applicare l'integrità dei dati nell'oggetto DataSet utilizzando gli oggetti UniqueConstraint e ForeignKeyConstraint. Mentre gli oggetti DataTable contengono i dati, l'insieme DataRelationCollection consente di spostarsi all'interno della gerarchia delle tabelle. Le tabelle sono contenute in un insieme DataTableCollection cui si accede tramite la proprietà Tables. Quando si accede agli oggetti DataTable, è opportuno ricordare che tali oggetti prevedono la distinzione tra maiuscole e minuscole in modo condizionale. Se ad esempio un oggetto DataTable viene denominato "studenti" e un altro viene denominato "Studenti", alla stringa utilizzata per eseguire la ricerca di una delle tabelle verrà applicata la distinzione tra maiuscole e -44- Tesina D’esame - A.s. 2004-05 Crescenzo Francesco Mori Filippo Il Registro Elettronico minuscole. Se tuttavia esiste soltanto "studenti" e non "Studenti", alla stringa di ricerca non verrà applicata alcuna distinzione tra maiuscole e minuscole. In una tipica implementazione per creare e aggiornare un oggetto DataSet e per aggiornare i dati originali, le principali operazioni da svolgere sono le seguenti: 1. Generazione e immissione nel DataSet di un oggetto DataTable di dati provenienti da un'origine dati mediante DataAdapter. 2. Modifica dei dati nel DataTable mediante aggiunta, aggiornamento o eliminazione degli oggetti DataRow. 3. Chiamata al metodo Update dell'oggetto DataAdapter. Classi Microsoft.WindowsCE.Forms: Componente InputPanel .NET Compact Framework include il componente Microsoft.WindowsCE.Forms.InputPanel, mediante il quale viene controllato a livello di codice il pannello SIP (Soft Input Panel) disponibile sui Pocket PC e su altri dispositivi che eseguono Windows CE .NET. La programmazione del SIP è necessaria, ad esempio, per riposizionare o ridimensionare i controlli sul form quando il SIP è abilitato o disabilitato. Quando si crea un'applicazione basata su Windows destinata alla piattaforma Pocket PC, un componente MainMenu viene automaticamente aggiunto da Visual Studio .NET al file Form1 nel progetto. Il form contiene quindi la barra di menu inferiore con l'icona SIP. Non è necessario programmare il SIP per utilizzarlo, è sufficiente toccarne l'icona per attivarne o disattivarne la visualizzazione. Per programmare il SIP, trascinare il componente InputPanel dalla Casella degli strumenti al form. Struttura Message Classe MessageWindow -45- Tesina D’esame - A.s. 2004-05 Crescenzo Francesco Mori Filippo Il Registro Elettronico Bibliografia In questa pagina citiamo i siti e i libri che sono risultati utili per la risoluzione di alcuni dei nostri dubbi e al completamento del nostro progetto. Libri: Rivista “ioProgrammo” del Giugno 2003 Questa rivista è stata utile perché ci ha introdotto alla programmazione su palmare. Siti Internet: ww.microsoft.com/library/ITA/dv_evtuv/html/etconnectcompactframewo rk.asp Per saperne di più sulla piattaforma.Net Compact Framework http://www.microsoft.com/sql/ce/downloads/ce20.asp Da questo sito è possibile scaricare SQL Server CE 2.0 www.itportal.it/iop70/pocket.zip E' un listato che permette di creare una pubblicazione di DataBase da SQL Server sul palmare. http://www.ondotnet.com/lpt/a/3085 In questo sito viene spiegato passo per passo come fare per poter creare una connessione tra l’applicazione e il database (su palmare) http://msdn.microsoft.com/library/ITA/dv_evtuv/tml/etconwalkthroughc reatingsqlservercr.asp Procedura dettagliata di utilizzo di database SQL Server CE http://msdn.microsoft.com/library/ita/default.asp?url=/library/ITA/dv_e vtuv/html/etconwalkthroughcreatingsqlservercedatabase.asp Da questo sito è abbiamo iniziato la nostra “avventura” per capire il funzionamento di un database su palmare -46- Tesina D’esame - A.s. 2004-05 Crescenzo Francesco Mori Filippo Il Registro Elettronico www. palmari.html.it/guide.htm Da questo sito è possibile avere chiarimenti riguardo i diversi tipi di palmari http://forum.html.it/forum/ Questo è il forum di html.it, qui una intera comunità di esperti programmatori ci ha aiutato a risolvere tutti i problemi inerenti al linguaggio c#, alla programmazione su palmare e alla gestione di database. -47-