Dlookup e campo in una maschera

di il
9 risposte

Dlookup e campo in una maschera

Buongiorno a tutti,
sto muovendo i primi passi con Access e mi trovo con un problema che non riesco ad inquadrare. Provo a spiegare.
Ho una tabella (Tabella_inserimento) con tre campi:
[Barcode]
[Codice]
[Quantità]
Ho una tabella collegata in sola lettura (Tabella_linkata) in ODBC con i campi:
[Barcode] e [Codice] (ogni barcode ha assegnato univocamente un codice).

Ho infine una form (Maschera_inserimento) che deve andare a scrivere i valore immessi in Tabella_inserimento con le seguenti regole:
Inserisco il [Barcode] e tramite un Dlookup mi restituisce il [Codice] prelevandolo da Tabella_linkata
OPPURE, se non è disponibile il [Barcode] (e qui mi sono fermato..)
inserisco il [codice]

Per ambedue i casi sopra
inserisco la [Quantità]

Non so quindi come gestire il campo [Codice] nella form Maschera_inserimento con le due possibilità in modo che comunque il lavore immesso o "dlokuppato" siano scritte nel campo [Codice] della Tabella_inserimento.
Vi ringrazio per l'aiuto che vorrete darmi.

9 Risposte

  • Re: Dlookup e campo in una maschera

    Perché hai una tabella che si chiama Tabella_inserimento? In genere le tabelle riportano nomi coerenti con i dati che li contengono.
    Ho il sospetto che ci siano problemi di normalizzazione e che molto probabilmente il tutto si risolverebbe più elegantemente sfruttando opportune relazioni.
  • Re: Dlookup e campo in una maschera

    Grazie per l'osservazione OsvaldoLaviosa.
    L'ho chiamata Tabella_inserimento per non avere problemi con eventuale codice SQL.
    La tabella è coerente nel senso che dovrà contenere tutto quanto verrà inserito tramite la maschera.
  • Re: Dlookup e campo in una maschera

    Premesso che continuo ad avere forti dubbi sulla normalizzazione del tuo database, ma i campi Barcode e Codice a cosa fanno riferimento? C'è qualche altra tabella (gerarchicamente superiore) che li alimenta? Se sì, puoi descrivere i nomi campi?
  • Re: Dlookup e campo in una maschera

    C'è una sola tabella ed è Tabella_inserimento.
    I campi Barcode e Codice nella Tabella_inserimento vengono immessi a mano
    La tabella collegata in ODBC serve solamente per la dlookup sul valore immesso di [Barcode] che restituisce [codice]
  • Re: Dlookup e campo in una maschera

    Correggimi se sbaglio: [Barcode] e [Codice] fanno riferimento a una stessa entità (Articolo, Bene, Prodotto...possiamo dargli un nome più proprio?). Perché avere 2 campi?
  • Re: Dlookup e campo in una maschera

    Immagina di andare al supermercato, un oggetto (p.es una scatola di pelati) è identificato da il proprio barcode (univoco) e dal proprio codice (univoco).
    Ovvero un oggetto ha il proprio barcode e il proprio codice che sono collegati.
    Tuttavia l'oggetto DEVE avere un codice ma può non avere il barcode.
  • Re: Dlookup e campo in una maschera

    Per me nella Tabella_Inserimento devi avere un solo campo (magari sfrutti una casella combinata) che mostri solo il "campo più conveniente"...mi pare di capire che Barcode è più rapido con la pistola, mentre Codice va digitato a mano.
    Perché non hai una tabella Prodotti con i campi:
    IDProdotto
    Barcode
    Codice

    o più semplicemente

    Codice
    Barcode

    Scegli tu quale campo deve essere "chiave primaria", poi relazioni Prodotti uno-a-molti Tabella_Inserimenti.

    Per risolvere il tuo problema Barcode o Codice da "inserire", credo che dovresti giocare con un codice VBA che ti cambi alcune proprietà "cruciali" della casella combinata...ma prima di andare oltre, vorrei che tu comprendessi tutti questi aspetti che ho descritto.
  • Re: Dlookup e campo in una maschera

    Ti ringrazio delle indicazioni ma non sono approdato a nulla.
    Che dovessi arrivare a scrivere del codice l'avevo già intuito ma, probabilmente, il mio problema è troppo astratto per una "rapida" soluzione.
    Vedrò di leggermi qualche libro a riguardo magari partendo dalla normalizzazione.
  • Re: Dlookup e campo in una maschera

    Dragonlance ha scritto:


    OMESSO...

    Ho infine una form (Maschera_inserimento) che deve andare a scrivere i valore immessi in Tabella_inserimento con le seguenti regole:
    Inserisco il [Barcode] e tramite un Dlookup mi restituisce il [Codice] prelevandolo da Tabella_linkata
    OPPURE, se non è disponibile il [Barcode] (e qui mi sono fermato..)
    inserisco il [codice]

    Per ambedue i casi sopra
    inserisco la [Quantità]

    Non so quindi come gestire il campo [Codice] nella form Maschera_inserimento con le due possibilità in modo che comunque il lavore immesso o "dlokuppato" siano scritte nel campo [Codice] della Tabella_inserimento.
    Vi ringrazio per l'aiuto che vorrete darmi.
    Buonasera,
    a volte quello che manca è proprio il passaggio logico tra un'operazione e l'altra...come effettui gli inserimenti nella maschera_inserimento?
    - Scrivi il [barcode] oppure lo inserisci mediante lettore di codi a barre?
    - il "dlokuppamento"lo fai mediante pressione di un pulsante quando hai già inserito il codice, oppure hai inserito la funzione nella proprietà "valore predefinito" del controllo che ha l'origine dati nel campo [codice]...
    - è il [barcode] che non c'è fisicamente nel prodotto (un prodotto senza codice a barre???) oppure è il [codice] ad esso associato che non viene trovato nella tabella cui punta il dlookup?
    - oppure hai adottato una strategia differente da quelle sopra?

    In base al modo in cui interagisci con il form vi sono diverse possibili soluzioni...
    io farei cosi:
    1) Maschera_inserimento basata su tabella_inserimento;
    2) Calcolo del valore del campo [codice] su chiamata ---> ovvero esecuzione di dlookup su pressione pulsante che processa il [barcode] del record corrente e, in particolare, se trova una corrispondenza restituisce il codice... se non la trova restituisce N/D e magari ti chiede di inserire un nuovo codice...
Devi accedere o registrarti per scrivere nel forum
9 risposte