Elenco casella combinata da campo maschera

di il
24 risposte

Elenco casella combinata da campo maschera

Salve

Ho un problema che non riesco a risolvere/capire.

Access 2021

Ho una maschera Ordini con sottomaschera RigheOrdine.

Nella maschera Ordini seleziono un Fornitore caricando il campo IDfor dalla tabella Fornitori tramite una combobox e fino qui tutto OK.

Nella sottomaschera ho un altra combobox Materiale che preleva i dati dalla tabella Materiali (dove vi è un campo IDFor che associa il materiale al fornitore) nella quale vorrei avere solo i materiali relativi al fornitore selezionato in Ordini, e qui inizia il problema.

Io di solito filtravo i dati per la combobox mettendo come criterio della query origine dati della combo nel campo IDFor:

[Maschere]![Ordini]![IDFor]

Vi metto anche l'SQL della  query per chiarezza

SELECT TMateriali.IDMat, TMateriali.Descr
FROM TMateriali
WHERE (((TMateriali.IDFor)=[Maschere]![Ordini]![IDFor]))
GROUP BY TMateriali.IDMat, TMateriali.Descr;

ma non funziona, ossia mi seleziona correttamente i materiali solo la prima volta a tabella Ordini completamente vuota (contatore azzerato) e poi non più, l'elenco nella combo non cambia mai anche cambiando fornitore, Ho provato a fare il requery/refresh/Recalc dell maschera ma niente da fare l'elenco non cambia.

Qualcuno ha un'idea del perché ciò accada?

Grazie 1K per l'help

