Newsgroup: it.comp.appl.access
Titolo: Calcoli su sottoreport vuoti

Ciao a tutti.
Ho realizzato un report per la visualizzazione del bilancio.
Si basa su due query di raggruppamento dei dati delle fatture, su base
trimestrale ed annuale.
Il report non ha una vera e propria origine dati, ma solo una
"fittizia, cioè "dataFattura per anno" della query fatture emesse, che
utilizzo per il filtro del report, richiamato inserendo l'anno
desiderato da una maschera. L'anno in questione viene altresì
visualizzato su un controllo nel report stesso.
Infine, ho inserito 8 sottoreport, 4 per la visualizzazione dei
resoconti fatture emesse per i 4 trimestri, e 4, allo stesso modo, per
le fatture d'acquisto.
Il filtro dei record viene effettuato, sia per l'anno, sia per
trimestre, sull'origine dati dei sottoreport stessi. Per es, questa è
l'origine dati del primo sottoreport:
------------------------------------------------
SELECT [Bilancio - Fatturato - Fatture Emesse].[DataFattura per
trimestre], [Bilancio - Fatturato - Fatture Emesse].[DataFattura per
anno], [Bilancio - Fatturato - Fatture Emesse].[Somma Di TotImpon],
[Bilancio - Fatturato - Fatture Emesse].[Somma Di TotIva], [Bilancio -
Fatturato - Fatture Emesse].[Somma Di TotFatt], [Bilancio - Fatturato -
Fatture Emesse].[Conteggio Di Bilancio - Fatture Emesse]
FROM [Bilancio - Fatturato - Fatture Emesse]
WHERE ((([Bilancio - Fatturato - Fatture Emesse].[DataFattura per
trimestre])="T1" & " " & [Reports]![Bilancio]![Anno]) AND (([Bilancio -
Fatturato - Fatture Emesse].[DataFattura per
anno])=[Reports]![Bilancio]![Anno]));
---------------------------------------------------
Il problema però è che se per un determinato trimestre non sono
presenti fatture, il report non viene creato, e i calcoli di bilancio
fatti fra un sottoreport e l'altro danno come risultato #ERRORE.
Ho provato anche ad utilizzare la funzione Nz(), ma senza risultato.
Ho anche pensato di inserire un campo (anno, per es) in ogni
sottoreport, affinchè questi vengano creati anche in assenza di dati
sulle query di origine, ma non so se sia una buona idea.
Mi sapreste indicare una soluzione?

sulle query di origine, ma non so se sia una buona idea.
no, non è una buona idea!
Per sapere se il sottoreport ha dati, interroga la sua proprietà HasData, il
valore False indica che il sottoreport non ha dati.
Ciao
-- 
Giorgio Rancati
[Office Access MVP]

 Ciao
Ciao Giorgio.
Come già temevo alcuni sottoreport non hanno dati.
Come dovrei fare, dunque, per poter considerare come se i campi in essi
contenuti abbiano valore 0 o Null (per poter effettuare i calcoli)?
Per es, per il primo trimestre, sul report principale ho i controlli
[Bilancio Imponibile1], [Bilancio Iva1], che sono uguali alla
differenza di imponibile ed iva fra sottoreport fatture Emesse e
sottor. fatture d'acquisto. Ma se il primo sottoreport è vuoto?
Ciao.
Kru

sottor. fatture d'acquisto. Ma se il primo sottoreport è vuoto?
come ho detto devi usare la proprietà HasData.
se fai vedere l'origine controllo di [Bilancio Imponibile1] o di [Bilancio
Iva1] posso farti un esempio


 Iva1] posso farti un esempio
