![]() |
|
Homepage |
Visual Basic |
Una rubrica in VB e Ms Access | |
Una rubrica in VB e Ms Access
Questo è il primo Articolo della sezione Visual Basic (6) di lukeonweb.net per cui spero che il lettore abbia almeno un minimo di dimestichezza col linguaggio e con l'ambiente di sviluppo; per qualche buon cenno sul linguaggio consiglio, almeno, di dare una lettura agli Articoli della sezione VBScript. Ci occuperemo della realizzazione di una rubrica che vede Ms Access come DBMS per la manipolazione dei dati. Una rubrica può avere diverse sfaccettature ed utility: quella che analizzeremo in questa sede è molto semplice ma funzionale e si presenta come nella figura che segue:
Option Explicit
Dim cn As ADODB.Connection ' DICHIARO L'OGGETTO CONNECTION
Dim rs As ADODB.Recordset ' DICHIARO L'OGGETTO RECORDSET
Dim s() As String ' STRINGA DI ARRAY CHE SERVIRA' IN ALCUNE FASI DEL PROGRAMMA
Passiamo ora in rassegna le varie Sub del programma; al caricamento dobbiamo caricare nella Combo Box tutti i record della tabella utenti; fare doppio click col mouse in una qualsiasi area della form (attenzione a non cliccare su nessuno dei controlli creati in precedenza) utilizzando il seguente codice:
Private Sub Form_Load()
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
' APRO LA CONNESSIONE E LANCIO LA QUERY PER RECUPERARE I DATI
cn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=database.mdb"
rs.Open "SELECT id, nome, cognome FROM utenti ORDER BY cognome ASC", cn, 1
' INSERISCO UN ITEM VUOTO NELLA COMBO BOX
cmbSeleziona.AddItem ("")
' ESTRAGGO I DATI CHE MI INTERESSANO DALLA TABELLA E LI INSERISCO NELLA COMBO BOX
While rs.EOF = False
cmbSeleziona.AddItem (rs("id").Value & " - " & rs("cognome").Value & " " & rs("nome").Value)
rs.MoveNext
Wend
rs.Close
cn.Close
End Sub
Passiamo ora alla selezione effettiva del record ed inseriamo tutti i dati nelle rispettive Text Box; doppio click sul pulsante etichettato come OK ed inserire il seguente codice:
Private Sub cmdSeleziona_Click()
If cmbSeleziona.Text = "" Then ' VERIFICO CHE SIA SELEZIONATO UN RECORD REALE, NON VUOTO
lblMessaggio.Caption = "Selezionare un Utente valido"
Else
lblMessaggio.Caption = ""
' UTILIZZO LA FUNZIONE SPLIT PER RECUPERARE IL VALORE ID NELLA COMBO BOX
s = Split(cmbSeleziona.Text, " ")
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
' APRO LA CONNESSIONE E LANCIO LA QUERY PER RECUPERARE IL RECORD SELEZIONATO
cn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=database.mdb"
rs.Open "SELECT * FROM utenti WHERE id = " & CInt(s(0)), cn, 1
' RIEMPIO I CAMPI DELLA FORM CON I VALORI ESTRATTI DAL DATABASE
txtNome.Text = rs("nome").Value
txtCognome.Text = rs("cognome").Value
txtIndirizzo.Text = rs("indirizzo").Value
txtTelefono.Text = rs("telefono").Value
rs.Close
cn.Close
End If
End Sub
Siamo arrivati alla parte clou dell'applicazione, in cui viene chiesto all'utilizzatore della nostra rubrica di salvare un record: a seconda del valore della Combo Box il programma capirà se si tratta di un nuovo record (se viene lasciato selezionato l'item vuoto, il primo) o se si tratta di un record esistente (se viene selezionato uno qualsiasi dei record). Fare doppio click sul pulsante etichettato come Salva ed inserire il seguente codice:
Private Sub cmdSalva_Click()
' CONTROLLO LA VALIDITA' DEI CAMPI
If Len(Trim(txtNome.Text)) = 0 Then
lblMessaggio.Caption = "Inserire il nome"
txtNome.SetFocus
ElseIf Len(Trim(txtCognome.Text)) = 0 Then
lblMessaggio.Caption = "Inserire il cognome"
txtCognome.SetFocus
ElseIf Len(Trim(txtIndirizzo.Text)) = 0 Then
lblMessaggio.Caption = "Inserire l'indirizzo"
txtIndirizzo.SetFocus
ElseIf Len(Trim(txtTelefono.Text)) = 0 Or IsNumeric(txtTelefono.Text) = False Then
lblMessaggio.Caption = "Inserire il telefono (numerico)"
txtTelefono.SetFocus
Else ' SE TUTTE LE CONDIZIONI SONO STATE SODDISFATTE...
Dim SQL As String ' COMANDO SQL A SECONDA CHE SI TRATTI DI UNA INSERT O DI UN UPDATE
Dim conferma As String ' MESSAGGIO DI CONFERMA (SECONDO LO STESSO CRITERIO DESCRITTO SOPRA)
' COME SOPRA...
s = Split(cmbSeleziona.Text, " ")
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
cn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=database.mdb"
If cmbSeleziona.Text = "" Then ' ...ESEGUO LA INSERT
SQL = "INSERT INTO utenti " _
& "(nome, cognome, indirizzo, telefono) " _
& "VALUES " _
& "('" & Replace(txtNome.Text, "'", "''") & "', " _
& "'" & Replace(txtCognome.Text, "'", "''") & "', " _
& "'" & Replace(txtIndirizzo.Text, "'", "''") & "', " _
& "'" & Replace(txtTelefono.Text, "'", "''") & "')"
conferma = "Inserimento effettuato con successo"
Else ' ...ESEGUO L'UPDATE
SQL = "UPDATE utenti SET " _
& "nome = '" & Replace(txtNome.Text, "'", "''") & "', " _
& "cognome = '" & Replace(txtCognome.Text, "'", "''") & "', " _
& "indirizzo = '" & Replace(txtIndirizzo.Text, "'", "''") & "', " _
& "telefono = '" & Replace(txtTelefono.Text, "'", "''") & "' " _
& "WHERE id = " & CInt(s(0))
conferma = "Modifica effettuata con successo"
End If
' ESEGUO REALMENTE IL COMANDO SQL CHE ARRIVA ALL'ESTERNO DELLA CONDIZIONE
cn.Execute (SQL)
lblMessaggio.Caption = conferma
cn.Close
' PULISCO E RICARICO LA COMBO BOX
cmbSeleziona.Clear
Call Form_Load
End If
End Sub
Ultimo step davvero importante è la cancellazione del record selezionato. Il principio è lo stesso esaminato in fase di salvataggio delle informazioni. Fare doppio click sul pulsante etichettato come Cancella ed inserire il seguente codice:
Private Sub cmdCancella_Click()
If cmbSeleziona.Text = "" Then ' CONTROLLO CHE IL RECOR SELEZIONATO NON SIA VUOTO
lblMessaggio.Caption = "Selezionare un Utente valido"
Else
' COME SOPRA...
s = Split(cmbSeleziona.Text, " ")
' ESEGUO LA CANCELLAZIONE DEL RECORD SELEZIONATO
Set cn = New ADODB.Connection
cn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=database.mdb"
cn.Execute ("DELETE * FROM utenti WHERE id = " & CInt(s(0)))
cn.Close
' PULISCO E RICARICO LA COMBO BOX
cmbSeleziona.Clear
Call Form_Load
End If
End Sub
Le ultimissime fasi del programma prevedono la pulizia dei controlli della form e l'uscita dal programma stesso. Di seguito i due codice:
Private Sub cmdPulisci_Click()
' PULISCE I CAMPI
txtNome.Text = ""
txtCognome.Text = ""
txtIndirizzo.Text = ""
txtTelefono.Text = ""
lblMessaggio.Caption = ""
End Sub
Private Sub cmdEsci_Click()
Unload Me ' ESCE DAL PROGRAMMA
End Sub
La rubrica appena esaminata non pretende di essere il migliore degli strumenti immaginabili nel suo genere, serve a solo scopo didattico. A voi il compito di crearne una più funzionale, ad esempio con l'aggiunta di altri campi e di qualche strumento aggiuntivo per la manipolazione dei dati.
|
IN EVIDENZA
Effetto ombra su testo con Photoshop
Guadagna col tuo sito grazie a TradeD...
Guida XHTML
Riscrivere le URL con Asp
Riavviare IIS
HTTP 500 internal server error
Generare password casuali in Javascri...
Errore 80004005: Cannot update. Datab...
Introduzione ad Ajax ed Asp con Jscri...
Referenze dei Tag Html
Stringhe di connessione via ODBC e Ol...
Referenze dei fogli di stile Css
Le espressioni regolari in Javascript
|
||||
© 2001/2010 lukeonweb.net - A cura di Luca Ruggiero, Partita IVA 05564851219 -
Privacy |
Pubblicità |
Contatti
| |||||