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-07T06:09:10+00:00

    Ciao Mimmo e anche Vladimiro,

    ho seguito si il consiglio di Mimmo che quello di Vladimiro.

    L'osservazione di Vladimiro mi sembra alquanto opportuna per cui ho adottato il seguente codice:

    Private Sub COD_FINAN_BeforeUpdate(Cancel As Integer)

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

        Exit Sub

    End If

        If Not IsNull(DLookup("COD_FINAN", "FINANZIAMENTI", "COD_FINAN='" & Replace(Me!COD_FINAN, "'", "''") & "'")) And Me!COD_FINAN <> Nz(Me!COD_FINAN.OldValue) Then

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

        Cancel = True

        COD_FINAN.SetFocus

        End If

    End Sub

    Per quanto riguarda l'inserimento di un codice finanziamento già presente, il codice funziona VBA correttamente come si può vedere dalla maschera qui sotto:

    quando clicco su ok per chiudere la msgbox mi compare questo messaggio di errore:

    che mi riporta al codice evidenziato

    Dove e cosa ho sbagliato???

    Comunque voglio ringrazia entrambi per l'interessamento su problema da me posto.

    Buona giornata

    Luca

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2018-08-06T20:47:12+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

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2018-08-06T17:23:55+00:00

    ciao Mimmo

    ho corretto il codice così come indicato da te in questo modo:

    Private Sub COD_FINAN_BeforeUpdate(Cancel As Integer)

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

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

       End If

        COD_FINAN.SetFocus

    End Sub

    Il codice funziona bene fino alla msgbox …

    non funziona per il set focus! Vorrei che una volta cliccato ok sulla msgbox il cursore si riposizioni sul campo COD_FINAN dopo averlo pulito

    Come posso risolvere?

    Grazie Mimmo

    Luca

    La risposta è stata utile?

    0 commenti Nessun commento