Newsgroup: it.comp.appl.access
Titolo: inserire varianti su ordinazioni pietanze cucina

Buonasera,
A2003 vorrei implementare sul programmino per comande sagra che ho sviluppato ,anche grazie ai vostri  suggerimenti, la possibilità di aggiungere delle varianti alle pietanze (ES  ben cotta, abbondante prosciutto,- mozzarella,ecc).
per la visualizzazione degli ordini uso una maschera in visualizzazione Foglio Dati che ha come origine questa query:
SELECT OrdiniDettaglio.IdOrdine, Pietanze.IdTipoPietanza, Pietanze.IdPietanza , Pietanze.PrzPietanza, OrdiniDettaglio.PrzPietanzaOrdi, OrdiniDettaglio.PrzListinoOrdi, OrdiniDettaglio.NumPietanza, Pietanze.NomePietanza, OrdiniDettaglio.Sequenza, (OrdiniDettaglio!PrzListinoOrdi*OrdiniDettaglio!NumPietanza) AS ImportoListino, (OrdiniDettaglio!PrzPietanzaOrdi*OrdiniDettaglio!NumPietanza) AS Importo
FROM TblVarianti, DatiOrdini INNER JOIN (Pietanze INNER JOIN OrdiniDettaglio ON Pietanze.IdPietanza = OrdiniDettaglio.IdPietanza) ON DatiOrdini.IdOrdine = OrdiniDettaglio.IdOrdine
ORDER BY OrdiniDettaglio.Sequenza;
Ho poi creato2 tabelle 
TblVarianti che contiene i dati delle varianti
TblVariantiOrdini con un campo Sequenza relazionato molti a 1 con il campo OrdiniDettaglio.Sequenza, dove inserisco i record delle varianti presenti negli ordini.
Nella maschera ordini vorrei ottenere questa visualizzazione
2	pizza margherita	5,50	11,00
1	pizza capricciosa	7,00	7,00
	+capperi
	ben cotta
	-prosciutto
1	panino			3,00	3,00	
Ci ho provato anche inserendo una listbox ,ma non ho nessuna idea di come uscirne,anche data la mia scarsa esperienza .
Qualcuno mi puoi aiutare e indirizzare sulla retta via ?
Grazie

 
 
tralasciando come hai strutturato il tutto, se vuoi ottenere quel tipo 
di visualizzazione dove ad ogni pietanza fai seguire una serie di 
aggiunte/rimozioni userei una query di unione tra la tabella delle righe 
delle ordinazioni e la tabella che per ogni riga della ordinazione 
contiene le aggiunte stabilinendo un ordinamento tale da avere sempre 
per ogni riga di ordinazione subito dopo tutte le relative aggiunte
 
semplificando al massimo ho fatto una bozza. vedi qui
 
 
http://it.tinypic.com/r/1441ocm/9
 
 
 
 
ciao
BFS
 
 
 
 

 Ci ho provato anche inserendo una listbox ,ma non ho nessuna idea di come uscirne,anche data la mia scarsa esperienza .
 
aggiungo qualche osservazione, sperando si rivelino suggerimenti 
 
e faccio una (la solita) premessa:
realizzo procedure piuttosto limitate 
e quindi posso arrivare a suggerimenti limitati
(quando ci arrivo ...)
 
l' argomento è di mio interesse per due motivi:
1) vi si ritrovano i termini di una "gestione della produzione"
con attenzioni alla personalizzazione sotto forma di richiesta varianti 
(è una cosa che mi si presenta con le schede prodotto di capi abbigliamento)
2) qualche mese fa era apparso un post praticamente uguale,
e il ripetersi della questione mi dà occasione di una riflessione aggiuntiva
 
allora:
LASCIO DA PARTE (considerandola effettuata) la registrazione dei prodotti 
("cibi a catalogo": potrebbe anche essere fatta dai soli nomi e prezzi ...)
 
e mi soffermo sulle ordinazioni evidenziando due (eventuali) scopi:
-- "personalizzazione" del prodotto
(oppure, che quasi è la stessa cosa, "enfasi" sul frequentatore)
-- situazione di "street food"
(le variazioni proposte vengono considerate valide "dalla casa" 
che metterà a catalogo quel prodotto ...)
 
quindi la registrazione degli ordini può avvenire così:
 
-ordineTestata 
(tabella Master di ordineRighe)
mi sembra sia la "descrizione del tavolo",
con gli attributi necessari (numero, data, ora ...)
 
-ordineRighe 
(tabella Detail di ordineTestata, E Master di ordineRigheDiciture)
c'è il riferimento a tabella Testata,
c'è il riferimento a tabella Prodotti,
alcuni campi "propri":
quantità, PREZZO (modificabile dopo le variazioni ?), FREQUENTATORE
 
 
-ordineRigheDiciture ("funziona come un blog")
(tabella Detail di ordineRighe)
c'è il riferimento a tabella ordineRighe,
alcuni campi "propri":
dicitura, tipoRiga E numeroRiga 
QUESTI ULTIMI DUE per scopi di stampa e gestionali
 
