"nascondere" un campo con un altro - Access

di il
10 risposte

"nascondere" un campo con un altro - Access

Buonasera,

sto usando Access 2007 e mi chiedo se è possibile, in una maschera, "nascondere" un campo con un altro, ovvero:

- il campo id_fornitori è un numerico (collegato alla tabella fornitori);
- il campo fornitori è un testo.

se io nella maschera digito un numero nel campo id_fornitori, automaticamente compare il nome del fornitore nel campo "fornitori" e la query si aggiorna di conseguenza (vale anche la relazione contraria, ovvero se scrivo il testo si aggiorna l'id_fornitori).

quello che vorrei fare è porre il campo id_fornitori come non visibile (visibile=False) e coprire il campo fornitori con un qualcosa a scelta (combobox, popoup ecc)--> in pratica quando l'utente apre la maschera compila il form e alla fine sceglie tra la lista di fornitori possibili.

ho provato a convertire il campo testo in combobox o ad aggiungere combobox ma veniva perso il legame con la query, che non si aggiornava più.

10 Risposte

  • Re: "nascondere" un campo con un altro - Access

    Penso che questo thread doveva essere postato nella apposita sezione "Access". Ho già segnalato ai moderatori (può darsi che venga spostato). Intanto provo a rispondere io.
    Per me c'è un qualcosa di cui tu ti sei complicato la vita. Perchè 2 campi che sottointendono lo stesso linguaggio...per poi nasconderne 1? La strategia più pratica/corretta sarebbe quella di 1 campo numerico che deve diventare una "casella combinata" (combobox) tale che il campo associato sia sempre quello numerico ID, mentre quello da visualizzare deve essere testo (Fornitore). Il trucchetto si ottiene con la proprietà sulla casella combinata, Larghezza colonne: 0 cm; 3 cm...ossia la prima colonna sicuramente =0, la seconda sicuramente <>0.
  • Re: "nascondere" un campo con un altro - Access

    Grazie della risposta!,

    communque il problema non sono le colonne, cioè io vedo le colonne nella combobox e le posso pure selezionare, ma una volta fatto la tabella della query associata alla maschera non si aggiorna.

    allego l'immagine delle relazioni.

    su quelle tabelle ho creato una query con le medesime relazioni e come colonne ho messo tutti i dati di "articoli" più il nome fornitore della tabella fornitori e la voce categoria della tabella categoria.

    la maschera basata su tale query, dunque, mi aggiorna quella tabella-query in base ai dati che inserisco. però,una volta inserita la combobx nella voce fornitori oppure id_fornitori, non so come far leggere al sistema il mio click come se ci avessi scritto sopra.

    ho pravato in VB con la dicitura "me.requery" sia per la maschera intera che riferito alla casella testo fornitore (se la combobox è su id_fornitore) ma non ha funzionato!
  • Re: "nascondere" un campo con un altro - Access

    Non vediamo alcuna immagine.
    Non ti seguo. Potresti:
    A) Dire il nome della maschera?
    B) Elencare tutti i campi della maschera?
    C) Quali sono i campi in questione?
    D) Come si chiama la combobox? Da dove va a prendere i dati? Da quale query, cioè come si chiama la query?
  • Re: "nascondere" un campo con un altro - Access

    Non riesco ad allegare l'immagine .

    cmq le tabelle sono:

    -articoli:
    >barcode (numerico - chiave primaria)
    >nome_articolo (testo)
    >id_fornitore (numerico)
    >id categoria (num)

    -fornitori:
    >id_fornitore(contatore - chiave prima)
    >nome_fornitore

    -categoria
    >id_categoria(contat. - chiave prim)
    >nome_categoria

    le relazioni: in pratica ho unito i nomi uguali (id_fornitore da tabella-fornitori con id_fornitori di aritcoli, lo stesso vale per categoria).

    poi, su queste 3 tabelle ho fatto una query che in pratica rispecchia le relazioni. ci sono tutti i campi di articolo più il campo nome_fornitore (da tab-fornitori) e il campo nome_categoria (da tab-caegoria).

    su questa query ho creato una maschera con tutti i campi della query:
    barcode
    articolo
    id_fornitore
    id_categoria
    nome_fornitore
    nome_categoria

    ora, se io lascio tutto com'è, funziona: inserendo i dati nella maschera, questi vengono correttamente registrati nella tabella-query .

    io però non voglio scrivere ogni volta il nome del fornitore (figuriamoci metterci l'id) ma vorrei selezionarlo da una lista (combobox).
    ho provato a cliccare col destro sulla casella di testo "nome_fornitore" e selzionare "converti in">combobox.
    da qui ho cambiato l'origine dati combobx in modo da far comparire la lista. ora però la combobx è completamente dissociata dalla maschera. cioè una volta selezionato il valore non succede niente.
  • Re: "nascondere" un campo con un altro - Access

    Tu hai una maschera che poggia su una query. Una query svolge una funzione soprattutto di VISUALIZZAZIONE e quasi mai di input dati. Perchè pretendi di fare ciò?
  • Re: "nascondere" un campo con un altro - Access

    OsvaldoLaviosa ha scritto:


    Tu hai una maschera che poggia su una query. Una query svolge una funzione soprattutto di VISUALIZZAZIONE e quasi mai di input dati. Perchè pretendi di fare ciò?
    ehm...

    sono alle prime armi col programma e cercavo di avere una mega tabella in cui inserirci i nuovi dati in arrivo (merce in arrivo), su cui fare ricerche dati (sugli articoli in magazzino) e da cui eliminare dati (merce venduta)......

    ovvero non voglio 1000 tabelle da compilare una alla volta e poi unirle con una query per ricercare dati....mi serve, appunto, una mega tabellona (fatta di tante tabelle piccole e vuote) in moda inserire il tutto una volta sola e poi da li vanno direttamente alle tabelline piccole.

    (scusate il linguaggio da bambino ritardato ma mi manca il lessico specifico)
  • Re: "nascondere" un campo con un altro - Access

    Cerca di fare un reset di tutto quello che hai scritto/organizzato finora. Probabilmente il discorso ora si incanala meglio in questa sezione "Progettazione database".
    Le 3 tabelle che hai descritto "potrebbero" andare bene. Dico potrebbero perchè (solo tu puoi saperlo meglio) solitamente Articoli e Fornitori sono in relazione molti-a-molti. Un Fornitore fornisce molti Articoli: qui ci siamo. Ma può capitare che lo stesso Articolo sia fornito da molti Fornitori. Potresti chiarire questo aspetto?

    denial ha scritto:


    sono alle prime armi col programma e cercavo di avere una mega tabella in cui inserirci i nuovi dati in arrivo (merce in arrivo), su cui fare ricerche dati (sugli articoli in magazzino) e da cui eliminare dati (merce venduta)......
    Questo è un discorso che va affrontato in maniera più ampia. Le 3 tabelle che hai descritto sono insufficienti.

    denial ha scritto:


    ovvero non voglio 1000 tabelle da compilare una alla volta e poi unirle con una query per ricercare dati....mi serve, appunto, una mega tabellona (fatta di tante tabelle piccole e vuote) in moda inserire il tutto una volta sola e poi da li vanno direttamente alle tabelline piccole.
    Per quanto ti sei espresso un po' grossolanamente, ma almeno avresti centrato l'idea che non si devono compilare troppe tabelle quando queste raccontano le stesse cose. Quest'ultimo passaggio del tuo dilemma si incanala nel discorso della NORMALIZZAZIONE, ossia la coerente organizzazione delle tabelle, senza commettere errori di ripetizioni/ridondanze e tanto altro ancora.
    L'input dati su più tabelle va reso in maniera organica. Invece di perdersi in mega-query che riuniscono troppi campi da troppe e inutili tabelle, si lavora preferibilmente con le maschere/sottomaschere...
    Mi fermerei qui...attendo una tua pausa di riflessione...
  • Re: "nascondere" un campo con un altro - Access

    Mmmm ok.

    1) TABELLE
    per il momento mi sembra che il sistema tabelle funzioni. la relazione articolo-fornitori è del tipo uno-a-molti: un fornitore ha molti articoli ma ho deciso di impostare il sistema in modo che ogni articolo abbia uno e un solo fornitore.

    2) INSUFFICENZA TABELLE: purtroppo sono le uniche tabelle che ho.

    3) QUERY, MASCHERE E SOTTO MASCHERE: mmmh, questo mi fa riflettere molto. la query prende dati dalle sole 3 tabelle che ho mettendole in relazione...così da poter fare ricerche a "tutto campo" ovvero in base al barcode, al nome, al fornitore, alla categoria ecc....però ora ci rifletto su e provo il discorso maschere e sotto/maschere.
  • Re: "nascondere" un campo con un altro - Access

    Con le 3 attuali tabelle puoi:
    1) Sapere se un Prodotto ce l'hai o non ce l'hai, ma non la Quantità
    2) Riguardo il discorso di inserire un Fornitore in Prodotti con un meccanismo il più semplice/automatico/intuitivo possibile, ritorno a suggerire una casella combinata "ben congeniata". La casella combinata puoi costruirla sia in tabella Prodotti, sia in maschera Prodotti. Se quest'ultima la costruisci con procedura guidata, erediterai tutte le proprietà della tabella (Prodotti) sottostante.

    La query che avevi progettato, con i campi IDFornitore e Fornitore, idem IDCategoria e Categoria (te ne bastava uno solo)...non serviva a molto.

    Quello che immagino a te torni utile in futuro, sarebbe la compilazione di una eventuale tabella Fatture con DettagliFatture. Dentro DettagliFatture potresti prevedere un campo Barcode. In questo campo, con un colpo di pistola-barcode inserisci automaticamente tutte le altre informazioni Prodotto (incluso IDFornitore).
    Però non vorrei andare troppo oltre.
  • Re: "nascondere" un campo con un altro - Access

    OsvaldoLaviosa ha scritto:


    Con le 3 attuali tabelle puoi:
    1) Sapere se un Prodotto ce l'hai o non ce l'hai, ma non la Quantità
    2) Riguardo il discorso di inserire un Fornitore in Prodotti con un meccanismo il più semplice/automatico/intuitivo possibile, ritorno a suggerire una casella combinata "ben congeniata". La casella combinata puoi costruirla sia in tabella Prodotti, sia in maschera Prodotti. Se quest'ultima la costruisci con procedura guidata, erediterai tutte le proprietà della tabella (Prodotti) sottostante.

    La query che avevi progettato, con i campi IDFornitore e Fornitore, idem IDCategoria e Categoria (te ne bastava uno solo)...non serviva a molto.

    Quello che immagino a te torni utile in futuro, sarebbe la compilazione di una eventuale tabella Fatture con DettagliFatture. Dentro DettagliFatture potresti prevedere un campo Barcode. In questo campo, con un colpo di pistola-barcode inserisci automaticamente tutte le altre informazioni Prodotto (incluso IDFornitore).
    Però non vorrei andare troppo oltre.
    Grandissimo!!! ho risolto il problema iniziale della combobox: origine controllo e origine riga sono due valori distinti, io ne ponevo uno e cancellavo l'altro

    e la soluzione che hai proposto tu, ovvero un'unica tabella e delle combobx è geniale: ho rifatto tutto e ora funziona lo stesso ma è tutto molto più snello (non sai il macello di tabelle, query e maschere che avevo prima, mi ci stavo perdendo pure io!!!)

    grazie mille a tutti!!!
Devi accedere o registrarti per scrivere nel forum
10 risposte