24 Risposte

  • Re: Elenco casella combinata da campo maschera

    Da quale evento fai partire l'aggiornamento?

  • Re: Elenco casella combinata da campo maschera

    Non so darti una risposta.

    Seleziono il fornitore nella maschera Ordini e poi seleziono il Materiale nella sottomaschera, non so a quale evento ti riferisci.

    Ho provato un ulteriore opzione, creando una query che mi estrae il Materiale in base al Fornitore attivo in Ordini e da sola funziona, ma se la associo alla combo non funziona più, fa lo stesso problema sopra indicato.

    SQL della Query

    SELECT TMateriali.IDMat, TMateriali.Descr, TMateriali.um, TMateriali.Prezzo, TMateriali.Util, TMateriali.IDFor
    FROM TMateriali
    WHERE (((TMateriali.IDFor)=[Maschere]![Ordini]![IDFor]));
    
  • Re: Elenco casella combinata da campo maschera

    02/03/2024 - Ren ha scritto:


    Non so darti una risposta.

    penso che allora sarà difficile darti un aiuto

  • Re: Elenco casella combinata da campo maschera

    Mostra i controlli che hai nella maschera.

  • Re: Elenco casella combinata da campo maschera

    Quindi:

    Ordini: idordine; blabla; idfirnitore;

    Fornitori: idfornitore; blabla;

    Atricoli; idarticolo; blabla; idfornitore;

    Ordini > fornitore (pippo)

    Aricoli: select * from aricoli where idfornitore=pippo

    Pippo puoi prenderlo dalla stessa combobox usata per ordini.

    Where idfornitore=combobox

    02/03/2024 - Ren ha scritt

    02/03/2024 - Ren ha scritto:


    ma non funziona, ossia mi seleziona correttamente i materiali solo la prima volta a tabella Ordini completamente vuota (contatore azzerato) e poi non più, l'elenco nella combo non cambia mai anche cambiando fornitore, Ho provato a fare il requery/refresh/Recalc dell maschera ma niente da fare l'elenco non cambia.

    02/03/2024 - Ren ha scritto:


    ma non funziona, ossia mi seleziona correttamente i materiali solo la prima volta a tabella Ordini completamente vuota (contatore azzerato) e poi non più, l'elenco nella combo non cambia mai anche cambiando fornitore, Ho provato a fare il requery/refresh/Recalc dell maschera ma niente da fare l'elenco non cambia.

  • Re: Elenco casella combinata da campo maschera

    aaa03/03/2024 - Antony73 ha scritto:


    Mostra i controlli che hai nella maschera.

    Origine dati Combo IDMat in RigheOrdine

  • Re: Elenco casella combinata da campo maschera

    Metti una join a materiali con righeordini  su idfornitore. visto che non hai un link diretto con fornitori

    Select * from materiali innerjoin righeordini on materiali.idfornitore=righeordini.idfornitore

    Where righeordini.idfornitore=combo bla bla…

    Letto con più attenzione non dando nulla per scontato, spero di non aver omesso nulla…

    Stai selezionando la lista dei materiali ma come fai a inserirli sulle righe? Materiali è un'isola collegata solo con fornitori. Ti manca la relazione righe (m) materiali (m).

    A meno che non usi una query per inserire le righe ignora la select precedente.

    Creati la relazione tra materiali e righeordini.

    Corretto…

  • Re: Elenco casella combinata da campo maschera

    Come mai non usi un id ordine?

  • Re: Elenco casella combinata da campo maschera

    02/03/2024 - Ren ha scritto:


    ossia mi seleziona correttamente i materiali solo la prima volta a tabella Ordini completamente vuota (contatore azzerato)

    Questa non la capisco. Che significa “ a tabella ordini completamente vuota”. Poi contatore di che?

  • Re: Elenco casella combinata da campo maschera

    Altra cosa che davo per ovvia e mi è sfuggita…

    Righeordinini è collegata con una chiave composta alla master (ordini). Usa un id e togli come chiave anno e nr che non ha senso…

    Troppe cose strane.

    Rifai le tabelle oer come giusto fare.

    Metti le relazioni e lancia il wizard che fai prima.

  • Re: Elenco casella combinata da campo maschera

    03/03/2024 - sihsandrea ha scritto:


    Come mai non usi un id ordine?

    03/03/2024 - sihsandrea ha scritto:


    Altra cosa che davo per ovvia e mi è sfuggita…

    Righeordinini è collegata con una chiave composta alla master (ordini). Usa un id e togli come chiave anno e nr che non ha senso…

    Troppe cose strane.

    Rifai le tabelle oer come giusto fare.

    Metti le relazioni e lancia il wizard che fai prima.

    L'ID Ordine è N. ordine (NO) e anno (Anno) che è quello che voglio avere sul report di stampa dell'ordine. Il NO lo incremento da codice e si azzera ogni anno nuovo.

    Ora provo a fare come dici tu e ti faccio sapere.

    Grazie

  • Re: Elenco casella combinata da campo maschera

    03/03/2024 - Antony73 ha scritto:


    02/03/2024 - Ren ha scritto:


    ossia mi seleziona correttamente i materiali solo la prima volta a tabella Ordini completamente vuota (contatore azzerato)

    Questa non la capisco. Che significa “ a tabella ordini completamente vuota”. Poi contatore di che?

    Significa che cancello manualmente dati di prova inseriti nelle tabelle, e Compatto e Ripristino il DB per azzerare i contatori (campo chiave primaria con numerazione automatica).

  • Re: Elenco casella combinata da campo maschera

    03/03/2024 - Ren ha scritto:


    03/03/2024 - sihsandrea ha scritto:


    Come mai non usi un id ordine?

    03/03/2024 - sihsandrea ha scritto:


    Altra cosa che davo per ovvia e mi è sfuggita…

    Righeordinini è collegata con una chiave composta alla master (ordini). Usa un id e togli come chiave anno e nr che non ha senso…

    Troppe cose strane.

    Rifai le tabelle oer come giusto fare.

    Metti le relazioni e lancia il wizard che fai prima.

    L'ID Ordine è N. ordine (NO) e anno (Anno) che è quello che voglio avere sul report di stampa dell'ordine. Il NO lo incremento da codice e si azzera ogni anno nuovo.

    Ora provo a fare come dici tu e ti faccio sapere.

    Grazie

    Puoi sempre inserire nr e data ma non da usare come chiave.

    Comsidera che la chiave primaria diventa chiave esterna per le righe e li non ti servono data e nr ordine.

  • Re: Elenco casella combinata da campo maschera

    03/03/2024 - Ren ha scritto:


    Compatto e Ripristino il DB per azzerare i contatori (campo chiave primaria con numerazione automatica).

    Sei sicuro che compattando e ripristinando il db azzeri i contatori. E pure che fosse a che prò?

    Cmq ci sono un po' di cose strane a mio parere.

Devi accedere o registrarti per scrivere nel forum
24 risposte