Newsgroup: it.comp.appl.access
Titolo: Problemi con filtraggio dati in query SQL

Ciao a tutti scusate se insisto ma non riesco ad uscirne.Ho una query
e' chiamata Qr_Numbollepercliente nel campo IDCliente ha
nei criteri ha il seguente criterio :
[Forms]![Maschera inserimento fatture]![ID Cliente].
Praticamente dalla form fatture io vedo le bolle che dovro' inserire
in fatt.Lo scopo della mia richiesta e' di creare una sorta di
raggruppamento con il filtro del form.Perche' come ho detto sopra se
ad esempio voglio inserire in fattura la bolla 1 la quale e' composta
da tre voci (records) io possa vedere solo il primo per poterlo
flaggare.Il problema non e' il flag.In quanto flaggando la prima voce
si flaggano tutti.Il problema e' che se devo scegliere le bolle da
inserire in fattura e ogni bolla ha 20 voci per passare dalla 1 alla
bolla 3 devo fare una buona "scrollata".
non so se sono stato abbastanza chiaro.Ovviamente non posso fare una
query di raggrupp. perche' e' vero che mi raggruppa ma non mi
permette
di flaggare per ins la bolla o le bolle in fatt.
Di seguito vi riporto la struttura SQL della query:
SELECT [Tabella bolle prodotti].[ID Cliente], [Tabella bolle
prodotti].Aggiungi, [Tabella descrizione bolle].[Fatturare?],
[Tabella
bolle prodotti].[Num doc], [Tabella bolle prodotti].[Data doc],
[Tabella descrizione bolle].tot, [tot]*[1° Quantita'] AS totcomp,
[Tabella descrizione bolle].Totalenoncod, [Totalenoncod]*[1°
Quantita'] AS Totalecompnoncod, [Tabella descrizione
bolle].Articolo_cod, [Tabella descrizione bolle].Descrizione,
[Tabella
descrizione bolle].[ID descrizione bolla], [Tabella descrizione
bolle].
[ID Num bolla], [Tabella descrizione bolle].[ID cliente], [Tabella
descrizione bolle].articolo, [Tabella descrizione bolle].[1°
Descrizione], [Tabella descrizione bolle].Descrizione_non_cod,
[Tabella descrizione bolle].[1° Quantita'], [Tabella descrizione
bolle].UM1, [Tabella descrizione bolle].Art_cod, [Tabella descrizione
bolle].Rigasingola, [Tabella bolle prodotti].IDnumfattura
FROM [Tabella bolle prodotti] INNER JOIN [Tabella descrizione bolle]
ON [Tabella bolle prodotti].[ID Num  bolla] = [Tabella descrizione
bolle].[ID Num bolla]
WHERE ((([Tabella bolle prodotti].[ID Cliente])=[Forms]![Maschera
inserimento fatture]![ID Cliente]));
Nel precedente post mi hanno dato il consiglio riportato di seguito:
and [Tabella descrizione
bolle].[ID Num bolla] = (SELECT
[Tabella descrizione
bolle].].[ID Num bolla] FROM [Tabella
descrizione bolle] WHERE [Tabella descrizione bolle].[ID descrizione
bolla] = [Tabella bolle prodotti].[ID descrizione bolla])
Ho provato ad inserirlo all'inizio della query e alla fine ma in
entrambi i casi mi da errore di sintassi.
Dove sbaglio??????
Grazie mille
Dino

 ha scritto nel messaggio 
news:c1382224-e45c-404c...@t20g2000yqe.googlegroups.com...

