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:

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:

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

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:

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:

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:

  1. 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)
  2. Cliccare col tasto destro del mouse in questa scheda e scegliere il menu scegli elementi
  3. 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:

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:

  1. nella colonna di sinistra, cliccare con il tasto destro del mouse sul nome del server quindi su proprietà
  2. nella form che appare cliccare sulla voce Protezione e controllare che le impostazioni riproducano quelle dell'immagine successiva
  3. Confermare
  4. nella colonna di sinistra, cliccare sul + di Protezione, sul + di Account di accesso
  5. 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
  6. Confermare
  7. 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.