Newsgroup: it.comp.appl.access
Titolo: [NOVIZIO] Maschera. Da Northwind: NomeSocietà con relativi NomeProdotto

Dal db di Nortwind.
---
Su una maschera ho: 
una 'CasellaCombinata' associata al campo NomeSocieetà della tabella
Clienti
ed 
una 'Casella di Riepilogo' che è vuota.
---
Vorrei che al variare del nome della società nella 'CasellaCombinata',
la 'Casella di Riepilogo' si popolasse 
con il piccolo elenco dei prodotti
relativi alla società apparsa nel 'CasellaCombinata' che essa ha acquistato
(da prendersi ovviamente dala campo Prodotti.NomeProdotto).
---
Ho messo nel Origine del controllo della 'Casella di Riepilogo'
questo codice ottenuto con Genera espressioni:
SELECT [Prodotti]![NomeProdotto] 
FROM prodotti 
WHERE «Espr» [Prodotti]![IDProdotto] = [Dettagliordini]![IDProdotto]
AND [Dettagliordini]![IDOrdine] = [Ordini]![IDOrdine]
AND [Ordini]![IDCliente] = [Clienti]![IDCliente]
AND [Clienti]![NomeSocietà] = [CasellaCombinata1] 
che non sortisce effetto.
Dopo un' ora di tentativi ho lasciato andare.
---
Qualcuno mi dice come si deve fare?
Michele

 Michele
Co'è quell' <<Espr>> che ancora appare nell'istruzione SQL?
-- 
***********
NEMO2K
***********
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Michele
-- 
Roberto
-----------------------------------------------------
il Sito Comune di it.comp.appl.access
http://www.sitocomune.com
----------------------------------------------------

 Michele
Indicativamente:
La tua Casella combinata prenderà i valori dalla tabella Clienti
attraverso una query, suppongo.
La tua Casella di riepilogo avrà come Tipo origine riga una Tabella/Query.
Non metterei nulla su Origine riga per il momento.
Creerei una query sulla Tabella prodotti: nei criteri del campo associato
al cliente scriverei: 
Like ("*" & [Forms]![TuaForm]![NomeCasellaCombinata] & "*").
A questo punto sull'evento "Dopo Aggiornamento" della Casella combinata
inserirei il seguente codice:
Me.TuaCasellaRiepilogo.RowSource = "TuaQuery"
-- 
TANNHAUSER
"I've seen things you people wouldn't believe..."



Nella WHERE
visto che i NomeSocietà non sono direttamente relazionati ai Prodotti,
ma si deve passare attraverso due tabelle (Ordini e DettaglioOrdini)
che fanno da ponte, 
con il generatore di espressioni ho pensato di ripercorrere all'indietro
con le uguaglianze degli ID di tabella in tabella (Da Prodotti fino a .....
Clienti)
la strada per assicurarmi, alla fine, la relazione  NomeProdotto  e
NomeSocietà (passando appunto per le tabelle ponte).
Questo voleva essere il significato di quello che ho fatto.
Perchè è spuntato <<Espr>> non lo so,  ho usato il generatore di
espressioni


Come detto sopra è venuto fuori provando ad usare
il gen di espressioni (ovviamente ho premuto dove non dovevo premere);
facevo delle uguaglianze di ID... (vedi post precedente)


Ho fatto una Query (la ha fatta Access, cioè), essa è "Queri1" :
SELECT Prodotti.NomeProdotto, Dettagliordini.IDProdotto, Ordini.IDOrdine,
Clienti.IDCliente, Clienti.NomeSocietà
FROM Prodotti 
INNER JOIN ((Clienti 
INNER JOIN Dettagliordini ON Clienti.IDCliente = Dettagliordini.IDOrdine) 
INNER JOIN Ordini ON (Ordini.IDOrdine = Dettagliordini.IDOrdine) AND
(Clienti.IDCliente = Ordini.IDCliente)) ON Prodotti.IDProdotto =
Dettagliordini.IDProdotto
WHERE (((Prodotti.NomeProdotto) Like
([Forms]!Maschera1![CasellaCombinata0])));
la ho lanciata nel DopoAggiornamento della CasellaCombinata con
Me.Elenco2.RowSource = "Queri1"
ma mi la casella di riepilogo non mi si popola.
Perche'?
----------------------
Ne ho provata anche qualcun'altra, 
questa presa da una mia vecchia query di tre giorni fa, fatta per altri
scopi e ha sortito qualcosa, ma ora vedo troppi campi:
con la Casella di riepilogo messa a tre colonne 
(per NomeSocietà, DataOrdine,NomeProdotto)
ho lanciato questa vecchia "vecchiaQueri" (che nacque in
automatico con Access)
SELECT [Clienti].[NomeSocietà], [Ordini].[DataOrdine],
[Prodotti].[NomeProdotto]
FROM Prodotti 
INNER JOIN ((Clienti 
INNER JOIN Ordini ON [Clienti].[IDCliente]=[Ordini].[IDCliente]) 
INNER JOIN Dettagliordini ON
[Ordini].[IDOrdine]=[Dettagliordini].[IDOrdine]) ON
[Prodotti].[IDProdotto]=[Dettagliordini].[IDProdotto]
WHERE ((([Clienti].[NomeSocietà])=[Forms]![Maschera1]!CasellaCombinata0))
nel DopoAggiornamento della CasellaCombinata così:
Me.Elenco2.RowSource = "vecchiaQuery"
Ora la Casella riepilogo è popolata, ma io vorrei vedere solo la colonna
(la terza) relativa al NomeProdotto, e non riesco a non far comparire le
prime due che non mi servono. Come faccio?

 prime due che non mi servono. Come faccio?
Nelle proprietą della casella di riepilogo imposta a 0 la larghezza delle
colonne che non vuoi che appaiono (ad esempio, se la tua query restituisce
10 colonne e tu non vuoi vedere la 1, 2 e 8 imposta la larghezza a
0;0;x1;x2;x3;x4;x5;0;x6;x7 dove le x. sono le larghezze in cm delle
colonne che vuoi vedere).
-- 
***********
NEMO2K
***********


 espressioni
-- 
