Finestre Popup in Access

Spiegazione su come creare una finestra popup in VBA per Access con l'inserimento, modifica o cancellazione di record.

Introduzione

Una delle sfide più comuni nello sviluppo con Microsoft Access è la gestione delle finestre popup, soprattutto quando è necessario riportare un valore al controllo che ha aperto la finestra. Questo articolo mostra una tecnica efficace per farlo, evitando macro e sfruttando solo Form e codice VBA.

Il problema: aggiornare il controllo padre

Supponiamo di avere una casella combinata che elenca tutti i clienti. Se l’utente fa doppio clic su di essa, vogliamo aprire una finestra popup (una maschera impostata come ) per modificare i dati del cliente selezionato.
Per aprire la maschera e passare l’ID del cliente, usiamo:

DoCmd.OpenForm "frmClienti", , , , , acDialog, Me!IDCliente

All’interno della maschera dei clienti, recuperiamo l’ID passato tramite:

Private Sub Form_Load()
    Dim id As Long
    id = CLng(Me.OpenArgs)
    ' Carica il cliente corrispondente
End Sub

Il secondo problema: aggiornare il valore se cambia

Se l’utente modifica il cliente nella finestra popup, anche la casella combinata nel form padre deve aggiornarsi. Per farlo, possiamo usare una tecnica semplice ma efficace: scrivere il nuovo valore nel registro di sistema, e poi leggerlo al momento dell’aggiornamento.

Funzioni VBA utilizzate

SaveSetting "Applicazione", "ClienteAttivo", "ID", Me!IDCliente
GetSetting "Applicazione", "ClienteAttivo", "ID", 0
DeleteSetting "Applicazione", "ClienteAttivo"

Nel form padre, possiamo usare per rileggere il valore e aggiornare il controllo. Dopo l’uso, è buona pratica cancellare la chiave con .

Filosofia di sviluppo

Tutti gli esempi presentati si basano su Form e codice VBA puro, senza macro. Questo approccio garantisce controllo, flessibilità e chiarezza, rendendo Access uno strumento potente per creare applicativi gestionali in tempi rapidi.

Limiti e alternative

Access ha i suoi limiti, soprattutto nella velocità di esecuzione di ricerche complesse. Per questo, in progetti più avanzati, preferisco scrivere le routine critiche in C/C++, usando MFC, STL e ATL. Certo, richiede più tempo, ma i risultati sono software veloci e reattivi. Un esempio concreto è MerciGest, scritto interamente in Visual C++ 10.0.

Risorse e codice sorgente

Puoi consultare esempi pratici e scaricare applicativi open source scritti in Access da me, direttamente dalla pagina dedicata sul sito aziendale. Troverai soluzioni reali, testate, e sempre basate su codice verificabile.

Lascia una risposta

Creative Commons License
Except where otherwise noted, the content on this site is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.

Modifica preferenze cookie