Scusa, credevo di essermi spiegato male io... :-)
ad ogni modo, i sottoreport che potrebbero essere vuoti, per il primo
trimestre, hanno la segg origine:
.............................................
Sottoreport Bilancio - Fatturato - Fatture Emesse1:
SELECT [Bilancio - Fatturato - Fatture Emesse].[DataFattura per
trimestre], [Bilancio - Fatturato - Fatture Emesse].[DataFattura per
anno], [Bilancio - Fatturato - Fatture Emesse].[Somma Di TotImpon],
[Bilancio - Fatturato - Fatture Emesse].[Somma Di TotIva], [Bilancio -
Fatturato - Fatture Emesse].[Somma Di TotFatt], [Bilancio - Fatturato -
Fatture Emesse].[Conteggio Di Bilancio - Fatture Emesse]
FROM [Bilancio - Fatturato - Fatture Emesse]
WHERE ((([Bilancio - Fatturato - Fatture Emesse].[DataFattura per
trimestre])="T1" & " " & [Reports]![Bilancio]![Anno]) AND (([Bilancio -
Fatturato - Fatture Emesse].[DataFattura per
anno])=[Reports]![Bilancio]![Anno]));
-------------------------------------------------------
Sottoreport Bilancio - Spese - Fatture Acquisto1:
SELECT [Bilancio - Spese - Fatture Acquisto].[DataOrdine per
trimestre], [Bilancio - Spese - Fatture Acquisto].[DataOrdine per
anno], [Bilancio - Spese - Fatture Acquisto].[Somma Di Imponibile],
[Bilancio - Spese - Fatture Acquisto].[Somma Di Valore Iva], [Bilancio
- Spese - Fatture Acquisto].[Somma Di Totale Fattura], [Bilancio -
Spese - Fatture Acquisto].[Conteggio Di Riepilogo Fatture Ricevute
Anno]
FROM [Bilancio - Spese - Fatture Acquisto]
WHERE ((([Bilancio - Spese - Fatture Acquisto].[DataOrdine per
trimestre])="T1" & " " & [Reports]![Bilancio]![Anno]) AND (([Bilancio -
Spese - Fatture Acquisto].[DataOrdine per
anno])=[Reports]![Bilancio]![Anno]));
---------------------------------------------------------------
Poi il bilancio non viene fatto su sottoreport, ma sui segg. 3
controlli TEXTBOX :
------------------------------------------------
[BILIMP1] (calcola il bilancio dell'imponibile):
=(Nz([Sottoreport Bilancio - Fatturato - Fatture Emesse1].Report!Somma
Di TotImpon)-Nz([Sottoreport Bilancio - Spese - Fatture
Acquisto1].Report![Somma Di Imponibile]))
--------------------------------------------------
[BILIVA1] (bilancio dell'iva):
=(Nz([Sottoreport Bilancio - Fatturato - Fatture Emesse1].Report!Somma
Di TotIva)-Nz([Sottoreport Bilancio - Spese - Fatture
Acquisto1].Report![Somma Di Valore Iva]))
---------------------------------------------------
[BILTOT1] (bilancio fra i totali fatture):
=(Nz([Sottoreport Bilancio - Fatturato - Fatture Emesse2].Report![Somma
Di TotFatt])-Nz([Sottoreport Bilancio - Spese - Fatture
Acquisto2].Report![Somma Di Totale Fattura]))
-----------------------------------------------------
Ti ringrazio per la disponibilità. Sei stato gentilissimo.
Ciao!
Kru

Acquisto2].Report![Somma Di Totale Fattura]))
ok prendiamo in esame quet'ultimo, poi applicherai la stessa logica agli
altri.
[BILTOT1] (bilancio fra i totali fatture):
----
=Iif([Sottoreport Bilancio - Fatturato - Fatture
Emesse2].Report.HasData=True;[Sottoreport Bilancio - Fatturato - Fatture
Emesse2].Report![Somma Di TotFatt];0)-Iif([Sottoreport Bilancio - Spese -
Fatture Acquisto2].Report.HasData=True;[Sottoreport Bilancio - Spese -
Fatture Acquisto2].Report![Somma Di Totale Fattura];0)
----


 --
Ti ringrazio, sei stato eccezzionale.
Funziona alla perfezione. Grazie infinite!!!!
Ciao!!!
Kru