4 - Modificare i dati della tabella tramite maschera

Stato
Chiusa ad ulteriori risposte.

ges

Excel/VBA Expert
Amministratore
21 Giugno 2015
29.532
2.465
Como
2011MAC 365WIN
1.009
Nei tre tutorial precedenti ho cercato di mostrare i metodi per inserire dei dati nella tabella (1), di evitare di inserire campi vuoti (2) e di evitare di inserire duplicati (3) il tutto utilizzando la libreria DAO.

Con questo nuova guida voglio mostrarvi come modificare i dati inseriti sempre tramite maschera.

Mi creo una Casella combinata e una Casella di testo, la prima per cercare i dati e la seconda per scrivere come voglio modificarli.
Con una query assegno alla Casella di testo come "origine dati" i nomi della tabella "Utenti ForumExcel"
Mi creo un tasto che chiamo "MODIFICA"

Questa è la maschera in modalità struttura



Nella Casella Combinata mi sono caricato ID e Nick quindi 2 colonne



devo fare attenzione a scegliere la colonna giusta da associare



Ora cliccando sull'evento Click del Bottone "MODIFICA" scelgo di usare il codice ed entro nell'Ide del modulo.
La prima parte del codice è uguale a quella che già conosciamo
Visual Basic:
Private Sub cboModifica_Click()
    Dim DBCorrente As DAO.Database
    Dim Tabella As DAO.Recordset  
    Set DBCorrente = CurrentDb
    Set Tabella = DBCorrente.OpenRecordset("Utenti ForumExcel", dbOpenTable)
  
    ....
    ....
A questo punto usando la proprità EOF mi creo un ciclo Do Loop che mi fa usciere quando sono ho scorso tutti i records del campo.
Per spostarmi di volta in volta nei recorsd uso Tabella.MoveNext
Visual Basic:
Set DBCorrente = CurrentDb
Set Tabella = DBCorrente.OpenRecordset("Utenti ForumExcel", dbOpenTable)
  
  
    Do Until Tabella.EOF
      
        Tabella.MoveNext
    Loop
Ora mi creo la condizione con un If ... End If gli dico se il record contenuto nel campo della tabella è uguale a quallo scelto con la ComboBox della maschera allora permetti di editarlo Tabella.Edit

Nella scelta della Casella combinata (vi ricordate che ho due colonne?) devo dirgli di confrontare la seconda colonna (quella con i nomi, non con gli ID) e visto che le colonne nelle caselle combinate partono da 0 scrivo 1 per interecettare la seconda colonna Me.cboNick.Column(1)
Visual Basic:
 Do Until Tabella.EOF
        If Tabella![Nick utente] = Me.cboNick.Column(1) Then
            Tabella.Edit
            .....
        End If
        Tabella.MoveNext
    Loop
E quindi cambia il record della tabella con il nome che ho scritto nella Casella di testo

Esempio cambio fa ges a pippo



Visual Basic:
 Do Until Tabella.EOF
        If Tabella![Nick utente] = Me.cboNick.Column(1) Then
            Tabella.Edit
            Tabella![Nick utente] = Me.txtModifica
            Tabella.Update
            MsgBox "Dato modificato!"
            Me.cboNick = ""
        End If
        Tabella.MoveNext
    Loop
Un messaggio avvisa che il dato è modificato

Questo il codice completo
Visual Basic:
Option Compare Database

Private Sub cboModifica_Click()
    Dim DBCorrente As DAO.Database
    Dim Tabella As DAO.Recordset
    Set DBCorrente = CurrentDb
    Set Tabella = DBCorrente.OpenRecordset("Utenti ForumExcel", dbOpenTable)
  
  
    Do Until Tabella.EOF
        If Tabella![Nick utente] = Me.cboNick.Column(1) Then
            Tabella.Edit
            Tabella![Nick utente] = Me.txtModifica
            Tabella.Update
            MsgBox "Dato modificato!"
            Me.cboNick = ""
        End If
        Tabella.MoveNext
    Loop
  
    Tabella.Close
    Set DBCorrente = Nothing
  
  
End Sub
P.S.- Quello riportato è solo un esempio per capire il funzionamento della modifica tramite l'oggetto DAO. Nelle tabelle reali quando si fa una modifica di uno o più record è bene richiamare un elemento univoco, quale per esempio l'ID, per essere certi di quello che si va a modificare (esempio una rubrica con due nominativi uguali "Rossi Mario" e uno dei due ha cambiato il numero di cellulare per capire quale dobbiamo modificare effettivamente è bene agganciare il suo ID che può comparire in maschera e solo in quel caso effettuare la modifica).

Allego file
 

Allegati

Stato
Chiusa ad ulteriori risposte.

Sostieni ForumExcel

Aiutaci a sostenere le spese e a mantenere online la community attraverso una libera donazione!