New record filtrato da cbo a cascata

di il
24 risposte

New record filtrato da cbo a cascata

Buongiorno a tutti,

in una maschera con due caselle combinate a cascata attraverso query che scriverò tra poco qui sotto ho un problema nell'inserimento di nuovi record.
Vi spiego cosa dovrebbero fare queste due caselle combinate. Una cbo, che prende i dati dalla tabella an_produttori, mi filtra la seconda cbo, che invece prende i dati dalla tabella an_vigneti, in modo che vengano esposti solo i vigneti del produttore scelto nella prima cbo. A questo punto ho un requery della maschera in modo che vengano esposte le specie solo di quel particolare vigneto di quel produttore. Tutto funziona, ma solo se ci sono già dei dati. Vi scrivo qui di seguito le query che ho utilizzato:

1° cbo (produttore)
SELECT an_produttori.ID, an_produttori.[Nome produttore]
FROM an_produttori
GROUP BY an_produttori.ID, an_produttori.[Nome produttore]
ORDER BY an_produttori.[Nome produttore];
su "dopo aggiornamento" ho un me.cboVigneto.requery

2° cbo(vigneto)
SELECT an_vigneti.ID, [identificativo] & " " & [anno] AS [Id+Anno], an_produttori.ID
FROM an_produttori INNER JOIN an_vigneti ON an_produttori.ID = an_vigneti.ID_produttore
GROUP BY an_vigneti.ID, [identificativo] & " " & [anno], an_produttori.ID, an_vigneti.Identificativo, an_vigneti.Anno
HAVING (((an_produttori.ID)=[Forms]![m_an_specie]![cboProd]))
ORDER BY an_vigneti.Anno;
su "dopo aggiornamento" me.requery

e su "origine record maschera":
SELECT an_specie.ID, an_specie.ID_produttore, an_specie.ID_vigneto, an_specie.Tipologia, an_specie.Allegato, an_specie.Texture, an_specie.Bordi, an_specie.Colore, an_specie.Commento
FROM an_specie
WHERE (((an_specie.ID_produttore)=[Forms]![m_an_specie]![cboProd]) AND ((an_specie.ID_vigneto)=[Forms]![m_an_specie]![cboVigneto]));
Il mio problema è che, filtra correttamente se immetto i dati da tabella, ma non inserisce automaticamente id produttore e id vigneto se vado a creare un nuovo record da maschera.
Non so se ho esposto chiaramente il problema o se servono altre informazioni per capire meglio. In qualsiasi caso naturalmente resto a disposizione

