39201 Letture

Sviluppiamo un'applicazione per la gestione degli assegni con Visual Basic 2005

Questa volta cominciamo dalla fine. Diversamente da quanto visto nei precedenti articoli dedicati alla programmazione con Visual Basic 2005, vi proponiamo sin da subito la versione finale di una semplice applicazione per la gestione degli assegni emessi.
Ovviamente il progetto è ampiamente migliorabile: si tratta comunque di un buon esempio per capire alcuni meccanismi legati alla programmazione con Visual Basic 2005.
Anche questa volta, la base dati impiegata è realizzata in Microsoft Access. E' comunque possibile giungere al medesimo risultato utilizzando altri DBMS, decisamente più performanti, come SQL Server 2005.

Come primo passo, prepariamo la base dati alla quale desideriamo collegarci dalla nostra applicazione Visual Basic 2005.
In questo caso, il database Access in formato .mdb è assai semplice. Lo schema relazionale è quello riportato in figura:


La tabella ove viene memorizzato l'archivio degli assegni emessi si chiama "Assegno". A ciascun assegno è possibile associare una banca, un beneficiario ed una causale. L'idea è quella di fornire all'utente la possibilità di impostare degli archivi di causali, beneficiari e banche di riferimento utilizzabili poi in fase di registrazione di ciascun assegno emesso.

Dopo aver avviato un nuovo progetto Visual Basic 2005, similmente a quanto già visto nelle precedenti puntate, si provvederà ad aggiungere un'origine dati selezionando il database Access appena preparato.
Nella finestra Origini dati di Visual Basic 2005 si otterrà l'elenco delle quattro tabelle che compongono il database.


La nostra applicazione si compone di tre form:
- frmPrincipale. La finestra principale che si presenterà ad ogni avvio dell'applicazione: da qui l'utente potrà aggiungere in archivio nuovi assegni, modificare quelli già presenti, cancellarli, associare banche, causali e beneficiari collegati.
- frmDatiCorrelati. Qui l'utente potrà specificare tutti i dati relativi a banche, causali e beneficiari.
- frmInterrogazioni. In questa finestra l'utente potrà ricercare tutti gli assegni emessi per uno specifico beneficiario.

Selezioniamo il form frmPrincipale dalla finestra Esplora soluzioni di Visual Basic 2005 quindi facciamo doppio clic su di esso (oppure clicchiamo sul pulsante Visualizza finestra di progettazione).
Portiamoci nella finestra Origini dati, agiamo sul menù a tendina proposto in corrispondenza della tabella "Assegno" ed assicuriamoci che sia selezionata la voce Datagridview. Trasciniamo quindi la tabella "Assegno" sul form frmPrincipale.


Facendo clic sulla freccia posizionata sul Datagridview in alto a destra quindi selezionando la voce Modifica colonne, si accederà alle varie opzioni che consentono di intervenire sul layout della griglia. Come già illustrato nelle precedenti puntate, utilizziamo i pulsanti freccia per impostare l'ordine con cui debbono compare le varie colonne ed i campi Width, Visible e ReadOnly per indicare, per ogni singola colonna, la sua dimensione in pixel, se questa debba essere visualizzata o meno, se debba avere l'attributo di sola lettura.

Nelle colonne Beneficiario, Causale e Banca, vengono mostrati gli ID - letti dal database Access - facenti riferimento alle rispettive tabelle correlate. Ma come è possibile visualizzare il nome del beneficiario, quello dell'istituto di credito e la causale in forma descrittiva al posto del semplice ID?
E' sufficiente, per le colonne Beneficiario, Causale e Banca selezionare l'opzione DataGridViewComboBoxColumn in corrispondenza della voce ColumnType (sezione Progettazione).
In questo modo, dalla sezione Dati, si potrà creare una sorta di associazione uno-a-uno tra l'ID ed il corrispondente valore nelle tabelle Beneficiario, Banca e Causale del database Access.
L'utente, agendo sul "combo box", potrà selezionare, di volta in volta, il beneficiario, la banca e la causale d'interesse.

In particolare, ValueMember consente di specificare il campo da cui ottenere i valori che corrispondono a ciascun elemento che andrà a comporre il menù a tendina ("combo box") mentre, viceversa, DisplayMember permette di selezionare il campo dal quale verrà prelevato il valore da mostrare all'utente.

Per quanto riguarda il codice dell'applicazione, si noterà come Visual Basic 2005 abbia provveduto ad aggiungere - nell'evento Load del form quanto segue:

Private Sub frmPrincipale_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     'TODO: questa riga di codice carica i dati nella tabella 'AssegniDataSet.Bancà. È possibile spostarla o rimuoverla se necessario.
     Me.BancaTableAdapter.Fill(Me.AssegniDataSet.Banca)
     'TODO: questa riga di codice carica i dati nella tabella 'AssegniDataSet.Causalè. È possibile spostarla o rimuoverla se necessario.
     Me.CausaleTableAdapter.Fill(Me.AssegniDataSet.Causale)
     'TODO: questa riga di codice carica i dati nella tabella 'AssegniDataSet.Beneficiariò. È possibile spostarla o rimuoverla se necessario.
     Me.BeneficiarioTableAdapter.Fill(Me.AssegniDataSet.Beneficiario)
     'TODO: questa riga di codice carica i dati nella tabella 'AssegniDataSet.Assegnò. È possibile spostarla o rimuoverla se necessario.
     Me.AssegnoTableAdapter.Fill(Me.AssegniDataSet.Assegno)
End Sub



Questa parte del codice non necessita di modifiche e consente il caricamento dal database dei dati memorizzati nelle varie tabelle.

All'interno dell'evento inseriamo invece la riga di codice che segue:

Private Sub frmPrincipale_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    AssegnoBindingNavigatorSaveItem_Click(sender, e)
End Sub


Ogni volta che la nostra applicazione sarà chiusa, le modifiche effettuate verranno così salvate nel database.

Aggiungiamo ora un nuovo form, utilizzando le modalità già ampiamente illustrate in precedenza, e denominiamolo frmDatiCorrelati. Qui l'utente potrà allestire e modificare in qualsiasi momento gli archivi personali relativi a beneficiari, causali ed istituti di credito. Gli elementi inseriti nel database attraverso questo form, potranno poi essere utilizzato nella finestra principale, per l'inserimento in archivio di un nuovo assegno. Ricorriamo ad un controllo TabControl (sezione "Contenitori" della Casella degli strumenti di Visual Basic 2005) per separare i tre elenchi ("Elenco beneficiari", "Elenco causali", "Banche"). Per aggiungere una nuova scheda, è sufficiente cliccare con il tasto destro del mouse sul controllo appena inserito nel form e cliccare sulla voce Aggiungi scheda. La proprietà Text di ogni singola scheda consente, ovviamente, di modificarne l'etichetta visualizzata.

Al solito, trasciniamo - dalla finestra Origini dati di Visual Basic, la tabella "Beneficiario" sul form frmDatiCorrelati, nella scheda "Elenco beneficiari".
Ripetiamo l'operazione, dopo aver selezionato le schede "Elenco causali" e "Banche" del TabControl, per le tabelle "Causale" e "Banca". Dal menù a tendina che compare cliccando sulle varie tabelle elencate nella finestra Origini dati, assicuriamoci sempre che sia selezionata la voce Datagridview.
Provvediamo, quindi, a modificare il "look" delle tre tabelle appena inserite cliccando con il tasto destro del mouse su ciascuna di esse e facendo riferimento alla voce Proprietà. Ricordiamo che selezionando la colonna più a destra, quindi scegliendo l'opzione Fill in corrispondenza della voce AutoSizeMode, è possibile fare in modo che la larghezza della stessa sia adattata a quella del DataGridView.


Nelle tre schede del TabControl inseriamo due pulsanti, subito sotto ciascun DataGridView. Il primo permetterà l'aggiunta di un nuovo record, il secondo la cancellazione.
Il codice da utilizzare per il pulsante di aggiunta, nel caso della scheda relativi ai beneficiari, è Me.BeneficiarioBindingSource.AddNew(), per l'eliminazione Me.BeneficiarioBindingSource.RemoveCurrent().

Una subroutine che chiameremo salva(), ogniqualvolta invocata, provvederà invece a salvare su database tutte le modifiche apportate alle tre tabelle.
Tale subroutine dovrà essere richiamata non appena si passa da una scheda ad un'altra ("Elenco beneficiari", "Elenco causali", "Banche") ed all'atto della chiusura del form:

Private Sub TabControl1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TabControl1.SelectedIndexChanged
     salva()
End Sub


  1. Avatar
    Marcus80
    10/03/2010 23.58.34
    avrei bisogno di una guida ben dettagliata per mostrarmi la metodologia di inserimento modifica e eliminazione dati da un' applicaziona windows creata con visual basic express edition 2005 grazie. P.S. sono alle prime armi..... :mrgreen:
  2. Avatar
    Pico81
    23/01/2009 22.03.09
    Guida ottima soprattutto per chi come me parte da zero.
    Avrei una domanda, ho provato a realizzare quest'applicazione e ho notato una cosa a cui non ho trovato risposta.
    Se compilo il progetto contenuto nel file zip allegato, quando inserisco un nuovo record nel datagrid, l'ID viene incrementato di uno
    es. record precedente 15, nuovo record 16,
    mentre realizzando il progetto ex-novo, ho visto che nel "mio" programma, quando inserisco un nuovo record, questo viene segnato come un numero negativo, che poi diventa positivo quando salvo
    es. record precedente 15, nuovo record -1, ma quando salvo diventa 16.
    Qualcuno mi spiegherebbe perchè succede ciò?

    Grazie
Sviluppiamo un'applicazione per la gestione degli assegni con Visual Basic 2005 - IlSoftware.it