Ciao Dino,
ho capito ben poco della tua richiesta spiegati meglio dal punto di vista di 
cos'hai e a cosa vuoi giungere.
Ad un primo sguardo per� posso dirti gi� che ti conviene cambiare i nomi dei 
campi perch� un campo con il nome [Fatturare?] oppure [1� Quantita'] possono 
creare non pochi problemi.
Ciao
-- 
Roberto da Parma 

 - Mostra testo citato -
Ciao Roby grazie per la risposta.In sostanza quello che ti ho
detto.Lascia stare per un attimo la query SQL.
Cerco di essere piu' sintetico possibile.Come dicevo sopra io ho un
Form dove visualizzo le bolle da inserire in fattura.Se ad esempio la
bolla Num e' cosituita da tre voci,io nel form mi trovero' tre record
entrambi Num 1.E' chiaro che per raggruppare il tutto potri fare una
query di raggrupp.Il problema e' che io devo poter scegliere le bolle
attraverso un flag "Aggiungi".Quindi mi servirebbe filtrare il form in
modo da vedere per ogni bolla solo la prima voce.flaggando poi su
quella automaticamente si selezionerebbero anche le altre.
Penso che la soluzione piu ottimale sia intervenire sul SQL della
query chq e' base dati del form.Giusto???Il problema e' che non so
come.
Dino

 
secondo me, il problema e' che vuoi vedere 'select * from *' nella form 
con la lista bolle e questo ti crea, giustamente, dei problemi.
se vuoi aggiungere l'intera bolla alla fattura, visualizza in lista solo 
la testata di ogni bolla e non tutte le righe di dettaglio.
una riga per ogni bolla e il flag funziona come ti aspetti, senza 
complicazioni.
fermo restando il suggerimento che ti hanno gia' dato: cambia i nomi a 
tabelle e campi, perche' quelli che hai ti creeranno problemi.
dubbio: hai due tabelle separate per testata bolla e dettaglio bolla?
-- 
Paolo opg
BE AWARE that this post uses a fake reply-to address
to contact me write to:
janickg ( at ) hotmail ( dot ) com
--

 - Mostra testo citato -
Sì,come puoi vedere dal SQL ho la "Tabella bolle prodotti" e la
tabella "Tabella descrizione bolle".
Per il resto hai capito benissimo.
Il mio form si deve comportare come una query di raggruppamento,con la
diffrenza che mi possa far modificare i record(nella fattispecie
scegliere con il flal le bolle da inserire)
Dino

 ha scritto nel messaggio 
news:Xns9D43672BFE383sp...@193.43.96.1...

Ciao Dino, cerco di risponderti al meglio...dunque supponiamo che tu abbia 
uno specchietto dove a seconda del cliente ti proponga l'elenco delle bolle 
da fatturare e volendo anche il dettaglio delle bolle.
Fin qui basta che usi una select ... where idcliente = 
[forms]![tuaform]![campoidform]
Aggiungi un campo flag sia nella tabella bolle che in dettaglio_bolle.
Questo ti permette di decidere quali bolle ed eventualmente dettaglio_bolla 
andare a fatturare.
Con un pulsante fai girare una query di accodamento che avrà come 
discriminante il flag.
Spero di aver capito bene.


 
ok, io ho capito benissimo il problema.
tu pero' non dici niente della soluzione che ho proposto.
non l'hai letta, l'hai ignorata, non l'hai capita, e' una caxxata, o...?


 - Mostra testo citato -
Direi che quasi ci siamo.Sei tu che devi portare azienza perche' non
ho molta dimstichezza con le query SQL.
come avrai visto nel codice che ti ho postato c'e' gia' il riferimento
all'ID cliente.Infatti la query che vado ad aprire mi fa vedere solo
le bolle riferite a quel cliente.
Quello che ti chiedo e' dove devo insrire e se devo inserire quelle
righe di codice che mi ha ipostato.Percheì in realta' qundo nel ofrm
in esame io posso flaggare le bolle scelte vedendo solo la prima voce
di ogni bolla ho risolto il mio problrma.Infatti ho gia' la query di
accodamento pronta.
Ciao e grazie.Sono convinto che ormai ci siamo devi solo avere ancora
un po' "di pazienza"
Dino

 Dino
Dino se tu hai gi� l'elenco da cui vuoi ricavare i dati � presto detto fai 
una query di accodamento che prenda solo le bolle "flaggate" e accodi i 
dati.
Ora per� non so cosa posso dirti di pi�, non ho una struttura, non ho i nomi 
delle tabelle, dei campi, delle maschere...quindi non posso entrare pi� 
nello specifico.
Comunque di base se gi� hai i risultati...quello che devi fare � 
semplicemente una query di accodamento.
Non ti riesce quest'ultima? Scrivi quello che riesci e poi posta...vediamo 
se si riesci ad aggiustarla.


 - Mostra testo citato -
Roby grazie per la risposta.La query d iaccodamento che prende solo le
bolle flaggate gia esiste ed e' funzionante.Io non voglio far vedere
al cliente (mentre sceglie le bolle da ins in fattura) tutte le voci
di una bolla ma solo la prima.
Forse non riesco a spiegarmi bene ma il "costrutto" di accodamento e'
gia 
pronto.il
 form dove si scelgono le bolle vorrei che fosse filtrato
in modo tale da poter vedere
solo la riga iniziale di ogni bolla.Per quanto riguarda la query piu'
che postarti SQL non saprei cosa postarti.
Dino

 - Mostra testo citato -
Eccomi qua.Davanti a tutto un dovero "GRAZIE" per la risposta.Ho
capito bene il idscorso dei nomi e non l'ho ignoro (anche se non li ho
ancora cambiati) dissento invece sul tuo discorso dei campi poco
intutivi.Ad ogni modo non sto' dicendo Paolo che non hai capito il mio
problema sono io che non riesco a mettere in pratica il tuo
suggerimento.Secondo te cosa devo aggiungere o modificare come codice
SQL nella query che ti ho èpodtato.E ancora questa query non va bene
(nomi a parte) per il filtraggio che voglio fare io???
Grazie ancora
Dino

 Dino
