Newsgroup: it.comp.appl.access
Titolo: Aiuto! Query nulla. Urgente!

Ho un problema con una query che seleziona da una tabella dei dati in 
base a dei parametri passati e deve fare una somma dei valori relativi.
Primo problema la query nn restituisce niente.
Secondo ho provato con l'istruzione iif(isnull [Campo con la somma], 0, 
[campo con la somma]) ma nn cambia niente stesso risultato
terzo credo che il problema sia che nella tabella nn ci sono dati 
relativi ai due criteri però ho bisogno che la query mi restituisca 
comunque il valore zero.
come posso fare?
grazie a chiunque mi possa aiutare!!!

 wrote in message
MPG.17d5a2602...@News.CIS.DFN.DE...

Se ci posti il codice SQL della query, ci aiuti a darti una mano, quindi ti
aiuti.
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

> "bb1x80" [...]:

    No SQL? No Reply!
    Ovvero: come si fa a risponderti se non ci fai vedere la query?
    Qualche considerazione pero' la si puo' fare egualmente.
    Hai scritto:
        iif(isnull [Campo con la somma], 0, [campo con la somma])
ma siamo sicuri che hai veramente scritto cosi' nel tuo codice? Perche' se
e' scritto cosi' non puo' funzionare e, se non hai scritto cosi'...
Cappio!... Copia/Incolla no?!
    Osserva come e' definita la:
        Function IsNull(Expression) As Boolean
            Membro di VBA.Information
chiara la sintassi? Poi a proposito di:
        Function IIf(Expression, TruePart, FalsePart)
            Membro di VBA.Interaction
(ri)leggi le Osservazioni della guida:
"IIf valuta sempre sia truepart che falsepart, anche se restituisce uno solo
dei due valori. Per tale ragione, è opportuno prevedere la possibilità di
effetti indesiderati. Se, ad esempio, la valutazione di falsepart
restituisce un errore di divisione per zero, verrà generato un errore anche
se expr è True."
    Ed ora considera l'esistenza di:
        Function Nz(Value, [ValueIfNull])
            Membro di Access.Application
che dovrebbe risolvere alcuni tuoi problemi.
--
Ciao :-)
Maurizio
--------
?SPQR(C)
 X
--------

ho provato così
SELECT DatiCompetitori.IDClasseProdotto, DatiCompetitori.Anno, 
iif(isnull(Sum(DatiCompetitori.Value)), 0, Sum(DatiCompetitori.Value)) AS 
Totale, DatiCompetitori.IDCliente
FROM DatiCompetitori
GROUP BY DatiCompetitori.IDClasseProdotto, DatiCompetitori.Anno, 
DatiCompetitori.IDCliente
HAVING (((DatiCompetitori.IDClasseProdotto)=828) AND 
((DatiCompetitori.Anno)=[a]-2) AND ((DatiCompetitori.IDCliente)=[idc]));
e così
SELECT DatiCompetitori.IDClasseProdotto, DatiCompetitori.Anno, 
Sum(DatiCompetitori.Value) AS Totale, iif(isnull(Totale), 0, (Totale)) AS 
Tot, DatiCompetitori.IDCliente
FROM DatiCompetitori
GROUP BY DatiCompetitori.IDClasseProdotto, DatiCompetitori.Anno, 
DatiCompetitori.IDCliente
HAVING (((DatiCompetitori.IDClasseProdotto)=828) AND 
((DatiCompetitori.Anno)=[a]-2) AND ((DatiCompetitori.IDCliente)=[idc]));

SELECT DatiCompetitori.IDClasseProdotto, DatiCompetitori.Anno, 
Sum(Nz(DatiCompetitori.Value;0)) AS Totale, DatiCompetitori.IDCliente
FROM DatiCompetitori
GROUP BY DatiCompetitori.IDClasseProdotto, DatiCompetitori.Anno, 
DatiCompetitori.IDCliente
HAVING (((DatiCompetitori.IDClasseProdotto)=828) AND 
((DatiCompetitori.Anno)=[a]-2) AND
((DatiCompetitori.IDCliente)=[idc]));
Vincenzo Turturro
---------------------------------------------
il sito comune di it.comp.appl.access:
http://www.sitocomune.com/
---------------------------------------------
E quello di it.comp.as400:
http://www.faq400.com/
---------------------------------------------

 ((DatiCompetitori.IDCliente)=[idc]));
grazie comunque ma nn funziona credo che il problema sia nel fatto che nn 
esiste l'[idc] che mi serve con IDClasseProdotto=828.
 

 wrote in message
MPG.17d5a2602...@News.CIS.DFN.DE...

Ho riletto con più attenzione questo messaggio e gli altri altri due tuoi
messaggi: una query non potrà mai restituirti il valore per una somma di
record che non sono stati selezionati, neppure il valore zero.
Con una query di raggruppamento puoi ottenere la somma di Value solamente di
record che esistono, e non vedo come potrebbe essere altrimenti.


 record che esistono, e non vedo come potrebbe essere altrimenti.
quindi nn ho possibilità!!! 
grazie 1000 lo stesso

 di record che esistono, e non vedo come potrebbe essere altrimenti.
    Giusto. Ma, se riesce a venirne fuori vivo coi suoi campi, potrebbe
scrivere qualcosa del genere:
        SELECT
            Sum(Col1) AS sumCol1
          , Sum(Col2) AS sumCol2
        FROM
            ( SELECT
                  0 AS Col1
                , 0 AS Col2
              FROM
                  [Tabella1]
              UNION SELECT
                  [Tabella1].Campo1 AS Col1
                , [Tabella1].Campo2 AS Col2
              FROM
                  [Tabella1]
            )
        ;
