Come usare la macro per controllare se un record esista già

di
Anonimizzato13427
il
7 risposte

Come usare la macro per controllare se un record esista già

Ciao a tutti,
sto cercando di far funzionare una linea di codice in access ma con scarso successo.

In pratica ho una maschera(ITEMS) dove è possibile inserire il nome del supplier di un particolare articolo. Sto cercando di usare una macro che mi permetta di controllare se il nome del supplier che si vuole registrare nella maschera (ITEMS) esiste già nella tabella "Suppliers". Se non esiste, allora la macro mostra un messaggio per chiedere all'utente se vuole aggiornare la tabella "suppliers", aggiungendo le info del nuovo supplier.

Su internet ho visto che si può usare come espressione condizionale nella macro il comando:
IsNull(DlookUp... ecc...
tuttavia non riesco a farlo funzionare
ho provato la seguente sintassi:

IsNull(DLookUp("[Supplier Name]","Suppliers","[Supplier Name]='" & [Forms]![ITEMS]![SupplierName] & "'"))

Praticamente con questo codice vorrei dire: "guarda il "Supplier Name" nella tabella "Suppliers" che è uguale al "SupplierName" della maschera ITEMS appena aggiunto. E dimmi se lo trovi.

tuttavia qualcosa non va perché quando cerco di aggiornare la maschera ITEMS aggiungendo il nuovo supplier mi spunta il messaggio "type mismatch".


dov'è che sbaglio nel codice??
Spero che possiate aiutarmi

7 Risposte

  • Re: Come usare la macro per controllare se un record esista già

    Innanzitutto fai un po' di confusione con i termini tecnici. Tutte quelle sintassi che tu chiami "codice" non sono codice, nè linee di Visual Basic, si chiamano "espressioni" che puoi compilare tanto manualmente quanto con il "generatore di espressioni".

    Il tuo problema è abbastanza comune e non capisco perchè lo stai complicando con tutte le espressioni che hai indicato. Tu hai un semplice problema, dalla maschera Items, di voler selezionare Supplier con una casella combinata. Tale campo con casella combinata, generalmente ha una relazione Supplier uno-a-molti con Items. Quando un Supplier non c'è, si può sfruttare l'evento "Non in lista" (o il clic di un Pulsante a parte) per aprire la maschera Suppliers, aggiornarla e far ritornare il nuovo valore nella maschera Items. Non ho capito quale scopo vorresti raggiungere con le espressioni che avresti proposto.
  • Re: Come usare la macro per controllare se un record esista già

    Ciao, grazie mille per la tua risposta che mi ha permesso di risolvere il mio problema! La questione è che sto imparando da autodidatta ad usare access, ma ho diverse lacune (e talvolta cercare la soluzione su internet può essere fuorviante).

    In questo caso non sapevo bene come usare la casella combinata... che risolve perfettamente problemi del genere.

    Adesso avrei un altro piccolo problema, vorrei far aprire (da una macro per esempio) una maschera solo se la maschera ha dati (solo se non è vuota). E' possibile fare qualcosa del genere?
  • Re: Come usare la macro per controllare se un record esista già

    Chiamiamo la maschera da aprire M_X e la tabella sottostante X. Si tratta di controllare il numero dei record esistenti in X sfruttando la funzione:
    DCount("*";"X";"")
    Questa espressione restituisce un valore numerico che corrisponde al numero di record esistenti in X. Puoi condizionare la azione ApriMaschera: M_X con la condizione:
    DCount("*";"X";"")>0
  • Re: Come usare la macro per controllare se un record esista già

    Capisco la tua idea e nel mio caso la mia maschera fa riferimento ad una query.

    In pratica nella macro ho messo come azione "openform" (apri-maschera). Ho inserito il nome della maschera e nel campo "where condition" ho inserito la tua espressione.

    Quindi ho sostituito "X" con il nome della query nell'espressione, ma access mi restituisce un messaggio d'errore dicendo che la sintassi non è corretta.
  • Re: Come usare la macro per controllare se un record esista già

    Non devi mettere l'espressione DCount nella condizione WHERE, ma nella colonna Condizioni accanto all'azione ApriMaschera.
  • Re: Come usare la macro per controllare se un record esista già

    Ho provato anche lì ma mi da lo stesso errore Allego l'errore che mi da e uno screenshot di come ho inserito l'espressione
    Allegati:
    screenshot2
    screenshot2

    Screenshot
    Screenshot
  • Re: Come usare la macro per controllare se un record esista già

    Come non detto, ora funziona. Ho aperto prima la form in modalità nascosta e poi ho aggiunto quell'azione con l'espressione. grazie mille!
Devi accedere o registrarti per scrivere nel forum
7 risposte