24 Risposte

  • Re: New record filtrato da cbo a cascata

    Devi effettuare l'aggiornamento della specifica casella combinata (che agisce in cascata):
    https://www.fmsinc.com/MicrosoftAccess/Forms/combo-boxes/cascading.html
    http://www.iaccessworld.com/combo-box-value-depends-on-another-combo-box/
  • Re: New record filtrato da cbo a cascata

    Ciao, non è chiaro il problema allora...
    Le due caselle combinate funzionano correttamente, nella seconda vedo i dati filtrati.
    Il problema sta nella creazione di un nuovo record. Non mi va ad inserire automaticamente nella tabella id produttore e id vigneto presi dalle due relative cbo.
  • Re: New record filtrato da cbo a cascata

    Forse devi fare un Requery anche della prima combo. Io però non ho afferrato pienamente tutto lo scenario. Se descrivi tutti i campi di entrambe le tabelle e spieghi il "caso critico" del "nuovo record" con un esempio pratico...si riesce a comprendere meglio il tutto (almeno per me la descrizione SQL delle query non aiuta).
  • Re: New record filtrato da cbo a cascata

    Se può essere utile lascio un sample con produttore e vigneto già precompilati (dati messi a caso, liberi di modificare ahah) qui:
  • Re: New record filtrato da cbo a cascata

    Nello specifico il problema non risiede nelle caselle combinate ma piuttosto nella maschera in quanto hai impostato la proprietà "Immissione dati" ("DataEntry") a Sì (True) con la conseguenza che "all'apertura la maschera visualizza solo un record vuoto":


    PS evidenzio, inoltre, che il tuo DB ha un problema quando si effettua l'operazione di "Compatta e ripristina database strumenti" in quanto si presenta l'errore "Sequenza di confronto selezionata non supportata con il formato di file specificato"; ti consiglio di creare un nuovo database ed importare gli oggetti dal vecchio.
  • Re: New record filtrato da cbo a cascata

    In definitiva come sarebbe da risolvere il problema? Ho messo su false la proprietà "Immissione dati" ma come nell'esempio che ho mandato non vanno i tasti...
  • Re: New record filtrato da cbo a cascata

    Non si comprende di quali tasti parli. Considera che nella maschera, del tuo DB, hai impostato (in base alle proprietà) una serie di vincoli.
  • Re: New record filtrato da cbo a cascata

    Buongiorno, riprendo questo 3D dopo qualche giorno per inattività. Ma il problema persiste.

    Forse non è ancora chiaro il problema. Quando vado a creare un nuovo record non vengono automaticamente inseriti id produttore e id vigneto nella tabella di origine della maschera presenti nelle due cbo che mi filtrano la maschera...

    EDIT: inoltre non funziona nemmeno il tasto modifica...
  • Re: New record filtrato da cbo a cascata

    Credo che prima di tutto debba sistemare correttamente le tabelle, ovvero:
    • impostare correttamente le proprietà, in paticolar modo:
      • Dimensione:
        • nel caso dei campi testo e non accettare sempre passivamente 255
        • nel caso dei campi numericiil tipo nemerico effettivamente necessario e non sempre Intero lungo
      • Richiesto, per evitare che dati importante non siano omessi da parte dell'operatore e non lasciare ala sua discrezione l'immissione
      • Consenti lunghezza zero, nel caso di campi tipo testo per evitare che se i dato è richiesto non permetta di salvare una stringa vuota.
      • Indicizzato, per permettere relazioni corrette con altre tabelle e nel caso di selezione del valore Sì (Duplicati non ammessi) non permettere duplicazione di record.
    • migliorare la Normalizzazione delle tabelle
    Per quanto riguarda la maschera dall'Origine dati deve essere tolto il raggruppamento e manca il dato relativo al Vigneto per poter salvare il record.
  • Re: New record filtrato da cbo a cascata

    Ciao, grazie mille dei consigli. Naturalmente sempre utili.

    Per quanto riguarda la modifica ho risolto, grazie di avermelo fatto notare. Per quanto riguarda la creazione di un nuovo record invece?
  • Re: New record filtrato da cbo a cascata

    Io ho scaricato il tuo database, guardato la Finestra Relazioni, poi:
    1. Ti consiglio di nominare sempre esplicitamente i campi chiave primaria, quindi IDProduttore, IDVigneto.
    2. La tabella Specie presenta un campo IDProduttore inutile che ti crea problemi.
    3. Devi chiarire a te stesso (ma anche a noi non addetti ai lavori) in che relazione stanno Vigneti e Specie.
  • Re: New record filtrato da cbo a cascata

    Qui
    https://www.dropbox.com/s/wohutpykq494zid/B1_New.zip?dl=0
    puoi vedere un esempio di come potresti gestire il progetto, attualmente non è gestibile la parte del laboratorio in quanto dalle tabelle non è chiaro l'obbiettivo che vuoi raggingere.
    Per quanto riguarda i Produttori hai un riepilogo dove puoi ricercare gli stessi in base ad una serie di controlli che sono nell'intestazione della masschera.
    Una volta creato almeno un produttore lo si seleziona e si potranno gestire i Vigneti di sua proprietà.
    Selezionato il Vigneto si potrà gestire la sezione Specie, anche se non ho capito a cosa serve.
    Le varie sottomaschere tramite i vari pulsanti gestiscono la singola maschera di gestione dati.
    I controlli casella combinata permettono di gestire dinamicamente i dati in essa contenuti ovvero se non esiste ti chiede di crearlo se invece selezioni uno esistente ci puoi fare doppio click sopra comunque in entrambi i casi aprirà la relativa maschera di gestione dello stesso.
    Il programma deve essere sempre avviato dalla mGestioneDati.
  • Re: New record filtrato da cbo a cascata

    Ho dato uno sguardo allla maschera in questione.
    Se non sbaglio il produttore e il vigneto sono due cbo non associate e stanno nell'intestazione della maschera.
    Ma se non inserisci anche le txtbox nel corpo associate ai campi produttori e vigneto della tabella, come vuoi che te li scrive?
    Poi magari puoi renderle invisibili e, sfruttando un evento, ci puoi riportare automaticamente i dati dalle due cbo.



    Alex66
  • Re: New record filtrato da cbo a cascata

    Ciao Stifone,

    essendo alle prime armi mi ci va un po' a capire tutto quel codice, ma molto spesso mi escono degli errori di debug quando clicco il tasto per salvare le modifiche e uscire dalle maschere di dettaglio...
    sapresti aiutarmi?

    Quella sarebbe una gestione che mi interesserebbe abbastanza!
Devi accedere o registrarti per scrivere nel forum
24 risposte