Popolamento sottomaschera

di il
7 risposte

Popolamento sottomaschera

Inutile fare premesse da novello...
Ho un db progettato dal sottoscritto funzionante ma non ottimizzato per il caso sotto descritto...vengo al problema:
2 tabelle relazionate 1 a molti; Tabella1= tblInventari; Tabella2= tblDettaglio_Inventari
Campi di tblInventari: ID_Inventario (PK), Data_Inventario
Campi di tblDettaglio_Inventari:ID_Dettaglio_Inventario (PK), ID_Inventario (FK), ID_Prodotto, Qta_Prodotto
ID_Prodotto è una FK presa da una Tabella tblProdotti
Ho creato una Form con subform con le tabelle tblInventari e tblDettaglio_Inventari
Fin quì tutto ok e tutto funziona....ma il problema è che tutte le volte che eseguo un inventario (succede 5/6 volte all'anno) devo ogni volta selezionare l'ID_Prodotto con casella combinata pur essendo sempre gli stessi prodotti per ogni inventario (circa 230 prodotti)...piuttosto lenta come procedura...quindi il mio quesito è che una volta selezionata la data nella maschera Inventario sarebbe opportuno che la sottomaschera tblDettaglio_Inventari mi si popolasse di tutti i Prodotti in ID_Prodotto in modo che vada ad inserire solo le quantità nel campo Qta_Prodotto.
Son quasi sicuro che ci voglia un ciclo...Do Until Eof....in modo da popolare la sottomaschera automaticamente...
qualcuno mi da una dritta almeno dove trovare dove son ben spiegati i cicli in merito al mio problema?
Grazie

7 Risposte

  • Re: Popolamento sottomaschera

    Hai omesso la tabella Prodotti... ma si intuisce.
    Ovviamente dovresti prevedere un Button NUOVO INVENTARIO, e su click caricare in un recordset i prodotti
    Quindi apri un secondo recordset sulla tabella dettagli ed inizi a ciclare il recordset prodotti eseguendo un ADDNEW nel recordset Dettagli ad ogni passaggio.
    Ovviamente dovrai valorizzare IdInventario leggendolo dalla Form dopo aver salvato il nuovo inventario.
    Ad ogni ciclo devi eseguire l'utente.
    Fossi in te inserirei il tutto in una transazione.

    Se non hai dimestichezza con il vba èun lavoro complicato.
  • Re: Popolamento sottomaschera

    Puoi usare anche una "query di accodamento" avente i 230 Prodotti e l'IDInventario evidanziato dalla maschera Inventari. Sebbene la query avrà 2 tabelle non relazionate, l'unico IDInventario ti garantisce un accodamento di 230 record.
  • Re: Popolamento sottomaschera

    Grazie ad entrambi....mi fido del fatto che fare il tutto con vba sia complicato...quindi mi affidero' alla query di accodamento...a dir la verita' ci avevo gia' provato ma non con le tabelle non relazionate...ci provo nella speranza di riuscirci...grazie ancora
  • Re: Popolamento sottomaschera

    Risolto grazie alla query di accodamento con tabelle non relazionate e un pulsante nella maschera frmInventario!!!
    Grazie mille!!!
  • Re: Popolamento sottomaschera

    Mostra il predicato SQL che hai usato vorrei vedere bene come popoli i campi chiave...
    Cosa significa poi che hai risolto con tabelle NON RELAZIONATE...? Questa affermazione è assurda.
  • Re: Popolamento sottomaschera

    @Alex ha scritto:


    Mostra il predicato SQL che hai usato vorrei vedere bene come popoli i campi chiave...
    Cosa significa poi che hai risolto con tabelle NON RELAZIONATE...? Questa affermazione è assurda.
    Per come l'ho suggerita e immagino io si tratta di (visualizzazione struttura query):
    1. Importare le tabelle Inventari e Prodotti (prese così non hanno relazione)
    2. Nella griglia trascinare i campi IDInventario e IDProdotto
    3. In corrispondenza di IDInventario, mettere il criterio [Maschere]![Inventari]![IDInventario]
    4. Trasformare la query in query di accodamento verso DettagliInventari. Accade che, sebbene ci sia il prodotto cartesiano dei valori/record, in questa particolare circostanza IDInventario avrà un solo valore, quindi potrà accodare esattamente 230 prodotti.
  • Re: Popolamento sottomaschera

    Se non ha prima salvato il Nuovo inventario non funziona in quanto non puoi aggiungere lato molti dei records senza il record lato 1... quindi manca un pezzo...
Devi accedere o registrarti per scrivere nel forum
7 risposte