Newsgroup: it.comp.appl.access
Titolo: adp su msde e report con stored procedure parametrica (?)

Buongiorno a tutto il ng, e come sempre... grazie per i vostri
preziosissimi post! :o)
Devo fare una cosa che sembrava semplice ma... mi sono persa.
Partendo da un form in cui seleziono da due combo anno e mese come
interi (i mesi come value list 1;"Gennaio";2;"Febbraio"... e gli anni
come SELECT DISTINCT TOP 10 Anno_Doc
FROM tblOrdini_T ORDER BY Anno_Doc DESC dove Anno_Doc è un intero) e
tipo di report con un radio button (ma sono simili, fatto uno fatti
tutti! :o) ) devo arrivare a un report che, per fini statistici, mi
mostri le quantità di prodotti ordinati (per tutti i prodotti che
hanno almeno una delle 4 quantità valorizzate) raggruppati per
fornitore in una griglia con
prodotto | descrizione | QtMeseSelezionatoAnno Selezionato |
QtFinoAlMeseSelezionatoAnnoSelezionato |
QtMeseSelezionatoAnnoPrecedente | QtFinoAlMeseSelezionatoAnnoPrecedente
se dovessi calcolare una singola quantità sarebbe facile, es mese
corrente:
SELECT @qt1 = SUM (tblOrdini_C.QT), tblOrdini_C.Codice,
tblOrdini_C.Descrizione, tblOrdini_T.C_Mandante
FROM tblOrdini_C INNER JOIN tblOrdini_T ON tblOrdini_C.Id_Doc =
tblOrdini_T.Id_Record
WHERE (MONTH(tblOrdini_T.Data_Doc) = @mese) AND
(YEAR(tblOrdini_T.Data_Doc) = @anno)
per calcolare la quantità FINO al mese corrente:
WHERE (MONTH(tblOrdini_T.Data_Doc) <= @mese) AND
(YEAR(tblOrdini_T.Data_Doc) = @anno)
e così via.
Il problema è che non so come concatenare le select con diverso where
nella sp per arrivare all'output che mi serve.
oppure forse qualcosa del tipo
select codice, descrizione, (select sum(quantita) from...) as
quantitamese, ...
from ...   ?
Certa di NON essermi spiegata, c'è qualcuno che mi legge nel pensiero
e mi indica la via? :o)
Ciao!
manuela

 ha scritto nel messaggio
news:1139833088.2...@g43g2000cwa.googlegroups.com...








Ciao!
manuela
Ciao manuela,
Non so se ho capito bene la domanda comunque
ti propongo questa:
SELECT  DISTINCT codice, descrizione,
    (SELECT sum(quantita) FROM table_ordini
    WHERE Year(DataOrdine) = year(getdDate()) AND
                    Month(DataOrdine) = Month(getDate()) AND
                    TableOrdini.IDProdotto  = TP.IDProdotto)  ) as
quantitamese,
    (SELECT sum(quantita) FROM table_ordini
    WHERE Year(DataOrdine) = year(getdDate()) AND
                    Month(DataOrdine) <= Month(getDate()) AND
                    TableOrdini.IDProdotto  = TP.IDProdotto)  ) as
quantitaFinomese,
   SELECT sum(quantita) FROM table_ordini
    WHERE Year(DataOrdine) = year(getdDate())-1 AND
                    Month(DataOrdine) = Month(getDate()) AND
                    TableOrdini.IDProdotto  = TP.IDProdotto)  ) as
quantitameseAnnoPrecedente,
   (SELECT sum(quantita) FROM table_ordini
    WHERE Year(DataOrdine) = year(getdDate())-1 AND
                    Month(DataOrdine) <= Month(getDate()) AND
                    TableOrdini.IDProdotto  = TP.IDProdotto)  ) as
quantitaFinomeseAnnoPrecedente,
FROM   Tbl_prodotti as TP INNER JOIN Table_ordini ON
            tbl_Prodotti.idProdotto=tbl_ordini.IDProdotto
WHERE tbl_Ordini.Quantita > 0 AND Year(DataOrdine) >= Year(getDate())-1
Ovviamente dovrai sitemare nomi di campi e di tabelle....
Ciao
-- 
Cinzia
---------------------------------------
|  
http://www.riolab.org
  |
---------------------------------------

Ciao Cinzia, ancora una volta... grazie!!! :o)
Sembra proprio quello che cercavo di fare!!!
Ho anche qualche dubbio su come utilizzare questa sp e passare i suoi
parametri di output nel report... faccio qc prova/ricerca e ti faccio
sapere!
Grazie ancora, sei sempre gentilissima!!!
Manuela

Ciao!
Quello che cercavo di fare era:
CREATE PROCEDURE spCalcolaQuantita
	(
		@anno int,
		@mese int
	)
AS
	SET NOCOUNT ON
SELECT  DISTINCT C.Codice, C.Descrizione, T.C_Mandante,
    (SELECT SUM(QT) FROM tblOrdini_C sc INNER JOIN tblOrdini_T st ON
sc.Id_Doc = st.Id_Record
   WHERE MONTH(st.Data_Doc) = @mese AND YEAR(st.Data_Doc) = @anno AND
sc.Id_Doc = C.Id_Doc) AS QT1,
   (SELECT SUM(QT) FROM tblOrdini_C sc INNER JOIN tblOrdini_T st ON
sc.Id_Doc = st.Id_Record
   WHERE MONTH(st.Data_Doc) <= @mese AND YEAR(st.Data_Doc) = @anno AND
sc.Id_Doc = C.Id_Doc ) AS QT2,
   (SELECT SUM(QT) FROM tblOrdini_C sc INNER JOIN tblOrdini_T st ON
sc.Id_Doc = st.Id_Record
   WHERE MONTH(st.Data_Doc) = @mese AND YEAR(st.Data_Doc) = @anno - 1
AND sc.Id_Doc = C.Id_Doc) AS QT3,
   (SELECT SUM(QT) FROM tblOrdini_C sc INNER JOIN tblOrdini_T st ON
sc.Id_Doc = st.Id_Record
   WHERE MONTH(st.Data_Doc) <= @mese AND YEAR(st.Data_Doc) = @anno - 1
AND sc.Id_Doc = C.Id_Doc) AS QT4
   FROM tblOrdini_C C INNER JOIN tblOrdini_T T ON C.Id_Doc =
T.Id_Record
WHERE C.QT >0
GO
però c'è ancora qc che non va. perchè mi torna anche tutte le righe
con quantità 0 e non riesco a trovare l'errore...
buona giornata!
manuela

 ha scritto nel messaggio
news:1140086097.1...@g43g2000cwa.googlegroups.com...



buona giornata!
manuela
Ciao Manuela,
credo che il problema stia nel fatto che la select principale
SELECT  DISTINCT C.Codice, C.Descrizione, T.C_Mandante,   FROM tblOrdini_C C
    INNER JOIN tblOrdini_T T ON C.Id_Doc = T.Id_Record
WHERE C.QT >0
Non filtra solo gli anni  interessati ma tutti gli anni bisognerebbe
aggiungere (credo) anche la condizione sugli anni
SELECT  DISTINCT C.Codice, C.Descrizione, T.C_Mandante,   FROM tblOrdini_C C
    INNER JOIN tblOrdini_T T ON C.Id_Doc = T.Id_Record
WHERE C.QT >0 And ( YEAR(T.Data_Doc) = @anno  OR  YEAR(T.Data_Doc) =
anno  -1)
Saluti
