Le avventure in VB.Net di un principiante ex-VB6 - 1
a cura di Oscar Zanin e Diego Cattaruzza (requisiti: Visual Basic Express e SqlServer Express)Premessa
E' ormai passato molto tempo dall'uscita di Visual Studio .NET. Ciò nonostante sono tantissimi i programmatori che si avvicinano solo adesso al mondo NET, provenienti dal VB6 (come me) o neofiti.
Questi ultimi sono forse avvantaggiati rispetto a chi ha lavorato precedentemente con il VB6. Non si portano infatti dietro un modo di intendere la programmazione radicalmente diverso da quello che per anni li ha assistiti. Si evitano tanti ... "questa cosa era così semplice, possibile che adesso sia diventata tremendamente complicata?", "ma il mio indice dei controlli dov'è?", "il Recordset, dov'è il mio Recordset?", ecc.Tutti, all'inizio, cercano dei tutorial per mettersi nelle condizioni di sviluppare applicazioni basate su dati ben strutturate e funzionanti.
Ovviamente, ogni persona avveduta non può prescindere dall'acquistare e leggere dei buoni testi. Io, per esempio, mi sono comprato "VB 2005 Il linguaggio e il Framework" di Balena e il fantastico "ADO.NET 2.0" di Sceppa.
Ciò nonostante la teoria è una cosa e la pratica un'altra.Tutti noi principianti cerchiamo qualcosa di più immediato, di più vicino a quello che dobbiamo realizzare. Soluzioni a problemi anche banali ma che un programmatore si trova a dovere affrontare giornalmente.
Ecco, diciamolo: sarebbe bello un esempio dal quale prendere spunto per poi studiarselo e personalizzarselo.
In giro si trova poco o niente. O meglio... si trova tanto ma "spezzettato". Un po' di questo, un po' di quello, da fare poi convivere.
Ho passato tante ore a cercare su Google soluzioni ai miei interrogativi. Ho posto domande a chi è più esperto di me. Ho letto gli articoli che hanno pubblicato. Giornalmente leggo le domande e le risposte dei Forum.
Così facendo, piano piano, con tanta fatica e grazie all'aiuto fondamentale di un amico: Stefano, disponibile a farmi un corso di apprendimento di VB.NET, sono riuscito ad acquisire le basi per potere realizzare un applicativo.Ho molto apprezzato l'aiuto che più o meno consapevolmente mi è stato dato e pertanto ho deciso di fare anche io, nel mio piccolo, qualcosa.
Ho quindi contattato Diego e gli ho proposto di scrivere una serie di articoli a quattro mani, dove, in una prima fase, un principiante come me spiega il codice che ha scritto, il modo in cui ha operato, perché lo ha fatto e le difficoltà che ha incontrato, fino ad arrivare al completamento di una porzione di applicazione funzionante.Si badi bene che non intendo insegnare niente a nessuno. Espongo solo la mia esperienza.
In una seconda fase, un programmatore esperto come Diego prende in esame il lavoro svolto e lo analizza, commentandolo ed eventualmente migliorandolo (o stravolgendolo se necessario, anche se spero non si arrivi a tanto ;o)).
L'idea è stata recepita positivamente da Diego e pertanto eccoci qui.
Introduzione
Io sono uno di quei programmatori pazzi che cercano di avere il controllo assoluto del codice scritto e della sua logica di funzionamento.
Pertanto dopo un primo approccio, dettato dalla lettura del libro di Sceppa, nel quale ho sfruttato i vari DataSet tipizzati, wizard per la connessione ai database, BindingSource e BindingNavigator, ho optato per una soluzione "fai da te".
Del resto lo stesso Sceppa, nel capitolo 13, esponendo i pro e i contro, descrive un approccio di questo tipo.
Niente di preconfezionato quindi. Qualcuno mi potrà obiettare che così facendo si vanno a perdere i vantaggi che la piattaforma NET ci offre. Vero, ma, come suggerisce lo stesso Sceppa, se in seguito vuoi mettere mano a quello che ha implementato il wizard e non sei un programmatore esperto, ti trovi doppiamente in difficoltà.
E poi ... imparare per imparare, perché non cercare fin dall'inizio di fare qualcosa di complicato (per un principiante naturalmente) che al tempo stesso però ci dia modo di apprendere delle nozioni che difficilmente l'uso dei wizard ci permetterebbe di acquisire?
Spero che Diego sia d'accordo con me su questo. Altrimenti perché avrebbe scritto "Guarda! Senza mani!" con Sabrina? ;o)[Diego] Naturalmente sono d'accordo. Questo inciso introduce anche la forma dei miei interventi, che inizieranno, appunto, con il mio nome tra parentesi quadre.
A proposito di "Guarda! Senza mani!". Come avevo premesso, ho letto tanti articoli e quant'altro scritto da programmatori esperti e di conseguenza ho anche attinto dai suddetti.
Quindi non stupitevi di vedere classi identiche o quasi a quelle sviluppate da altri. Non lo considero un furto o una copiatura. L'intento di chi scrive un articolo credo sia proprio quello di offrire soluzioni al lettore. Ovviamente è fondamentale non limitarsi ad un ‘copia e incolla’ del codice, sfruttando la classe come una scatola nera, a tutti gli effetti, alla quale passo dei parametri e mi restituisce un risultato.Gli strumenti con i quali sto lavorando sono:
- Visual Basic 2008
- SQL Server Express 2005
- Microsoft SQL Server Management Studio Express ver. 9
tutti in italiano. Chi vuole cimentarsi a riprodurre i contenuti degli articoli dovrebbe munirsi di quanto elencato sopra.
C'è da dire che anche l'uso di Visual Basic 2005 Express non dovrebbe comportare alcun tipo di problema visto che avevo iniziato a sviluppare tutto con esso e non ho fatto uso di classi specifiche del Framework 3.5, tipo LINQ.Intenti
In questa serie di articoli, mi propongo di illustrare:
- - installazione Visual Studio
- - installazione SQL Express, Management e configurazione
- - creazione con il Management di un database
- - creazione nuova applicazione
- - creazione classe ingresso applicazione
- - gestione criptata in un file proprietario contenente i parametri di accesso al database
- - utilizzo controlli di terze parti (io ho usato i Krypton)
- - form Main
- - form di impostazione dei parametri di accesso al database
- - scrittura di una serie di classi di utilità (gestione eccezioni, stringhe, validazione controlli, ecc.)
- - form per la gestione dei dati di una tabella database solo Master
- - form per la gestione dei dati di più tabelle database in Master-Dettails
- - classi per la gestione dei dati
- - gestione Reports con Crystal Reports
- - politiche di Deploy (cioè una volta che ho sviluppato il programma come lo porto dal cliente ?)
- - installazione Applicativo (FrameWork + Programma)
- - installazione Database (SQL Express + Management Studio + DB Programma)
- - collegamento Database - Applicazione
Cenni sull'installazione di Visual Studio
Al momento della stesura dell'articolo la versione Express di Visual Studio 2008 SP1 la potete trovare qui: http://www.microsoft.com/Express/Download/ .
Come riportato nella pagina di download, se volete la guida MSDN Express Library, va scaricata a parte partendo dall'apposito link.Dalla stessa pagina potrete anche scaricare la versione Express di SQL Server 2008 con il relativo Management per la gestione dei database.
Al termine dell'installazione ritengo che valga la pena modificare o arricchire alcune impostazioni di default.
Scelto il menu Strumenti/Opzioni, spuntare la casella Mostra tutte le impostazioni, espandere Progetti e soluzioni
- Compila ed esegui
nel relativo elenco a tendina scegliere di richiedere il salvataggio prima della compilazione.
Se non lo fate, durante lo sviluppo, vi troverete nella scomoda situazione in cui ad ogni modifica ed avvio dell'applicazione corrisponderà un salvataggio del codice. Ecco... a me non piace proprio: se volessi fare qualche prova senza salvare, per poi potere tornare ad una situazione pregressa nel caso non mi vada bene, avrei problemi a ricordarmi tutte le modifiche da ripristinare. Meglio ricordarsi di salvare quando si vuole stabilire un punto sicuro dello sviluppo.- Impostazioni predefinite di VB
impostare Option Strict a On.
Questa impostazione a mio ([Diego] nostro) avviso è fondamentale. Riporto dal sito MSDN: "Nella scrittura di codice indipendente dai tipi è buona norma utilizzare l'istruzione Option Strict. Se viene impostato Option Strict On, Visual Basic esegue automaticamente conversioni indipendenti dai tipi. Se, ad esempio, si cerca di sommare una variabile Integer a una variabile Double e di assegnare il valore a una variabile Double, l'operazione viene eseguita normalmente, perché è possibile convertire un valore Integer in Double senza perdita di dati. Nel caso di conversioni non indipendenti dai tipi, d'altra parte, l'uso di Option Strict On genera un errore di compilazione. Se, ad esempio, si cerca di sommare una variabile Integer a una variabile Double e di assegnare il valore a una variabile Integer, viene generato un errore di compilazione, perché una variabile Double non può essere convertita in modo implicito nel tipo Integer. Se si imposta Option Strict Off, tuttavia, Visual Basic consente conversioni implicite verso un tipo di dati più piccolo, sebbene possano determinare una perdita imprevista di dati o di precisione. Per questo motivo si raccomanda di utilizzare Option Strict On durante la scrittura di codice di produzione."Scegliere, adesso, il menu Strumenti/Personalizza.
Mentre le opzioni di cui sopra sono raccomandate, le personalizzazioni che seguono sono solo proposte. A me piace avere immediatamente a disposizione i comandi seguenti:
- Barre degli strumenti
- spuntare Layout
- Comandi
- Debug
trascinare
- controllo immediato
- elimina tutti i punti di interruzione
- espressione di controllo
E' opportuno conoscere come usare-aggiungere a Visual Studio snippet, template e controlli di terze parti (anche sviluppati da noi).
Riporto dall'articolo "Visual Studio 2005 Snippet" di Sabrina Cosolo e Rudy Azzan: "si tratta di una porzione di codice, ma gli snippet non sono semplicemente dei repository di copia-e-incolla, perché nelle porzioni di codice di uno snippet, è possibile inserire una serie di placeholder (segnaposto), che ci permettono di evidenziare, per poi essere obbligati da Visual Studio a sostituire, i valori variabili necessari a rendere il nostro pezzo di codice perfettamente funzionante in base alla classe che stiamo costruendo." Una lettura del suddetto articolo può chiarire ulteriormente le idee. Io ad esempio uso quello creato da Diego per il costrutto Region. Con il costrutto #Region... #End Region è possibile organizzare logicamente porzioni di codice che svolgono operazioni correlate.
Aperto Visual Studio e un codice (a esempio quello di una form), premere CTRL-K e poi CTRL-B ([Diego] ve lo ricordate facilmente se pensate a Knowledge Base).
Appare la form di dialogo relativa agli snippet, che potete aggiungere, rimuovere, importare, cercare online. I 'vostri' snippet stanno nella cartella "My Code Snippet".
E' in questa cartella che dovete copiare gli snippet non forniti con Visual Studio.I file di Template (modelli di form o codice) vanno invece copiati:
- i template di progetto nella cartella ProjectTemplates creata durante l'installazione (nel mio computer con Vista per esempio sono in : C:\Users\Oscar\Documents\Visual Studio 2008\Templates\ProjectTemplates)
- i template di classe nella cartella ItemTemplates creata durante l'installazione (nel mio computer con Vista per esempio sono in : C:\Users\Oscar\Documents\Visual Studio 2008\Templates\ItemTemplates)
Come gli snippet anche i template ci permettono di sviluppare più velocemente e direi anche in modo più uniforme. Immaginate di creare una form di login che andrà bene per ogni applicativo che realizzerete. Invece di fare un copia e incolla da un progetto all'altro potrete comodamente trovarla nell'elenco degli elementi aggiungibili ad un progetto.
Come? Una volta sviluppata la form clicchiamo sulla voce di menu File, quindi su Esporta modello. Ci verrà chiesto se vogliamo creare un template di progetto o di singolo elemento. Supponiamo di avere scelto elemento. Nella fase successiva dobbiamo selezionare la form di login creata in precedenza. Proseguendo selezioneremo i riferimenti necessari al corretto funzionamento. Infine potremo: indicare il nome da assegnare al template, associare un'icona, scrivere una descrizione, impostare il percorso dove il modello verrà salvato e indicare a Visual Studio di importare automaticamente la nostra creazione.Per aggiungere controlli di terze parti o personalizzati:
- Cliccare col tasto destro del mouse nell'ultima scheda della casella dei controlli e scegliere il menu crea scheda (è opportuno fare le cose con un certo ordine) cui dare un nome adatto ('controlli terze parti', 'miei controlli', eccetera)
- Cliccare col tasto destro del mouse in questa scheda e scegliere il menu scegli elementi
- Selezionare dall'elenco i controlli da aggiungere.
C'è da dire che alcuni controlli di terze parti dispongono di un pacchetto di installazione che fa questa operazione automaticamente.
Cenni sull'installazione di SQL Server Express e relativo Management
Versione 2005
L'installazione della versione 2005, almeno nel mio caso, non ha comportato grossi problemi.Il Management in italiano per la versione 2005 deve essere scaricato separatamente e lo potete trovare qui: http://www.microsoft.com/downloads/details.aspx?familyid=c243a5ae-4bd1-4e3d-94b8-5a0f62bf7796&displaylang=it .
Microsoft SQL Server Management Studio Express (SSMSE) è uno strumento grafico gratuito e di facile utilizzo per la gestione di SQL Server 2005/2008 Express Edition e dei database con esso creati.Durante l'installazione del Management per la versione 2005 su Windows Vista si può incappare in un fastidioso errore contraddistinto dal codice 29506. L'errore appare grosso modo al termine dell'installazione. Purtroppo lo so per esperienza.
La soluzione al problema la potete trovare sul Blog di Alessandro Del Sole.
Se vi dovesse capitare seguite le indicazioni e vi sbarazzerete del problema.Terminate le due installazioni andate in "Gestione configurazione SQL Server" e, cliccando a sinistra su Servizi di SQL Server, verificate che siano in esecuzione sia SQL Server (SQLEXPRESS) che SQL Server Browser.
In Configurazione di rete SQL Server -> Protocolli per SQLEXPRESS attivare TCP/IP.
In Configurazione SQL Native -> Protocolli client attivare TCP/IP.Versione 2008
In questo caso ho avuto qualche problema di installazione in più. L'elenco dei requisiti di sistema e dei software necessari non è risultato esaustivo e questo mi ha creato delle complicazioni. Spero che la mia esperienza velocizzi le vostre installazioni.
Prima di lanciare l'installazione pertanto scaricate e installate:
- Windows Installer 4.5
- Windows PowerShell (previa installazione dell'ActiveX per il controllo della genuinità del software Microsoft)
- Visual Studio 2008 SP1 (contenente anche il FrameWork 3.5 SP1)
Vi raccomandiamo di fare attenzione alle versioni. Scaricate quelle della lingua corretta e per il sistema operativo corretto.
Tutti i suddetti pacchetti, a parte il FrameWork 3.5 SP1 che poi ho scoperto essere già compreso nel SP1 di Visual Studio, li ho dovuti scaricare e installare in corso d'opera.
Il Management nella versione 2008 è già compreso e viene installato assieme a SQL.
Primi passi da fare con Management Studio
Lanciamo il nostro SQL Server Management Studio. Apparirà una form di connessione al server e autenticazione.
Se tutto è andato a buon fine, nell'elenco a tendina Nome server dovremmo trovare il nostro server SQLEXPRESS preceduto dal nome del computer dove è stato installato: selezioniamolo.
Come tipo di autenticazione io ho scelto: Autenticazione di SQL Server e non quella di Windows.Qui si apre un piccolo capitolo. Se l'utente amministratore non viene proposto nell'elenco a tendina del Nome account di accesso, dobbiamo accedere con l'Autenticazione di Windows e seguire la seguente procedura per renderlo disponibile:
- nella colonna di sinistra, cliccare con il tasto destro del mouse sul nome del server quindi su proprietà
- nella form che appare cliccare sulla voce Protezione e controllare che le impostazioni riproducano quelle dell'immagine successiva
- Confermare
- nella colonna di sinistra, cliccare sul + di Protezione, sul + di Account di accesso
- cliccare con il tasto destro del mouse sull'account amministratore (generalmente sa - system administrator) e quindi su Proprietà. Controllare che le impostazioni riproducano quelle delle immagini successive
![]()
![]()
- Confermare
- Chiudere il Management. Aprirlo nuovamente ed autenticarsi con l'account amministratore e la relativa password.
Conclusione
Questo è un articolo di autopresentazione, di dichiarazione di intenti, di preparazione per iniziare questa avventura nel mondo di VB.Net.
Spero di avervi fatto venire abbastanza voglia per proseguire con il prossimo articolo della serie, in cui verranno esposte alcune utili informazioni circa i tipi di Sqlserver e si comincerà a creare il database di esempio.Note sull'autore
Oscar Zanin vive ad Arsago Seprio (Varese) ed è nato nel 1969. Dopo avere ottenuto il diploma in Telecomunicazioni ha scoperto la passione per la programmazione. Ha quindi frequentato un corso annuale per analisti programmatori presso un ENAIP di zona. Dopo alcune esperienze in Cobol come dipendente ha intrapreso la strada del Visual Basic (allora nella versione 4) e del lavoro autonomo che svolge tuttora. Sviluppa applicativi gestionali e fornisce assistenza hardware e software per aziende ed enti locali. I suoi hobby sono lo sport (visto e praticato) e la lettura di romanzi storici e fantasy.