Aggiornare casella combinata togliendo i valori gia' stati usati

di il
9 risposte

Aggiornare casella combinata togliendo i valori gia' stati usati

Ciao,
una curiosità in una maschera ho una casella combinata
vorrei che fosse dinamica,
vorrei che quando vado ad aggiungere un record mi aggiorni la lista con i valori che non sono ancora stati utilizzati per quel campo

mi spiego
casella combinata associata ad un id

i valori nella tabella sono
1
2
3

i valori che ho gia' utilizzato nei record della tabella sono 1 e 2

come posso far visualizzare solo il valore 3 nella selezione della casella combinata quando vado ad inserire un nuovo record?

qualche idea?

9 Risposte

  • Re: Aggiornare casella combinata togliendo i valori gia' stati usati

    Non capisco l'utilità di una cosa del genere. Considera che una casella combinata generalmente è soggetta ad accettare MOLTI valori uguali. Prima di tentare di darti una risposta "alla lettera", vorrei che tu ci riflettessi.
  • Re: Aggiornare casella combinata togliendo i valori gia' stati usati

    Ciao Osvaldo,

    asilo nido semplificando con tre tabelle

    tblBimbi
    id_Bimbo pk
    cognome
    nome

    tblEducatori
    id_Educatore pk
    cognome
    nome

    tblAbbattimenti
    id_Bimbo fk
    id_Educatore fk
    importo

    relazioni 1 a N

    ad oggi c'e' solo un educatore che puo' avere degli abbattimenti
    nel futuro invece la situazione potrebbe evolversi ed ho previsto per questo la tabella di appoggio tblAbbattimenti

    ho una maschera collegata ad una query
    da qui posso inserire e modificare gli abbatimenti con

    una casella combinata dove scelgo l'educatore (in realta' filtrata con i critieri e bloccata sull'unica scelta dell'educatore)
    una casella combinata dove scelgo il bambino

    vorrei prevenire il messaggio della violazione della chiave (che quindi un utente inserisca due volte il bambino creando un nuovo campo che e' gia' esistente)
  • Re: Aggiornare casella combinata togliendo i valori gia' stati usati

    ocrot ha scritto:


    la tabella di appoggio tblAbbattimenti
    Tecnicamente si dice "tabella di congiunzione" (o tabella ponte, dall'inglese bridge table). In genere per "tabella di appoggio", almeno qui nel forum, intendiamo un'altra cosa.

    ocrot ha scritto:


    vorrei prevenire il messaggio della violazione della chiave (che quindi un utente inserisca due volte il bambino creando un nuovo campo che e' gia' esistente)
    Non credo che quello che hai richiesto sia la soluzione migliore. Non sono certo di darti una risposta "congrua"/"corposa", ma immagino che con un codice VBA potresti memorizzare il valore dell'ultimo inserimento, quindi impostare il valore "successivo", come avresti prospettato. Però a me non quadra il fatto del l'id_bambino=3 in quanto valore mai inserito prima. Tu stai parlando di un id_bambino già esistente nella tabella Bambini, ma mai inserito in tblAbbattimenti. Tieni presente che questo modo di gestire il database, con dati già esistenti nella tabella "madre", può andar bene "all'inizio" quando il database è (per così dire) "acerbo" di dati. Generalmente nella casella combinata id_bambino tu digiti il valore, e se questo non c'è, gestisci l'evento "Non in elenco" (NotInList).
    Pensi ne valga la pena di creare quel codice VBA?
  • Re: Aggiornare casella combinata togliendo i valori gia' stati usati

    OsvaldoLaviosa ha scritto:


    ocrot ha scritto:


    la tabella di appoggio tblAbbattimenti
    Tecnicamente si dice "tabella di congiunzione" (o tabella ponte, dall'inglese bridge table). In genere per "tabella di appoggio", almeno qui nel forum, intendiamo un'altra cosa.

    ocrot ha scritto:


    vorrei prevenire il messaggio della violazione della chiave (che quindi un utente inserisca due volte il bambino creando un nuovo campo che e' gia' esistente)
    Non credo che quello che hai richiesto sia la soluzione migliore. Non sono certo di darti una risposta "congrua"/"corposa", ma immagino che con un codice VBA potresti memorizzare il valore dell'ultimo inserimento, quindi impostare il valore "successivo", come avresti prospettato. Però a me non quadra il fatto del l'id_bambino=3 in quanto valore mai inserito prima. Tu stai parlando di un id_bambino già esistente nella tabella Bambini, ma mai inserito in tblAbbattimenti. Tieni presente che questo modo di gestire il database, con dati già esistenti nella tabella "madre", può andar bene "all'inizio" quando il database è (per così dire) "acerbo" di dati. Generalmente nella casella combinata id_bambino tu digiti il valore, e se questo non c'è, gestisci l'evento "Non in elenco" (NotInList).
    Pensi ne valga la pena di creare quel codice VBA?
    ciao
    tbl_Bambino ---> 1 a molti tbl_Educatori
    tbl_Educatori ---> 1 a molti tbl_Abbattimenti
    tbl_Abbattimenti bridge table ---> molti a molti con tbl_Bambino e tbl_Educatori

    tbl_Bambino
    id_Bambino pk

    tbl_Educatori
    id_Educatore pk

    tbl_Abbattimenti
    id_Bambino fk
    id_Educatore fk
    importo

    e' corretto che un id_bambino gia' esistente in tblBambini ancora non sia inserito in tblAbbattimenti
    perche' non tutti gli id_bambino hanno un abbattimento

    non è corretto gestire cosi' il database? un bambino puo' o non puo' avere degli abbattimenti

    ottima la dritta per l'evento notinlist, me lo studio e vedo se possibile adattarlo
  • Re: Aggiornare casella combinata togliendo i valori gia' stati usati

    La tabella madre tblBambini non è obbligata ad avere tutti i propri record associati a tblAbbattimenti.
  • Re: Aggiornare casella combinata togliendo i valori gia' stati usati

    OsvaldoLaviosa ha scritto:


    La tabella madre tblBambini non è obbligata ad avere tutti i propri record associati a tblAbbattimenti.
    quindi se ben comprendo potrebbe essere questa la soluzione?

    tbl_Bambino ---> 1 a molti tbl_Educatori_Abbattimenti

    tbl_Bambino
    id_Bambino pk
    id_Educatore

    tbl_Educatori_Abbattimenti
    id_Educatore pk
    id_Bambino pk e fk
    importo

    ma in questo caso non posso avere un Educatore senza avere un id_bambino collegato
  • Re: Aggiornare casella combinata togliendo i valori gia' stati usati

    No. La struttura precedente va bene. Succede che su 10 bambini in tblBambini, 7 hanno un educatore associato in tblAbbattimenti. La tblAbbattimenti avrà 7 record. Gli altri 3 bambini sono regolarmente tracciati in tblBambini, ma non compariranno nella tblAbbattimenti. Stop.
  • Re: Aggiornare casella combinata togliendo i valori gia' stati usati

    Ssssuper grazie!
    poi pero' dipende dal join delle tabelle sulla query
  • Re: Aggiornare casella combinata togliendo i valori gia' stati usati

    Dipende da cosa vuoi vedere nella query:
    A) Se vuoi vedere i soli bambini associati a tblAbbattimenti, lasci il join come sta (tipo 1).
    B) Se vuoi vedere tutti i bambini indistintamente se associati o meno a tblAbbattimenti il join nella query deve diventare di tipo 2.
Devi accedere o registrarti per scrivere nel forum
9 risposte