CODICE VBA PER VERIFICA CODICE ESISTENTE

Anonimo
2018-08-05T08:50:10+00:00

Ciao a tutti,

volevo porvi un quesito circa la verifica, mediante codice VBA, dell'esistenza in una tabella di un codice e visualizzazione msgbox di notifica.

Ho una tabella con una colonna Cod. Fin. che è un campo testo dove inserisco un codice attribuito ad un determinato finanziamento (es. Finanziamento di Zia) Cod. Fin. = Zia).

Nella successiva immissione di un nuovo finanziamento vorrei inserire un controllo, mediante codice VBA in cui vena verificato se il codice Zia esiste. Nella ipotesi che il codice sia presente nella tabella di riferimento un msgbox si apra e mi avverta della presenza del codice.

Inoltre sempre in merito allo stesso dbase e grazie all'aiuto di Vladimiro chiedo a voi di potermi spiegare (se possibile e brevemente) quando è utile utilizzare delle variabili (esempio Dim i as long).

Grazie per il vostro prezioso aiuto.

Luca

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2018-08-06T23:27:25+00:00

Ciao,

proverei con:

If DCount("*", "FINANZIAMENTI", "COD_FINAN='" & Me!COD_FINAN & "'") > 0 Then

        MsgBox "Il codice digitato già presente in archivio", vbInformation

        Cancel = True

        COD_FINAN.SetFocus

     End If

End Sub

Ciao Mimmo

Ciao Mimmo,

se mi posso permettere, la funzione Dcount in questo caso è un po' limitata in quanto potrebbe accadere di modificare involontariamente un nominativo già presente in tabella e non poterlo più ripristinare in quanto il codice suddetto lo vedrebbe come un nominativo già presente in tabella.

Per ovviare a questo c'è un bel sistema (reperibile, se non erro, anche su

www.donkarl.com

In cui puoi trovare tanti altri bellissimi esempi di programmaziome costruiti magnificamente dal nostro Karl Donaubauer).

Allora dicevo, al posto di usare la funzione Dcount, si potrebbe usare la funzione Dlookup

mettendo a confronto il veccho nominativo con il nuovo.

If Len( Me!COD_FINAN & "")= 0 then

    Exit Sub

End If

If Not Is Null(Dlookup("COD_FINAN"," FINANZIAMENTI",

"COD_FINAN='" & Replace(Me!COD_FINAN, "'","''") &  "'")) And Me!COD_FINAN <> Nz( Me!COD_FINAN.OldValue) Then

msgBox ecc...

Vladimiro

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2018-08-06T09:44:37+00:00

Ciao Luca,

potresti utilizzare la funzione DCount per verificare la presenza di un valore in tabella (Cod. Fin. = Zia).

if dcount("*","tuaTabella","[Cod. Fin.] = 'Zia'") > 1 Then.....

Ciao Mimmo

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

17 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2018-08-25T13:34:58+00:00

    Ciao Vladimiro

    in tutta sincerità non ho ben capito il tuo suggerimento (sicuramente perchè non conosco bene, come te, l'uso del codice VBA) .... se puoi essere più chiaro, te ne sarei grato.

    In realtà il codice che ho adottato per il mio dbase (quello suggerito da Mimmo) al momento che l'ho provato funziona correttamente ... ma per farmi notare la finezza che suggerisci tu ... devo ben capire cosa succede.

    Grazie Vladimiro

    Luca

    Ciao Luca,

    quello che ho scritto non mi pare complicato e si rifà semplicemente al suggerimento che ti ho consigliato qui  in quest'altro thread.

    In poche parole, lo stop all'uscita dalla routine che ottieni tramite

    Cancel = True

    è valido solo "Su prima di aggiornare" e non ha senso inserirla "Su dopo aggiornamento"

    A te non esce l'errore perché appunto non hai inserito la dichiarazione obbligatoria delle variabili, ma stai pur certo che se stavi programmando ad esempio in SQL Server l'errore, a prescindere dalla non dichiarazione obbligatoria, usciva e come.

    Se si vuole progredire nella programmazione bisogna anche impegnarsi a studiare quello che si sta facendo senza limitarsi ad un copa-incolla.

    Naturalmente questa mia non vuole essere una polemica o un rimprovero, semplicemente un consiglio spassionato.

    Vladimiro

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2018-08-25T08:28:27+00:00

    Ciao Vladimiro

    in tutta sincerità non ho ben capito il tuo suggerimento (sicuramente perchè non conosco bene, come te, l'uso del codice VBA) .... se puoi essere più chiaro, te ne sarei grato.

    In realtà il codice che ho adottato per il mio dbase (quello suggerito da Mimmo) al momento che l'ho provato funziona correttamente ... ma per farmi notare la finezza che suggerisci tu ... devo ben capire cosa succede.

    Grazie Vladimiro

    Luca

    La risposta è stata utile?

    0 commenti Nessun commento