Selezionare record su maschera continua per usarli in una query

di il
13 risposte

Selezionare record su maschera continua per usarli in una query

Buonasera,

ricorro ancora a voi portandovi un'altra domanda simpatica...

problema: una ditta di grafica deve approviggionarsi del materiale occorrente per evadere gli ordini e, non avendo magazzino, deve andare dal fornitore per recuperare il necessario per un nr N di ordini da realizzare..

su una maschera continua mostro gli ordini "non chiusi" e con opportuni pulsanti esplodo le lavorazioni interne...(non sono riuscito ad ovviare al problema del raggruppamento per ordine su maschera continua...ma è un altro 3d)...ora se io volessi fare la "lista della spesa" di alcuni ordini visualizzati e non di tutti...come posso raggiungere il mio obiettivo senza modificare le tabelle??? ovvero si può selezionare il record in maschera tramite un controllo non associato e creare quindi un recordset filtrato da usare poi per la query che mi calcola il materiale occorrente???

avevo pensato anche di aggiungere un campo si/no nella query sorgente della maschera...ma volevo sapere come procedereste Voi...

grazie in anticipo per il tempo che mi dedicherete

13 Risposte

  • Re: Selezionare record su maschera continua per usarli in una query

    Si può tutto... ma dipende da come hai strutturato...
    "Lista della spesa" funziona per la moglie... a noi servono dati tecnici...
    Hai una tabella Articoli di Catalogo...?
    Se si hai realizzato una struttra in 3FN con relazione m-m con 3 tabelle...?

    Se non è così gli articoli non sono univoci da catalogo e questo è un grosso limite che richiede l'inserimento per ogni ordine senza avere riferimenti sugli articoli e per questo si può usare una relazione 1-m

    Nel 1° caso crederai una query a 3 tabelle
    Ordini...Dettaglio...Articoli, nserendo co.e criterio la clausola IN sul campo PkOrdine che dovrai.coatruire da codice su Mtiselezione(vediamo poi.come)

    Nel 2° caso la query avrà 2 tabelle
    ORDINI...Dettaglio, sempre inserendo sulla PkOrdini la clauaola IN (val1, val2, ....valN) e da generare sempre da.codice.

    Per la multiselezione hai 2 metodi:
    1) Il più adatto, Listbox in Mtiselezione estesa con 2 colonne, basato su TabellaOrdini con ordini aperti.
    Dopo la multiselezione hai a ricostruire la lista delle PkOrdini selezionate per passarle alla clausola IN.
    Quest a soluzione funziona anche in multiutenza

    2) Devi aggiungere un campo SI/NO nella tabella ordini e lo usi con una checkbox, in questo caso non puoi usarla in MultiUtenza motivo per cui meglio evitarlo, ma ti basterebbe inserire il criterio Checked=True nella query.

    Un esempio del primo metodo lo trovi qui:
    http://forum.masterdrive.it/access-79/listbox-selezione-multipla-estesa-per-filtrare-form-73537/

    Il tutto è da studiare.
  • Re: Selezionare record su maschera continua per usarli in una query

    @Alex ha scritto:


    Si può tutto... ma dipende da come hai strutturato... a noi servono dati tecnici...
    Per CicciusPrime, descrivi dettagliatamente:
    - nomi propri di tutte le tabelle che entrano in gioco
    - nomi propri di tutti i loro campo con indicazione della chiave primaria
    - le relazioni
    - nomi propri di maschere e query indicando su quali tabelle poggiano e quali campi mostrano
    - rispiega quello che devi fare usando i nomi propri

    In alternativa ai primi 3 punti puoi allegare una immagine della Finestra Relazioni.
  • Re: Selezionare record su maschera continua per usarli in una query

    Queste le ralazioni:
    nuoverelazioni.png
    nuoverelazioni.png

    la foto è vecchia perchè è su un altro pc il db...ma la struttura è rimasta invariata tranne le chiavi della tblPrezzi che ho dovuto modificare lasciando solo IDPrezzo PK

    per quanto riguarda la struttura dovrei essere in 3fn o qlc vicina...comunque con delle M-M tra ordini - prodotti e prodotti- materiali...

    la lista della spesa è in realtà la sommatoria della quantità dei materiali raggruppata per idmateriale necessarie per i prodotti ordinati...
    Esempio: ordinati 30 gadget da taglio laser e 40 scatoline di carta (sempre intagliate al laser) deve restituirmi 4 tavole 60x40 di compensato(materiale) e 10 fogliA4 carta 180gr (materiale)...

    premesso che potrei lanciare la query per la lista dei materiali puntando il where su ordini.IDstato(ancora in lavorazione) la richiesta originaria era proprio poter selezionare gli ordini che voglio mettere effettivamente in lavorazione scegliendoli (e qui la vs esperienza) dalla maschera continua di riepilogoordini dove vengono elencati solo gli ordini con i propri attributi (id,progressivo,dataordine,dataconsegna,fkcliente,idstato,prezzototale)

    Ancora da implementare una similgestione di magazzino con un campo in tabella materiali sull'effettiva presenza di una quantità ( ...ma questo è un altro 3d) che gestirei da codice con l'aggiornamento di questo campo dopo l'inserimento del prodotto in ordine.
  • Re: Selezionare record su maschera continua per usarli in una query

    Ho visto ora l'esempio della listbox per filtrare la form...

    io filtro già la maschera su idstato e cliente tramite altri pulsanti e combobox.. originariamente avevo anche filtrato per prodotto ma in quel modo dovevo ogni volta cambiare il recordsource visto che la maschera continua non visualizza il prodotto ma solo l'ordine..

    ad ogni modo pensavo di selezionare tramite spunta i record (ordini) in maschera e successivamente (presumo tramite codice) avere il report dei materiali occorrenti per i prodotti che sono agganciati a quegli ordini selezionati...

    Esiste un controllo maschera (non associato a un campo tabella) che mi consenta di individuare nel recordset della maschera quelli spuntati?... alex facevi riferimento a una proprietà checked=true
    ma ti basterebbe inserire il criterio Checked=True nella query.
    ...

    potresti spiegarmi meglio questo passaggio? potrebbe essere quello che ho scritto prima o stiamo parlando di criterio del campo tabella SI/NO...
  • Re: Selezionare record su maschera continua per usarli in una query

    Dovendo usare Maschere CONTINUE, altrimenti cade tutta la questione, non puoi usare controlli NON ASSOCIATI, e per questo motivo suggerivo l0aggiunta di un Campo [Si/No] o Boleano in Tabella Dettagli al fine di popolare una Maschera Associata con Controllo CheckBox... ed usarlo per la Selezione.
    Questo tuttavia impone una Gestione di RESET dei Campi una volta usato... altrimenti ti ritrovi dei problemi.
    Per questo motivo ti suggerivo l'uso più semplice ed agevole di una ListBox.

    Vedi tu...
  • Re: Selezionare record su maschera continua per usarli in una query

    https://www.iprogrammatori.it/forum-programmazione/access/utilizzo-casella-controllo-per-selezione-righe-maschera-t29679.html

    qui ho trovato la risposta che mi darai...

    cerco di organizzarmi con una listbox su idordine che sia però richiamata da pulsante (maschera popup e gestisco poi il lancio del report da codice)... non voglio incasinare la maschera di riepilogo
  • Re: Selezionare record su maschera continua per usarli in una query

    @Alex ha scritto:


    Dovendo usare Maschere CONTINUE, altrimenti cade tutta la questione, non puoi usare controlli NON ASSOCIATI, e per questo motivo suggerivo l0aggiunta di un Campo [Si/No] o Boleano in Tabella Dettagli al fine di popolare una Maschera Associata con Controllo CheckBox... ed usarlo per la Selezione.
    Questo tuttavia impone una Gestione di RESET dei Campi una volta usato... altrimenti ti ritrovi dei problemi.
    forse è la soluzione che più si avvicina alla mia esigenza...anche se non è quella piu semplice...il db sarà multiutenza (3 utenti) devo studiarmi bene il reset del campo quando ho stampato il report...con recordsetclone pensi che possa farlo?... nel senso una volta che ho filtrato per cheched =true posso riutilizzarlo per aggiornare il campo ?

    provo ....
  • Re: Selezionare record su maschera continua per usarli in una query

    Perchè non leggi bene quello che ti viene detto...?
    Non puoi usare il Campo Aggiuntivo con CheckBox se sei in MultiUtenza... l'ho scritto sopra..!!!!!!!
    Ragionaci... mentre ci lavora uno l'altro gli modifica la selezione...?
  • Re: Selezionare record su maschera continua per usarli in una query

    Posso aggirare il problema della modifica contemporanea impostando un blocco(optimistic/pessimistic)?? magari sullapertura maschera... non saprei...

    ... è realmente difficile (ma non impossibile) che due utenti lavorino lo stesso idordine contemporaneamente....
  • Re: Selezionare record su maschera continua per usarli in una query

    Renderebbe INUTILIZZABILE la cosa...!

    Liberissimo di operare come credi.
  • Re: Selezionare record su maschera continua per usarli in una query

    Perfetto...quindi niente check...si prova con la listbox esterna popup...

    dovrei implementare la selezione da singola a multipla avendo la necessita di scegliere più di un ordine da preparare per la lavorazione....qlc esempio???

  • Re: Selezionare record su maschera continua per usarli in una query

    Ma te l'ho fornito io.... prima... cosa vuoi di più...?
  • Re: Selezionare record su maschera continua per usarli in una query

    @Alex ha scritto:


    Ma te l'ho fornito io.... prima... cosa vuoi di più...?
    chiedo venia... leggendo ho capito che dovevo usare il ctrl+clic per la multiselezione in listbox...

    ora devo solo adattarlo alle mie esigenze...

    Grazie come sempre per la disponibilità...
Devi accedere o registrarti per scrivere nel forum
13 risposte