1 - Inserimento dati in tabella tramite maschera con l’uso degli oggetti DAO

Stato
Chiusa ad ulteriori risposte.

ges

Excel/VBA Expert
Amministratore
21 Giugno 2015
29.532
2.465
Como
2011MAC 365WIN
1.009
ACCESS VBA
Inserimento dati in tabella tramite maschera con l’uso degli oggetti DAO

Teoria

Innanzitutto va specificato che la sigla DAO sta per “Access Data Objects”, che rappresenta una delle librerie a cui può ricorrere Access nella manipolazione dei dati. In tempi più recenti questa è stata affiancata da un’altra libreria ADO (“Activex Data Objects”).

La differenza più significativa tra le due è che mentre DAO lavora solo con specifici motori integrati in Windows quali Jet Database Engine (JET) e Access Database Engine (ACE) la seconda è in grado di lavorare anche al di fuori di Access e dell'ambiente motore JET e soprattutto è in grado di interagire con volumi che non hanno la struttura tipica del Database.

Per chi usa Access o gestisce database di piccole/medie dimensioni va bene usare DAO, che secondo qualche opinione sarebbe più veloce, mentre per i database più grandi con connessioni, specie se esterne o remote, sarebbe più efficiente usare ADO.

In ogni caso da una ricerca che ho fatto ho trovato diverse opinioni contrastanti tra questi due metodi per cui non mi avventuro a dire oltre.

Riporto di seguito il modello con le gerarchie degli oggetti DAO




Pratica
Vediamo adesso il codice da usare per l’inserimento di nuovi campi da una maschera in una tabella di Access.

Creo una tabella che chiamo “Utenti ForumExcel” e prevedo come campo di testo “Nick utente”




Lo scopo è adesso di popolare questa tabella con i Nick inserendoli da una maschera

Mi creo una maschera con una casella di testo per scrivere il nome da inserire e un pulsante




Clicco sull’evento click del pulsante che ho chiamato cmdInserimento



Poi clicco su Aggiungo codice e entro nell’IDE del Visual Basic del modulo del pulsante




Dichiaro due variabili “DBCorrente” e “Tabella” dimensionandoli rispettivamente come DAO.Database e DAO.Recordset



A questo punto assegno a DBCorrente l’oggetto CurrentDB (cioè il Database corrente) e a Tabella l’istruzione per aprire la tabella "Utenti ForumExcel" (dbOpentable è uno dei tipi che serve per modificare, aggiungere e cancellare i records nella tabella)



All’oggetto Tabella quindi imposto il metodo AddNew (https://docs.microsoft.com/en- us/office/client-developer/access/desktop-database-reference/recordset-addnew-method-dao), quindi aggiungo nel campo Nick il nome che ho scritto nella casella di testo della maschera che ho chiamato txtNick

Per richiamare il campo della tabella si scrive prima il punto esclamativo (!) poi il nome del campo (se il nome del campo è formato da testo e spazio va messo tra parentesi quadre, e in questo caso va scritto così ![Nick utente], altrimenti non è necessario)

Infine per permettere la modifica della tabella con il nuovo nome inserito si aggiunge l’evento Update (https://docs.microsoft.com/en-us/office/client-developer/access/desktop-database- reference/recordset-update-method-dao)

E infine si chiude la Tabella e si svuta la memoria occupata per il Database corrente (Nothing), si svuota la casella di testo della maschera e se si vuole si mette un messaggio che avvisa che il dato è stato aggiunto nella tabella correttamente.

Questo il codice completo

Visual Basic:
Private Sub cmdInserimento_Click()
    Dim DBCorrente As DAO.Database
    Dim Tabella As DAO.Recordset
 
    Set DBCorrente = CurrentDb
    Set Tabella = DBCorrente.OpenRecordset("Utenti ForumExcel", dbOpenTable)
   
    With Tabella
        .AddNew
        ![Nick utente] = Me.txtNick
        .Update
        .Close
    End With

    Me.txtNick = ""

   Set  DBCorrente = Nothing
   
    MsgBox "Nuovo utente inserito"

End Sub

Allego File
 

Allegati

  • Like
Reactions: Powerwin

ges

Excel/VBA Expert
Amministratore
21 Giugno 2015
29.532
2.465
Como
2011MAC 365WIN
1.009
In quest'ultimo anno ho macinato centinaia di pagine di manuali su Access, di ricerche e approfindomenti su Internet (Tabelle, Query, vba, ecc. ecc. ) sbattendo la testa con numerosi concetti che all'inizio mi sembravano assolutamente complicati e astrusi, ma pian piano la nebbia si è schiarita e credo di aver imparato diverse cose che nel mio modo di essere e nello spirito del forum voglio condividere affinchè (spero) possano essere utili a chi ne avesse bisogno.

Questa è la prima, pertanto, di più guide che intendo pubblicare, tempo permettendo .

Buona lettura a tutti e per qualsiasi chiarimento o dubbio chiedete pure nel Forum, sezione Access.
 
Stato
Chiusa ad ulteriori risposte.

Sostieni ForumExcel

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