Dino i nomi delle tabelle, i campi a cui fai riferimento, le 
relazioni...ecco cosa dovresti postare se vuoi che altri possano capire a 
fondo il tuo problema.
Ad ogni modo cosa intendi per "riga iniziale di ogni bolla" ???
Cosa fai vedere al momento??? Quali campi della tua tabella?? Invece di una 
tabella č una query basata su tale tabella??
In ogni caso se la query č origine della tua sottomaschera puoi nascondere o 
far visualizzare i campi che vuoi...la query poi č indipendente dalla tua 
visualizzazione in maschera!
Se ad esempio hai una query con tanti campi nella maschera puoi decidere 
quali fa visualizzare, il tuo problea (se č questo) č presto risolto.


 - Mostra testo citato -
Eccomi anche di qua Roby.
Allora le tabelle in questione sono "Tabella bolle prodotti" e Tabella
"Tabella descrizione bolle"
La relazione "uno a molti2 e' tra la chiave primaria della tab
"Tabella bolle prodotti" cioe' "ID Num bolla" e il campo ID Num
bolla" (realizzato appunto per la relazione) della tab "Tabella
descrizione bolle".
Per riga iniziale bolla intendo :Esempio.Record 1
Num bolla    data bolla    descrizione    prezzo unitario
01                 22/03/10    art1                € 67,00
Record 2
Num bolla    data bolla    descrizione    prezzo unitario
01                 22/03/10    art2                € 58,00
Record3
Num bolla    data bolla    descrizione    prezzo unitario
01                 22/03/10    art3                € 20,00
Quando io apro il form mi vedo i tre record inerenti alla bolla 1
(Cioe' in fattura ci dovranno essere tutte e tre le voci).
Io invece vorrei vedere solo il primo cioe'
Record 1
Num bolla    data bolla    descrizione    prezzo unitario
01                 22/03/10    art1                € 67,00
Flaggando poi su questo ovviamente si selezionerebbero anche gli altri
due.
Come dicevo questo e' importante perche' se ipotizziamo che la bolla
01 invece di tre voci (o records) ne avesse 30 il cliente dovrebbe
cliccare sulla prima voce
e poi per passare alla bolla sucessiva cioe' la 02 due dovrebbe fare
una scrollata di 29 records e così via.
Invece filtrando il cliente vedrebbe solo  e sempre la prima riga (o
records) di ogni bolla. Esempio:
Record 1
Num bolla    data bolla    descrizione    prezzo unitario
01                 22/03/10    art1                € 67,00
Record 2
Num bolla    data bolla    descrizione    prezzo unitario
02                 26/03/10    art12               € 89,00
Record 3
Num bolla    data bolla    descrizione    prezzo unitario
03                 2703/10    art22              € 45,00
E così via
Grazie Roby
Dino

 
devi estrarre solo i dati di testata.
se fai una select solo sulla tabella di testata, ottieni una riga per ogni 
bolla, quello che chiedi.


 --
Grazie Paolo per la risposta.ho risolto proprio adesso.Il trucco era
il DISTINCTROW:
SELECT DISTINCTROW [Num doc], [Tabella bolle prodotti].[ID Cliente],
[Tabella bolle prodotti].[Data doc], [Tabella bolle prodotti].
[Aggiungi]
FROM [Tabella bolle prodotti]
WHERE ((([Tabella bolle prodotti].[ID Cliente])=[Forms]![Maschera
inserimento fatture]![ID Cliente]));
E il gioco e' fatto.
Grazie ancora e.....(devo ancora cambiare i nomi)
Dino

 
hai scritto giusto, e' un trucco.
in bocca al lupo.