Esempio:
tipoRiga "blog" (diciture inserite dal tavolo)
         --> numeroRiga in ordine (da codice: confermare currentRecord ?)
tipoRiga "gestione" (diciture "preparate" con scopo gestionale)
         --> numeroRiga ALTO (prestabilito, superiore al numero teorico blog)
 
scopi gestionali:
-le variazioni richieste fanno variare ANCHE il prezzo ...
-le variazioni richieste sono da esaminare dai "tecnici" (cuochi)
perchè possono far generare un nuovo prodotto ...
-le variazioni richieste, unite al riempimento del campo FREQUENTATORE,
possono far riproporre l'ordinazione (fidelizzazione) ...
-il FREQUENTATORE è un VIP (magari del luogo) e ce ne faremo pubblicità ...
 
 
a questo punto la difficoltà (forse) maggiore è quella di costruire 
una form di registrazione dati a subform "dipendenti"
(oggettivamente più adeguata allo scopo rispetto al foglio dati indicato)
 
mentre avvalendosi della struttura gerarchica delle tabelle
e dei numeri ordinali presenti nelle righe diciture
si possono preparare i report riassuntivi delle ordinazioni per il tavolo
e i report di avviso a scopo gestionale interno
 
 
 

mi scuso per il ritardo ,ma sono preso con il lavoro
Grazie a tutti per le risposte
X BFS
Ho provato a adattare la query union alle tabelle presenti e  questo è il codice:
Select Sequenza,0 as Posizione,NomePietanza,numPietanza From OrdiniDettaglio
UNION ALL select Sequenza ,VarianteSeq,VarianteNome ,0 from OrdiniVarianti
ORDER BY Sequenza, Posizione;
quando lancio la query mi da errore:
L'espressione ORDER BY(Sequenza) include campi non selezionati dalla query.Solo i campi richiesti nella prima query possonoi essere inclusi in un'espressione ORDER BY
Il campo Sequenza è presente nella tabella.
cosa sto sbagliando ?
per il resto (come ho strutturato Il tutto)come posso modificare ?
grazie
Ciao
Maurizio

 per il resto (come ho strutturato Il tutto)come posso modificare ?
 
per quanto detto da parte mia:
 
Credo che un inserimento dati a subform annidate risolva la situazione
(pur NON avendo MAI adoperato subform annidate ...)
 
e ritaglio, semplificandola per lo scopo, 
la struttura dati già prospettata: 
 
-ordineTestata 
(tabella Master di ordineRighe) 
mi sembra sia la "descrizione del tavolo", 
con gli attributi necessari (numero, data, ora ...) 
 
-ordineRighe 
(tabella Detail di ordineTestata, E Master di ordineRigheVarianti) 
c'è il riferimento a tabella Testata, 
c'è il riferimento a tabella Prodotti, 
alcuni campi "propri": 
quantità, PREZZO (modificabile dopo le variazioni), ordinante 
 
-ordineRigheVarianti ("funziona come un blog") 
(tabella Detail di ordineRighe) 
c'è il riferimento a tabella ordineRighe, 
alcuni campi "propri": 
dicitura(-->"variante"), numeroRiga 
 
NOTE:
-lascia perdere (per ora ?) gli "scopi gestionali" prima indicati
 
-subform annidate:
come detto NON le adopero come tali, 
ma penso si debba costruire per prima quella terminale
(in questo caso quella con ordineRighe e ordineRigheVarianti)
e poi inserire questa in quella superiore
(in questo caso ordineTestata)
 
-varianti (diciture come le ho chiamate io):
in teoria NON è necessaria una tabella che le raccoglie
(listaVarianti), è sufficiente una combo che mostra, 
raggruppate, quelle già registrate.
Comunque è una buona prassi tenere la lista in una tabella
(e aggiungere direttamente da codice dalla combo il nuovo valore)
 
NOTA PERSONALE: per come vengono registrate,
queste "varianti" NON sono, in pratica, varianti del prodotto
ma "aggiunte" della rigaOrdine
(E' scopo gestionale farle diventare varianti del prodotto,
e allora può essere necessario il tipoVariante) 
 
- il prezzo della rigaOrdine è un campo calcolato
(come è un campo calcolato l'importo totale dell'ordine del tavolo)
 
- i numeri Riga sono autonumber progressivi
 
Procedendo in questo modo mi sembra proprio
che la "semplice" registrazione (e il suo richiamo)
"spiattelli pari pari" i piatti ordinati ...
(anche se un report, a strutturazione identica, sarebbe più indicato)

Buonasera,
mi scuso per la risposta tardiva,ma ho potuto dedicare pochissimo tempo allo sviluppo dell'applicazione.
Sono finalmente arrivato al risultato voluto usando una query union come suggerito da BFS,  soluzione che ho poi usato anche per i report Scontrino e Comanda.
Ho preferito questa soluzione rispetto a quella suggerita da GiorgioDaPrato,che ringrazio comunque tantissimo,in quanto volevo iniziare a approcciare le query union.
Grazie ancora a tutti