![]() |
|
Homepage |
Visual Basic |
Guida a Visual Basic 6 | |
Guida a Visual Basic 6
Concessa in esclusiva a Mr Webmaster - E' vietata la redistribuzione senza esplicito consenso
1. Introduzione a Visual Basic 6 Visual Basic è un linguaggio di programmazione WUI (Windows User Interface) di casa Microsoft, abbastanza potente e molto semplice nella sintassi e nelle funzionalità, adatto quindi sia al neofita che allo sviluppatore professionista. Visual Basic, da ora in po semplicemente VB, nasce dal vecchio Basic, sempre di casa Microsoft, come versione avanzata con interfaccia visuale (da qui il suo nome attuale); il vecchio Basic, infatti, nasce e muore in ambiente DOS. VB è attualmente e definitivamente arrivato alla versione 6.0: la versione successiva, in uso da già qualche anno, fa parte della piattaforma .NET e pur conservando la maggior parte delle caratteristiche, può definirsi un linguaggio a se stante: VB è quindi differente da VB.NET. VB è un tipo di programmazione detta event driven, ovvero basata sugli eventi. Vedremo in seguito cosa vuol dire questa affermazione. VB è acquistabile col pacchetto Microsoft Visual Studio 6.0 oppure separatamente. Il prezzo varia spesso e con l'avvento di .NET è decisamente calato, ma non è certo accessibile a chi è solo un curioso, bensì a coloro che intendono fare della programmazione la propria professione. L'installazione del pacchetto completo o del singolo software è davvero semplice, è sufficiente seguire le istruzioni del Wizard di installazione, inserire i dati richiesti, il numero di serie del prodotto (in genere si trova all'interno della copertina del CD acquistato oppure su di un documento interno alla custodia) e lasciare che il Wizard faccia il resto. Al termine riavviare il sistema anche se non richiesto. Nel corso della guida impareremo come si compone l'ambiente di sviluppo, tratteremo le componenti principali del prodotto e della sintassi, impareremo a programmare ad eventi con l'utilizzo degli oggetti (Rif. capitoli successivi), impareremo a manipolare file di testo, XML e database Microsoft Access (preferibilmente versione 2000). Buona lettura! 2. Interfaccia e ambiente di sviluppo Una volta eseguita ed andata a buon fine l'installazione, per accedere all'ambiente di sviluppo di VB partire dal menu Start / Programmi / Microsoft Visual Studio 6.0 / Microsoft Visual Basic 6.0 la prima richiesta fatta da VB è di scegliere il tipo di progetto tramite la finestra documentata nell'immagine seguente: ![]() La voce selezionata per default è EXE standard ovvero un classico progetto VB. Non preoccupatevi delle altre voci, si tratta in un modo o nell'altro di componenti avanzati che tratteremo in una versione avanzata della guida. Confermate quindi, cliccando il tasto Apri la scelta di un nuovo EXE standard. L'interfaccia completa del programma, documentata con una serie di commenti aggiunti in rosso, è visualizzabile cliccando questo link. Probabilmente non tutte le definizione degli elementi dell'interfaccia saranno chiare a tutti immediatamente, ma prego i lettori di non preoccuparsi perchè ogni nozione sarà esaurita prima nel corso della guida. 3. Le Form e gli oggetti di un modulo VB Le Form sono gli elementi madre di un programma VB, o in generale di qualsiasi software di sviluppo e linguaggio di programmazione WUI. Si tratta di finestre molto comuni, classiche di Windows: un esempio è la finestra delle proprietà di Internet Explorer, oppure delle proprietà del Desktop, ecc... Su di una Form vengono posizionati i vari elementi per la manipolazione dei dati o per la realizzazione di applicazioni non basate su di un database. In questo paragrafo vedremo i principali oggetti (che chiameremo prevalentemente controlli) per la realizzazione di un modulo VB. Torniamo un attimo all'interfaccia di VB e guardiamo sulla sinistra dell'immagine la barra Generale in cui sono contenuti una serie di icone; da qui possiamo, con un doppio click o facendo il drag' n' drop (trascinamento) dell'icona sulla Form stessa, inserire controlli da manipolare via codice. Facciamo un semplice esempio che vede coinvolti i tre controlli più utilizzati in VB, ovvero la TextBox (casella di testo per l'inserimento di dati), la Label (semplice area in cui inserire descrizioni) ed il CommandButton (bottone di comando per l'esecuzione di una routine o di uno script VB). Si crei quindi un nuovo progetto EXE standard; dalla Finestra delle Proprietà sulla destra dell'IDE di sviluppo si vada a modificare la proprietà Name della Form e la si chiami frmPrimoProg. Prima di proseguire tengo a sottolineare la modalità di assegnazione dei nomi ai controlli delle Form ed alle Form stesse: si utilizza un suffisso in minuscolo e poi il nome da assegnare con la maiuscola iniziale; prego inoltre di assegnare alle Form ed ai progetti nomi significativi, per due buoni motivi:
![]() Quelli che vedete cerchiati in rosso nell'immagine seguente sono rispettivamente i controlli per l'inserimento di una Label, di una TextBox e di un CommandButton. Inserite sulla Form uno per ognuno dei controlli descritti fino ad ottenere il seguente effetto in fase di sviluppo: ![]() Bisogna ammettere che cosi è piuttosto bruttina... va modificata un pochino! Cliccando una singola volta su un controllo sulla Form compaiono attorno al controllo i puntini blu di selezione ed è possibile modificarne le dimensioni. Inoltre si assegnino, dalla Finestra delle Proprietà, i seguenti nomi e le seguenti diciture testuali ai tre controlli:
![]() Direi che va già meglio :-) Passiamo ad un primo esempio di codice ed anche se farò riferimento ad elementi del linguaggio non ancora spiegati, ho la presunzione che anche il lettore meno avvezzo non avrà difficoltà a capire. Eccoci finalmente di fronte alla spiegazione di programmazione event driven, ovvero basata (letteralmente guidata) sugli eventi. Al click sul CommandButton verrà eseguito uno script VB: il click è l'evento! Si faccia doppio click sul CommandButton e si accederà al codice del bottone di comando, già composto dal seguente codice: Private Sub cmdEsegui_Click() End SubIn VB questa è una Sub che tratteremo più avanti. All'interno di questa Sub, che comunque è l'elemento madre di un programma o di una singola fase di un programma VB, andremo ad inserire il codice che verrà eseguito al click sul CommadButton:
' Questo è un commento!
' VB non esegue tutto ciò che è preceduto
' dal singolo apice ma lo tratta come un
' promemoria per lo sviluppatore
Private Sub cmdEsegui_Click()
If txtTesto.Text = "" Then
lblRisultato.Caption = "Inserisci un testo"
Else
lblRisultato.Caption = txtTesto.Text
End If
End Sub
Anche se non abbiamo ancora affrontato le istruzioni condizionali credo sia intuibile il fatto che il programma ragionerà cosi: se la casella di testo contiene un valore vuoto allora scrivi nella Label un messaggio che indichi all'utente di inserire un testo, oppure scrivi il contenuto della casella di teso.Per avviare il programma si faccia click sul pulsante Play cerchiato in rosso nell'interfaccia di VB, oppure si prema il tasto F5 sulla tastiera. Nei prossimi capitoli abbandoniamo un attimo le componenti visuali di VB per dedicarci al codice, alla sintassi ed agli elementi del linguaggio. 4. Variabili, costanti, tipi di dato e operatori Prima di passare alle fasi più divertenti del linguaggio è necessario dedicare un capitolo all'apprendimento delle componenti base del linguaggio. Le variabili sono delle aree di memoria virtuali che il programma va a occupare nel sistema operativo che lo esegue; la peculiarità delle variabili è che sono valori suscettibili a cambiamenti a seconda di condizioni, eventi, azioni degli utenti, ecc... Per dichiarare una variabile si usa la parola chiave Dim. Le costanti sono simili alle variabili, con la differenza che, come il termine lascia intuire, non sono aree di memorie suscettibili dinamicamente a cambiamenti e si utilizza, per la dichiarazione, la parola chiave Const. Se le variabili e le costanti sono praticamente la stessa cosa, con la differenza che le variabili sono suscettibili a cambiamenti e le costanti no, perchè si utilizza una sintassi differente per la dichiarazione? La risposta è semplice: Const occupa un'area di memoria inferiore rispetto a Dim, quindi si evita di sovraccaricare inutilmente il sistema. I tipi di dato sono elementi di VB che consentono di definire a priori se una variabile è di tipo numerico, stringa, ecc... Non è obbligatorio tipizzare una variabile, ma è consigliabile per il motivo che il programma non deve andare a sovraccaricare il buffer dell'interprete per stabilire come trattare un valore, sapendolo a priori grazie alla tipizzazione. Gli operatori sono simboli che vengono utilizzati per effettuare uguaglianze, operazioni matematiche, implementare condizioni avanzate, ecc... Facciamo un esempio di dichiarazione e tipizzazione di una variabile. Si crei un nuovo progetto EXE standard e si acceda al codice senza passare per il doppio click su un elemento della Form o sulla Form stessa, ma semplicemente dal menu Visualizza / Codicee si inserisca il seguente codice: Option Explicit Dim testo As String Dim numero As Integerin questo modo abbiamo le variabili testo di tipo stringa e numero di tipo numerico intero. La clausola Option Explicit serve a VB a sovraccaricare meno il buffer dell'interprete del programma in fase di localizzazione delle variabili. Si inserisca un CommandButton sulla Form e gli si assegni la proprietà Name cmdVariabili (a voi la scelta di modificarne la Caption, non importa, è solo un esempio) ed al doppio click si inserisca il seguente codice:
Private Sub cmdVariabili_Click()
testo = "Hello, World!"
numero = 5
MsgBox testo, vbOKOnly, "Messaggio da VB"
MsgBox numero, vbOKOnly, "Altro messaggio da VB"
End Sub
Si avvii il programma premendo F5 ed al click sul CommandButton verranno lanciate due finestre di messaggio consecutive: la prima stampa a video la variabile testo e la seconda stampa a video la variabile numero.Questo semplice esempio per sottolineare un aspetto molto importante: una variabile di tipo String va valorizzata tra doppi apici mentre una variabile di tipo Integer va valorizzata, solo con numeri, senza apici. Si cancellino le variabili testo e numero dalla parte generale del codice e si inseriscano le seguenti: Option Explicit Dim a As String Dim b As String Dim c As StringSi cancelli il codice appena proposto dalla Sub cmdVariabili_Click() e si inserisca il seguente:
Private Sub cmdVariabili_Click()
a = "10"
b = "5"
c = a + b
Debug.Print c
End Sub
Debug.Print lancia il risultato dell'operazione nella Finestra Immediata dell'ambiente di sviluppo che compare al volo all'esecuzione dello script. Abbiamo messo in pratica un esempio errato di calcolatrice, dato la somma delle variabili sarà 105 e non 15... come fare? Usiamo il tipo Integer!Si modifichi la parte generale del codice come segue: Option Explicit Dim a As Integer Dim b As Integer Dim c As Integere la parte relativa alla Sub come segue:
Private Sub cmdVariabili_Click()
a = 10
b = 5
c = a + b
Debug.Print c
End Sub
Ora è tutto ok!Concludiamo questo capitolo con una panoramica sugli operatori.
In un linguaggio di programmazione esistono strutture di controllo come le istruzioni condizionali che servono, come visto nei capitoli precedenti, a stabilire per l'appunto condizioni per scatenare una routine o un'altra a seconda del risultato della condizione. VB utilizza il costrutto If - Then - Else per effettuare controlli. La sintassi base è la seguente:
If condizione Then
espressione
Else
espressione alternativa
End If
Vediamo un esempio. Si crei un nuovo EXE standard e si assegni alla Form il Name frmIstrCond; si inserisca un CommandButton e lo si chiami cmdIstrCond.Nella parte generale si inserisca il seguente codice: Option Explicit Dim a As Integer Dim b As Integere nella Sub il seguente codice:
Private Sub cmdIstrCond_Click()
a = 10
b = 10
If a = b Then
Debug.Print "A è uguale a B"
Else
Debug.Print "A è diverso da B"
End If
End Sub
Essendo A e B impostate entrambe a 10, il risultato sarà A è uguale a B.VB, come tutti i linguaggi di programmazione possiede una clausola per ampliare il raggio condizionale, ovvero ElseIf. Facciamo un esempio chiarificatore. Si inserisca nella Sub il seguente codce:
Private Sub cmdIstrCond_Click()
a = 10
If a = 10 Then
Debug.Print "A è uguale a 10"
ElseIf a < 10 Then
Debug.Print "A è minore di"
Else
Debug.Print "A è diverso da 10"
End If
End Sub
Il risultato sarà A è uguale a 10.Esiste un altro costrutto per la generazione di condizioni, il Select Case. La sintassi base è la seguente:
Select Case condizione
Case 0: espressione 0
Case 1: espressione 1
Case 2: espressione 2
Case Else
tutti gli altri casi
End Select
Vedremo dei casi di studio col Select Case nei capitoli successivi.6. Istruzioni di iterazione Le istruzioni di iterazione fanno parte delle istruzioni di controllo dei linguaggi di programmazione e servono, come il nome lascia ad intendere, a ripetere una fase del programma N volte finchè non si raggiunge la condizione stabilita dallo sviluppatore in modo statico o dinamico. Fanno parte delle istruzioni di iterazione, detti anche cicli, i costrutti
Il ciclo For - Next ripete un'istruzione sulla base di una variabile di tipo Integer che parte da un valore predefinito, in genere zero (0) e si perpetua fino ad un valore maggiore, ad esempio nove (9) ripetendo quindi il ciclo da 0 a 9 per un totale di 10 ripetizioni. La sintassi base è la seguente:
For inizio To fine
espressione da ripetere N volte
Next
Vediamo un esempio concreto. Si crei un nuovo EXE standard e si inserisca sulla form un bottone di comando a cui assegnare il nome cmdFor ed una Label di nome lblFor. Consiglio di ingrandire un po la Label in altezza rispetto alle sue dimensioni di default, in modo da visualizzare correttamente il risultato.Nella parte generale del codice inserire il seguente codice: Option Explicit Dim i As IntegerNella Sub, invece, inserire il seguente codice:
Private Sub cmdFor_Click()
i = 0
For i = 0 To 9
lblFor.Caption = lblFor.Caption & i & vbCrLf
Next
End Sub
Facciamo la conoscenza con l'elemento vbCrLf che rappresenta il ritorno a capo in VB. Se avessimo ciclato solo
lblFor.Caption = lblFor.Caption & iavremmo avuto come risultato 0123456789con l'utilizzo di vbCrLf avremo invece 0 1 2 3 4 5 6 7 8 9Il ciclo For Each - Next si differenzia da For - Next per il motivo che il primo ricerca ogni occorrenza di un elemento in un elemento madre. La sintassi base è la seguente:
For Each elemento In elementi
espressione da ripetere N volte
Next elemento
Tratteremo questo ciclo più avanti nel corso della guida appena spiegati altri elementi, senza dei quali un esempio non avrebbe senso e rischierebbe, addirittura, di confondere le idee al lettore.Il ciclo While esegue un'istruzione (o un'espressione) fin quando una condizione è vera. La sintassi base è la seguente:
While condizione
espressione da ripetere N volte
Wend
Tratteremo approfonditamente While nel capitolo dedicato ai database.Il ciclo Do While - Loop si differenzia ben poco da While, quindi ci limiteremo a vedere un esempio sintattico e poi lo abbandoneremo:
Do While condizione
espressione da ripetere N volte
Loop
7. Gli Array Si definisce Array un agglomerato di dati, statici o dinamici, archiviati in una variabile speciale in forma tabellare. Un classico esempio di Array è rappresentato dai giorni della settimana, ma vediamo prima un esempio sintattico teorico:
Dim nome_array(numero_elementi)
nome_array(0) = "valore"
nome_array(1) = "valore"
nome_array(2) = "valore"
Si crei un nuovo EXE standard e si inserisca una Label di nome lblArr da ingrandire come nell'esempio del capitolo precedente, ed un bottone di comando da chiamare cmdArr.Si inserisca nella porzione generale il seguente codice Option Explicit Dim settimana(7) As Stringe nella Sub il seguente codice:
Private Sub cmdArr_Click()
settimana(0) = "Lunedi"
settimana(1) = "Martedi"
settimana(2) = "Mercoledi"
settimana(3) = "Giovedi"
settimana(4) = "Venerdi"
settimana(5) = "Sabato"
settimana(6) = "Domenica"
' Qui sotto richiameremo l'Array
End Sub
Ampliamo il codice con questa riga, da inserire sotto al commento:
Debug.Print settimana(5)Il risultato sarà Sabato perchè si è puntato all'indice equivalente. Si inserisca poi, al posto della precedente riga, il seguente codice:
Dim i As Integer
i = 0
For i = 0 To UBound(settimana)
lblArr.Caption = lblArr.Caption & settimana(i) & vbCrLf
Next
Dichiaro al volo una variabile che imposto come contatore ed effettuo un ciclo sulla lunghezza dell'Array
UBound(settimana)restituisce la lunghezza di un Array. Stampo poi a video il risultato passando all'Array la variabile che fa da contatore che, come abbiamo visto nel capitolo precedente, assume un valore differente ad ogni iterazione del ciclo settimana(i)equivale a scrivere lblArr.Caption = "" lblArr.Caption = lblArr.Caption & settimana(0) lblArr.Caption = lblArr.Caption & settimana(1) lblArr.Caption = lblArr.Caption & settimana(2) lblArr.Caption = lblArr.Caption & settimana(3) lblArr.Caption = lblArr.Caption & settimana(4) lblArr.Caption = lblArr.Caption & settimana(5) lblArr.Caption = lblArr.Caption & settimana(6)8. Funzioni e Sub Gli elementi madre di un programma, quelli a cui è delegato il compito di contenere e gestire le routine e gli script VB che vengono lanciati allo scatenarsi di un evento, sono le Funzioni e le Sub. Spesso non si fa molta distinzione tra questi elementi, dato che svolgono un ruolo abbastanza simile. La differenza tra loro è che una Funzione raccoglie una serie di operazioni, o script, che insieme formano una routine e restituisce un valore; una Sub è un programma all'interno di un programma e cosi via fino al software finale. Altra differenza è che solo una Sub viene chiamata allo scatenarsi di un evento, mentre una Funzione viene chiamata all'interno di una Sub al verificarsi di una data condizione o a prescindere. Sia le Funzioni che le Sub possono essere pubbliche o private: pubbliche quando sono visibili a tutto il programma ed a tutte le Form e generalmente vengono inserite in un modulo di classe esterno; private quando fanno parte della Form in cui nascono, vivono e muoiono. Si utilizzano le parole chiave Public e Private e se omesse VB da per scontato che si tratta di una Funzione o di una Sub privata. La sintassi di una Funzione pubblica è la seguente:
Public Function NomeFunzione (argomento As tipo)
istruzioni
End Function
La sintassi di una Funzione privata è la seguente:
Private Function NomeFunzione (argomento As tipo)
istruzioni
End Function
ed è possibile omettere la parola chiave Private.Sintatticamente parlando per eseguire una Sub non bisogna far altro che sostituire la parola chiave Function con Sub e chiudere il blocco con End Sub al posto di End Function. Per chiamare una Funzione o una Sub dall'esterno o all'interno di un'altra Funzione o Sub, basta far riferimento al nome e passare tra parentesi gli eventuali valori da assegnare agli argomenti (o parametri, o ancora variabili, che dir si voglia); è possibile utilizzare la parola chiave opzionale Call prima del nome della Funzione o Sub che sia. Facciamo un esempio tanto chiarificatore quanto inutile ai fini pratici della realizzazione di un programma. Si crei un nuovo EXE standard e si acceda al codice della Form dal menu Visualizza / Codicee si inserisca il codice per la seguente Funzione:
Private Function Messaggio(testo As String)
MsgBox testo
End Function
Alla Funzione Messaggio() passo la variabile testo di tipo String che rappresenta il testo del messaggio che lanceremo. Si acceda poi alla Funzione / evento Form_Load() semplicemente facendo doppio click in un punto qualsiasi della Form dalla visualizzazione struttura e si richiami la Funzione Messaggio() come segue:
Private Sub Form_Load()
Call Messaggio("Benvenuto!")
End Sub
In questa fase valorizzo la variabile testo inserendo materialmente il messaggio di benvenuto: il risultato sarà infatti una MsgBox con la scritta Benvenuto!9. Gestione delle stringhe Sia questo che il prossimo capitolo entrano nel dettaglio del codice VB per imparare a gestire due elementi fondamentali per qualsiasi linguaggio di programmazione: la manipolazione delle stringhe e la gestione delle date. Iniziamo con le stringhe. VB dispone di una nutrita schiera di interessanti Funzioni per la manipolazione delle stringhe: capita in moltissimi programmi di dover sostituire determinati caratteri in una stringa, di dividere una stringa in più stringhe in base ad un determinato criterio, di controllare la lunghezza di una stringa, di farci restituire solo parte di una stringa, e tante altre esigenze che devono essere soddisfatte. Iniziamo con la Funzione Replace() che serve a sostituire caratteri all'interno di una stringa. Come vedremo più avanti parlando dei database, è importante, sia in fase di inserimento dei dati che in lettura, controllare che non ci siano all'interno di una stringa dei singoli apici... capita però che quegli apici siano lì nella stringa ad uno scopo: se ho un utente che si chiama D'Alessio non posso cambiargli il nome in DAlessio... insomma, non sono mica il responsabile dell'anagrafe! Posso però sostituire il singolo apice con due singoli apici in modo da non dar fastidio al database e far comparire comunque l'apice lì dove serve. La sintassi per una simile operazione è la seguente: Replace("D'Alessio", "'", "''")
In pratica Replace() accetta i seguenti parametri:
Replace(stringa, carattere da sostituire, carattere sostitutivo)Se ad esempio in una frase voglio sostituire un nome userò la Funzione Replace() come segue: Replace("Pippo è un personaggio Disney", "Pippo", "Pluto")
ed eseguendolo con un Debug.Print
Debug.Print Replace("Pippo ...
riceverò la frase Pluto è un personaggio Disney.Passiamo alla Funzione Split(). Split() divide una stringa in un Array (Rif. capitolo 7) di stringa; prendiamo la seguente stringa: Luca#Ruggiero#Napoliho una serie di dati quali nome, cognome e città di appartenenza, ma in una forma irregolare e teoricamente illeggibile e scorretta grammaticalmente. Il carattere cancelletto (#) presente nella stringa mi consente di avere un utile riferimento per dividere la stringa come meglio conviene. Si crei un nuovo EXE standard, si inserisca sulla Form una Label di nome lblSplit e si acceda alla Sub Form_Load(); nella parte generale si inserisca il seguente codice: Option Explicit Dim stringa As String Dim s() As String Dim i As Integerdove s() è una stringa di tipo Array che utilizzerò per lo Split(). Nella Sub, invece, si inserisca il seguente codice:
Private Sub Form_Load()
i = 0
stringa = "Luca#Ruggiero#Napoli"
s = Split(stringa, "#")
For i = 0 To UBound(s)
lblSplit.Caption = lblSplit.Caption & s(i) & vbCrLf
Next
End Sub
Utilizzando la sintassi
Split(stringa, carattere di riferimento)otterrò in output sulla Label Luca Ruggiero NapoliRicordo che, come un Array, il conteggio degli item parte da zero (0) fino ad N. Per controllare la lunghezza di una stringa esiste la Funzione Len() che accetta come parametro la stringa di cui, appunto, si vuole controllare la lunghezza. La sintassi è la seguente: Len(stringa)quindi Debug.Print Len("Luca")
restituisce 4.VB possiede tre Funzioni l'una figlia dell'altra che serve ad eliminare gli spazi superflui sulla sinistra, sulla destra o sia sulla sinistra che sulla destra di una stringa. Le Funzioni sono rispettivamente LTrim() (Left Trim), RTrim() (Right Trim) e Trim(). La sintassi è analoga per tutte e tre le Funzioni ed il funzionamento è quello appena descritto; facciamo un esempio con Trim(); la sua sintassi è: Trim(stringa)quindi Debug.Print Trim(" Luca ")
restituisce Luca senza gli spazi superflui.Le Funzioni Left(), Right() e Mid() servono rispettivamente ad isolare da una stringa un certo numero di caratteri specificati. Andiamo per ordine e vediamo come usufruire delle funzionalità di tutte e tre. Si crei un nuovo EXE standard e si inserisca nella parte generale il seguente codice: Option Explicit Dim stringa As Stringche useremo per gli esempi di tutte e tre le funzioni appena accennate. La sintassi di Left è la seguente: Left(stringa, numero di caratteri)Nel codice Form_Load() inseguire il seguente codice:
Private Sub Form_Load()
stringa = "lukeonweb.net"
Debug.Print Left(stringa, 4)
End Sub
La stringa lukeonweb.net viene parserizzata da Left() e restituisce solo i primi 4 caratteri, ovvero luke.Il seguente codice illustra l'utilizzo della Funzione Right()
Private Sub Form_Load()
stringa = "lukeonweb.net"
Debug.Print Right(stringa, 4)
End Sub
Il risultato è .net.In pratica Left() prende N caratteri specificati come secondo parametro tra parentesi a partire dalla sinistra della stringa, mentre Right() parte dalla destra. Mid() invece non considera N caratteri a partire da sinistra ed N caratteri a partire da destra; un esempio:
Private Sub Form_Load()
stringa = "lukeonweb.net"
Debug.Print Mid(stringa, 5, 5)
End Sub
Il risultato è onweb.Le stringhe possiedono ancora moltissime Funzioni, ma quelle spiegate in questo capitolo sono essenziali per affrontare la programmazione VB; rimando la spiegazione di altre Funzioni ad un corso più avanzato o ad un corso professionale. 10. Gestione delle date La gestione delle date riveste un ruolo molto importante nell'ambito di un qualsiasi programma. VB mette a disposizione dello sviluppatore una serie di semplici e potenti Funzioni; elenchiamole:
Debug.Print Date ' restituisce 31/10/2004 Debug.Print Time ' restituisce 15.00.00 Debug.Print Now ' restituisce 31/10/2004 15.00.00 Debug.Print FormatDateTime(Date, vbLongDate) ' restituisce domenica 31 ottobre 2004 Debug.Print Day(Date) ' restituisce 31 Debug.Print Month(Date) ' restituisce 10 Debug.Print Year(Date) ' restituisce 2004 Debug.Print Hour(Time) ' restituisce 15 Debug.Print Minute(Time) ' restituisce 00 Debug.Print Second(Time) ' restituisce 0011. Funzioni di conversione e Funzioni predefinite VB mette a disposizione dello sviluppatore una serie di Funzioni predefinite, alcune definite di conversione, che servono a convertire un tipo di dato in un'altro tipo, ed altre per la risoluzione di alcune problematiche in maniera semplice, veloce e potente. In questo capitolo affronteremo le principali. Le Funzioni di conversione più famose sono CInt() e CStr() che convertono un dato rispettivamente in formato Integer ed in formato String. La sintassi è la seguente Dim numero As String numero = "5" ' è un numero ma in formato stringa CInt(numero) ' restituisce numero = 5Esistono altre Funzioni di conversione come CBool() che converte un dato in valore booleano, ovvero che restituisce True o False; CDate() che converte una stringa in una data; CCur() che converte un numero in formato valuta, ed altre. Alcune Funzioni predefinite di VB molto comode sono FormatNumber() che separa con un punto le migliaia Debug.Print FormatNumber(1000, 0) ' restituisce 1.000FormatCurrency() che restituisce un numero con il simbolo dell'euro Debug.Print FormatCurrency(1000, 1) ' restituisce € 1.00012. Interazione con i database VB è nato principalmente per la creazione di potenti interfacce che permettono la gestione locale o via rete (NON Internet) di dati residenti su una fonte di dati quale un database. Essendo un prodotto di casa Microsoft, VB preferisce lavorare con prodotti (DBMS, ovvero gestori di database) Microsoft come Access e SQL Server, ma lavora correttamente anche con DBMS di case differenti come Oracle. In questo capitolo ci baseremo sull'interazione con Access, preferibilmente versione 2000 e do per scontato che il lettore abbia almeno un'infarinatura di base di SQL. Per la connessione con una fonte di dati e la gestione dei dati ivi residenti, VB utilizza l'oggetto ADO (ActiveX Data Object) per l'interfacciamento tra il programma e la fonte di dati stessa. ADO mette a disposizione, tra l'altro, due oggetti fantastici, ovvero Connection per la gestione della connessione ed altre utility, e Recordset per la gestione fisica dei dati. Si crei un nuovo EXE standard e si acceda al menu Progetto / Riferimenti...per l'importazione dei riferimenti ad ADO, selezionando le voci come nell'immagine seguente: ![]() Si nomini la Form frmDatabase, si inseriscano due Label con Caption Nome e Cognome (non preoccupatevi di cambiare la proprietà Name) e due TextBox in cui svuotare la proprietà Text e modificare i nome come txtNome e txtCognome. Si aggiunga poi un CommandButton da nominare cmdInserisci e modificare la Caption in Inserisci. Questa Form ci consentirà di effettuare inserimenti nel database Access ce creeremo tra poco; l'immagine seguente mostra il risultato finela della Form: ![]() Si salvi il progetto dal menu File / Salva progetto con nome...nella cartella test da creare sotto il drive C: C: estAll'interno di questa cartella troverete fei file di progetto creati automaticamente da VB; aggiungete in questa cartella il file Access database.mdb al cui interno creare la tabella utenti in cui inserire i campi id (Contatore), nome (Testo) e cognome (Testo); appena espletata questa operazione tornare sulla Form in visualizzazione struttura, accedere al codice della Form ed inserire queste righe nella parte generale: Option Explicit Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Dim stringa As StringI tipi di dato ADODB.Connection ed ADODB.Recordset sono stati aggiunti a VB per mezzo dell'importazione dei riferimenti come accennato in precedenza. Doppio click sul CommandButto per accedere alla Sub in cui inserire il seguente codice:
Private Sub cmdInserisci_Click()
If Len(Trim(txtNome.Text)) = 0 Then
MsgBox "Inserire il nome", vbCritical, "ERRORE"
txtNome.SetFocus
Exit Sub
End If
If Len(Trim(txtCognome.Text)) = 0 Then
MsgBox "Inserire il cognome", vbCritical, "ERRORE"
txtCognome.SetFocus
Exit Sub
End If
stringa = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
stringa = stringa & "C: estdatabase.mdb"
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
cn.Open stringa
rs.Open "utenti", cn, 3, 3
rs.AddNew
rs("nome") = txtNome.Text
rs("cognome") = txtCognome.Text
rs.Update
Set cn = Nothing
Set rs = Nothing
MsgBox "Inserimento effettuato", vbOKOnly, "CONFERMA"
End Sub
A prima vista questo codice potrebbe destare qualche perplessità al lettore più inesperto, quindi affrontiamo le singole fasi della Sub.Controllo che i campi nome e cognome siano stati compilati correttamente, utilizzando l'espressione Exit Sub per uscire dalla Sub qualora le condizioni non siano state soddisfatte e non si vuol permettere la continuazione della routine:
If Len(Trim(txtNome.Text)) = 0 Then
MsgBox "Inserire il nome", vbCritical, "ERRORE"
txtNome.SetFocus
Exit Sub
End If
If Len(Trim(txtCognome.Text)) = 0 Then
MsgBox "Inserire il cognome", vbCritical, "ERRORE"
txtCognome.SetFocus
Exit Sub
End If
A condizioni soddisfatte creo la stringa di connessione al database e la memorizzo nella variabile stringa:
stringa = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" stringa = stringa & "C: estdatabase.mdb"Con la clausola Set imposto le variabili cn ed rs come nuove istanze degli oggetti Connection e Recordset: Set cn = New ADODB.Connection Set rs = New ADODB.RecordsetApro la connessione al database ed il Recordset in modalità scrittura, passando al metodo Open il nome della tabella su cui voglio lavorare, il nome della connessione che sto utilizzando ed i cursori appropriati: cn.Open stringa rs.Open "utenti", cn, 3, 3Utilizzo i metodi AddNew ed Update per aggiungere un nuovo record alla tabella e per aggiornarlo; passo poi al Recordset i campi della tabella e li valorizzo con le variabili contenenti i dati corrispondenti:
rs.AddNew
rs("nome") = txtNome.Text
rs("cognome") = txtCognome.Text
rs.Update
Pulisco la memoria del buffer dalle variabili contenenti la connessione ed il recordset, settandole sul valore speciale di VB Nothing:
Set cn = Nothing Set rs = NothingIn fine, ad operazioni espletate, lancio un messaggio di conferma: MsgBox "Inserimento effettuato", vbOKOnly, "CONFERMA"Vediamo adesso come leggere i dati dal database. Si aggiunga una nuova Form dal menu Progetto / Inserisci formsi scelga Form e si confermi. Si assegni alla Form il nome frmLettura e si aggiunga una Label di nome lblDati grande quanto tutta la Form. Si acceda all'evento Form_Load() della Form con un doppio click in un punto qualsiasi della Form stessa e si inserisca nella parte generale il seguente codice: Option Explicit Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Dim stringa As StringIn Form_Load(), invece, inserire il seguente codice:
Private Sub Form_Load()
stringa = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
stringa = stringa & "C: estdatabase.mdb"
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
cn.Open stringa
rs.Open "SELECT * FROM utenti", cn, 1
If rs.EOF Then
lblDati.Caption = "Nessun dato"
Else
While rs.EOF = False
lblDati.Caption = lblDati.Caption _
& rs("nome") & " " _
& rs("cognome") & vbCrLf
rs.MoveNext
Wend
End If
Set cn = Nothing
Set rs = Nothing
End Sub
Gran parte del codice appena presentato non è molto differente da quello di esempio per l'inserimento: la stringa di connessione al database è la stessa, è necessario settare ed aprire, ed in fine svuotare, gli oggetti Connection e Recordset. Concentriamoci sulla lettura dei dati:
If rs.EOF Then
lblDati.Caption = "Nessun dato"
Else
While rs.EOF = False
lblDati.Caption = lblDati.Caption _
& rs("nome") & " " _
& rs("cognome") & vbCrLf
rs.MoveNext
Wend
End If
La logica seguita è la seguente: se non ci sono dati nella tabella, ovvero se la lettura del Recordset arriva alla fine della tabella (EOF - End Of File) lancio un messaggio che avvisa che non sono stati trovati dati; altrimenti effettuo un ciclo e stampo a video nella Label tutti i record tirati fuori dalla stringa SQL
SELECT * FROM utentipassata al Recordset impostato in lettura. |
IN EVIDENZA
Una slidegallery con jQuery
Pagamenti online con PayPal e PHP
Guadagna col tuo sito grazie a TradeD...
Riavviare IIS
Effetto ombra su testo con Photoshop
Guida XHTML
Riscrivere le URL con Asp
Generare password casuali in Javascri...
Errore 80004005: Cannot update. Datab...
Referenze dei Tag Html
HTTP 500 internal server error
Introduzione ad Ajax ed Asp con Jscri...
Breve guida a jQuery
Stringhe di connessione via ODBC e Ol...
Referenze dei fogli di stile Css
Le espressioni regolari in Javascript
|
||||
© 2001/2012 lukeonweb.net - A cura di Luca Ruggiero, Partita IVA 05564851219 -
Privacy |
Pubblicità |
Contatti
| |||||