Discussione:
DLookup su Report
(troppo vecchio per rispondere)
Gp
2005-08-26 13:17:01 UTC
Permalink
Ciao, ho 1 maschera con n campi 2 dei quali non sono associati ma vengono
calcolati tramite 1 funzione DLookup.
Dovrei raggruppare i record x 1 campo ed al suo interno x un secondo.
Se non sbaglio nella maschera non si può fare, ma potrei risolvere il
problema creando 1 bel report. Come posso passare al report il contenuto dei
2 campi calcolati tramite la funzione DLookup?
grz
ciao
Gp
Roberto dalla campagna
2005-08-26 15:07:27 UTC
Permalink
Post by Gp
Ciao, ho 1 maschera con n campi 2 dei quali non sono associati ma vengono
calcolati tramite 1 funzione DLookup.
Dovrei raggruppare i record x 1 campo ed al suo interno x un secondo.
Se non sbaglio nella maschera non si può fare, ma potrei risolvere il
problema creando 1 bel report. Come posso passare al report il contenuto dei
2 campi calcolati tramite la funzione DLookup?
Non vorrei deluderti, ma anche in un report puoi effettuare un
raggruppamento/ordinamento solo su uno o più campi dell'origine record del
report e certamente non su un suo controllo calcolato.
Penso che ti convenga crearti una query contenente tutti i campi
dell'origine record del report più due campi calcolati ricavati con le
funzioni DLookup: a questo punto il reggruppamento del report dovrebbe
sunzionare.
Post by Gp
grz
ciao
Gp
--
Roberto

-----------------------------------------------------
il Sito Comune di it.comp.appl.access
http://www.sitocomune.com
----------------------------------------------------
Gp
2005-08-26 15:55:36 UTC
Permalink
Ho creato la query e calcolato i 2 campi tramite la DLookUp esattamente come
facevo nella maschera e funziona. L'unica cosa che non funziona sono i campi
somma dei 2 campi calcolati. X alcuni dei record i 2 campi calcolati sono a
Null.
Posso ovviare in qualche modo?

Altra cosa: mi confermi che in 1 maschera NON è possibile raggruppare i
record "portando fuori" 1 dei campi del record stesso (comme avviene nei
Report)?

grz tante
ciao
Gp
Post by Roberto dalla campagna
Post by Gp
Ciao, ho 1 maschera con n campi 2 dei quali non sono associati ma vengono
calcolati tramite 1 funzione DLookup.
Dovrei raggruppare i record x 1 campo ed al suo interno x un secondo.
Se non sbaglio nella maschera non si può fare, ma potrei risolvere il
problema creando 1 bel report. Come posso passare al report il contenuto
dei
Post by Gp
2 campi calcolati tramite la funzione DLookup?
Non vorrei deluderti, ma anche in un report puoi effettuare un
raggruppamento/ordinamento solo su uno o più campi dell'origine record del
report e certamente non su un suo controllo calcolato.
Penso che ti convenga crearti una query contenente tutti i campi
dell'origine record del report più due campi calcolati ricavati con le
funzioni DLookup: a questo punto il reggruppamento del report dovrebbe
sunzionare.
Post by Gp
grz
ciao
Gp
--
Roberto
-----------------------------------------------------
il Sito Comune di it.comp.appl.access
http://www.sitocomune.com
----------------------------------------------------
Roberto dalla campagna
2005-08-26 16:18:41 UTC
Permalink
Post by Gp
Ho creato la query e calcolato i 2 campi tramite la DLookUp esattamente come
facevo nella maschera e funziona. L'unica cosa che non funziona sono i campi
somma dei 2 campi calcolati. X alcuni dei record i 2 campi calcolati sono a
Null.
Posso ovviare in qualche modo?
Nella somma usa la funzione Nz (vedi help) per normalizzare a zero i campi
Null.
Post by Gp
Altra cosa: mi confermi che in 1 maschera NON è possibile raggruppare i
record "portando fuori" 1 dei campi del record stesso (comme avviene nei
Report)?
Per quelle che sono le mie conoscenze di Access te lo confermo, contento se
qualcuno mi smentirà, così imparerò una cosa nuova.
Post by Gp
grz tante
ciao
Gp
[CUT]
--
Roberto

-----------------------------------------------------
il Sito Comune di it.comp.appl.access
http://www.sitocomune.com
----------------------------------------------------
Gp
2005-08-29 06:15:04 UTC
Permalink
Niente da fare!
Ho notato che il campo somma resta vuoto anche se i campi da sommare sono
tutti non null.
In pratica ho il campo C1 che contiene 1 valore che è il risultato di 1
DLookUp ed il campo C2=somma([C1]). C2 resta sempre e comunque vuoto (credo
Null).
Dov'è l'errore?
grz
ciao
Gp
Post by Roberto dalla campagna
Post by Gp
Ho creato la query e calcolato i 2 campi tramite la DLookUp esattamente
come
Post by Gp
facevo nella maschera e funziona. L'unica cosa che non funziona sono i
campi
Post by Gp
somma dei 2 campi calcolati. X alcuni dei record i 2 campi calcolati sono
a
Post by Gp
Null.
Posso ovviare in qualche modo?
Nella somma usa la funzione Nz (vedi help) per normalizzare a zero i campi
Null.
Post by Gp
Altra cosa: mi confermi che in 1 maschera NON è possibile raggruppare i
record "portando fuori" 1 dei campi del record stesso (comme avviene nei
Report)?
Per quelle che sono le mie conoscenze di Access te lo confermo, contento se
qualcuno mi smentirà, così imparerò una cosa nuova.
Post by Gp
grz tante
ciao
Gp
[CUT]
--
Roberto
-----------------------------------------------------
il Sito Comune di it.comp.appl.access
http://www.sitocomune.com
----------------------------------------------------
Roberto dalla campagna
2005-08-29 08:42:31 UTC
Permalink
Post by Gp
Niente da fare!
Ho notato che il campo somma resta vuoto anche se i campi da sommare sono
tutti non null.
In pratica ho il campo C1 che contiene 1 valore che è il risultato di 1
DLookUp ed il campo C2=somma([C1]). C2 resta sempre e comunque vuoto (credo
Null).
Dov'è l'errore?
Ti ricordo che la funzione DLookup, come altre funzioni di aggregazione sui
dominii, a prescindere dal ditpo di campo su cui opera ti restituisce SEMPRE
una variabile Stringa; se quindi i risultati di una DLookup vanno sommati è
NECESSARIO prima convertirli da stringa a numerico con una delle funzioni di
conversione scelta all'uopo (Val, CDbl, CLng, CDec ecc. ecc.): se sommi
direttamente i valori restituiti da una DLookup è naturale che Access ti
restituisca comunque un risultato Null, visto che stai erroneamente tentando
si dommare delle variabili stringa.
Prova così e se ancora non hai i risultati desiderati prova a postare il
codice SQL della tua query, la struttura della tabella su cui è basata e
ricordaci quali risultati vuoi ottenere,
Post by Gp
grz
ciao
Gp
[CUT]
--
Roberto

-----------------------------------------------------
il Sito Comune di it.comp.appl.access
http://www.sitocomune.com
----------------------------------------------------
Gp
2005-08-29 12:55:45 UTC
Permalink
Purtroppo non ci siamo ancora. Ho provato con CDbl, CLng, e Val.
Posto i dati richiesti:
1. Query Q_scontibonusfatt_R:
SELECT ((100-[sconto])/100) AS ScFatt, ((100-[bonus])/100) AS BoFatt
FROM scontibonusfatt
WHERE marca=Reports!R_F2!marca And Reports!R_F2!dtftag Between dtinval And
dtfineval;

2. Tabella scontibonusfatt:
Campo, Tipo, Lungh, Formato
marca, Testo, 1 (chiave)
dtinval, Data/ora, Data in cifre (chiave)
dtfineval, Data/ora, Data in cifre
sconto, Numerico, 4, Precisione doppia
bonus, Numerico, 4, Precisione doppia

3. campo bonus del report R_F2:
=CDbl(Round(IIf([marca]='A';DLookUp('[imponbonus]*([planning]+[mix]+[corporatedesign])/100';"calcolobonus";"[marca]
= '" & Report!R_F2!marca2 & "' AND [anno] <= " & Report!R_F2!anprat & " AND
[trimestre] = " &
DatePart("q";Report!R_F2!dtftag));DLookUp('[imponbonus]*([volume]+[planning]+[mix]+[corporatedesign])/100';"calcolobonus";"[marca]
= '" & Report!R_F2!marca2 & "' AND [anno] <= " & Report!R_F2!anprat & " AND
[trimestre] = " & DatePart("q";Report!R_F2!dtftag)));2))

4. campo "Somma di bonus" del report R_F2:
=Somma([bonus]) -> restituisce Null anzichè il valore somma del campo bonus
dei vari record ottenuti tramite la funzione DLookUp del punto 3.

5. Come posso evitare di dover aggiungere la "s" al riferimento di 1 campo
del report? Nella DLookUp, x es, ho inserito il riferimento
[Reports]![R_F2]![anprat]. Dopo aver inserito la funzione il riferimento è
stato cambiato da Access in Report!R_F2!anprat ed ogni volta che modifico
devo rimettere la "s" di "Reports" altrimenti inaanteprima mi chiede
l'inserimento del parametro R_F2 (che invece è il nome del report stesso).

grz infinite
ciao
Gp
Post by Gp
Post by Gp
Niente da fare!
Ho notato che il campo somma resta vuoto anche se i campi da sommare sono
tutti non null.
In pratica ho il campo C1 che contiene 1 valore che è il risultato di 1
DLookUp ed il campo C2=somma([C1]). C2 resta sempre e comunque vuoto
(credo
Post by Gp
Null).
Dov'è l'errore?
Ti ricordo che la funzione DLookup, come altre funzioni di aggregazione sui
dominii, a prescindere dal ditpo di campo su cui opera ti restituisce SEMPRE
una variabile Stringa; se quindi i risultati di una DLookup vanno sommati è
NECESSARIO prima convertirli da stringa a numerico con una delle funzioni di
conversione scelta all'uopo (Val, CDbl, CLng, CDec ecc. ecc.): se sommi
direttamente i valori restituiti da una DLookup è naturale che Access ti
restituisca comunque un risultato Null, visto che stai erroneamente tentando
si dommare delle variabili stringa.
Prova così e se ancora non hai i risultati desiderati prova a postare il
codice SQL della tua query, la struttura della tabella su cui è basata e
ricordaci quali risultati vuoi ottenere,
Post by Gp
grz
ciao
Gp
[CUT]
--
Roberto
-----------------------------------------------------
il Sito Comune di it.comp.appl.access
http://www.sitocomune.com
----------------------------------------------------
Roberto dalla campagna
2005-08-30 09:40:11 UTC
Permalink
Post by Gp
Purtroppo non ci siamo ancora. Ho provato con CDbl, CLng, e Val.
Per prima cosa quando rispondi ti consiglio di scrivere DOPO o INFRAMEZZATO
al testo dei messaggi precedenti e non prima come stai facendo ora: il tread
risulterà molto più leggibile e poi per chi interviene a thread iniziato
basta leggere l'ultimo messaggio dall'alto in basso per avere un idea del
discorso: così occorre continuamente cercare in basso la domanda per poi
tornare indietro e leggere le risposta.
OK, ma di cose che mi hanno lasciato scettico ce ne sono molte.
Post by Gp
SELECT ((100-[sconto])/100) AS ScFatt, ((100-[bonus])/100) AS BoFatt
FROM scontibonusfatt
WHERE marca=Reports!R_F2!marca And Reports!R_F2!dtftag Between dtinval And
dtfineval;
A parte che non capisco che compito abbia tale query nel contesto che stiamo
discutendo, a mio avviso non ha proprio significato avere i controlli di un
report come riferimenti di una query parametrica; anzi, visto che i valori
di tali controlli non è statico (un report viene eseguito e non aperto), si
può fare riferimento ad essi solo all'interno del report stesso, ma non da
altri oggetti del database.
Post by Gp
Campo, Tipo, Lungh, Formato
marca, Testo, 1 (chiave)
dtinval, Data/ora, Data in cifre (chiave)
dtfineval, Data/ora, Data in cifre
sconto, Numerico, 4, Precisione doppia
bonus, Numerico, 4, Precisione doppia
=CDbl(Round(IIf([marca]='A';DLookUp('[imponbonus]*([planning]+[mix]+[corpora
tedesign])/100';"calcolobonus";"[marca]
Post by Gp
= '" & Report!R_F2!marca2 & "' AND [anno] <= " & Report!R_F2!anprat & " AND
[trimestre] = " &
DatePart("q";Report!R_F2!dtftag));DLookUp('[imponbonus]*([volume]+[planning]
+[mix]+[corporatedesign])/100';"calcolobonus";"[marca]
Post by Gp
= '" & Report!R_F2!marca2 & "' AND [anno] <= " & Report!R_F2!anprat & " AND
[trimestre] = " & DatePart("q";Report!R_F2!dtftag)));2))
In un report non esistono i campi ma i controlli: i campi sono contenuti
solamente nelle tabelle e nelle queries; questa precisazione non è fatta per
fare il pignolo, ma è importante aver chiara questa cosa, come vedremo nel
commentare il punto 4.
Presuppongo pertanto che bonus sia il nome di un controllo non associato e
che quello di cui sopra lo hai scritto nella sua origine controllo.
Nel generatore di espressioni (quindi nello script di un'origine controllo)
NON si può far riferimento al nome di un report o di una maschera, ma si può
fare riferimento solo a nomi di controlli dell'oggetto o ai nomi dei campi
della sua origine record.
Quindi, ammesso che marca2 e anprat siano nomi di campi dell'origine record
del report o di controlli del report non scriverai:

Report!R_F2!marca2 e Report!R_F2!anprat

ma semplicemente:

marca3 e anprat

Comunque in VBA tali riferimenti al report ti avrebbero dato errore formale
visto che la sintassi che avresti dovuto adoperare sarebbe stata:

Reports!R_F2!marca2 e Reports!R_F2!anprat
Post by Gp
=Somma([bonus]) -> restituisce Null anzichè il valore somma del campo bonus
dei vari record ottenuti tramite la funzione DLookUp del punto 3.
La funzione Somma, come tutte le funzioni di aggregazione NON possono far
riferimento al nome di un controllo calcolato (come mi sembra di capire sia
bonus) ma possono fare riferimento SOLAMENTE a nome di campi dell'oggetto
origine: per maggiori dettagli vai sull'help e leggi l'argomento
intitolatato Calcolare il totale di un controllo calcolato in una maschera o
in un report.
Molto spesso il nome del controllo associato coincide con il nome del campo
cui è associato e quando si usa la funzione Somma si crede che venga fatta
la somma dei valori contenuti nei controlli, mentre invece viene fatta la
somma dei valori contenuti nei campi con lo stesso nome: d'altra parte non
potrebbe essere altrimenti visto che per definizione una funzione di
aggregazione può operare esclusivamente sui campi di una tabella o di una
query e non su controlli di una maschera o di un report.
Come vedi nella comprensione di Access e del suo help in linea, è molto
importante distinguere tra campo e controllo, specie se quest'ultimo è
calcolato.
Post by Gp
5. Come posso evitare di dover aggiungere la "s" al riferimento di 1 campo
del report?
Campo di un report?
Post by Gp
Nella DLookUp, x es, ho inserito il riferimento
[Reports]![R_F2]![anprat]. Dopo aver inserito la funzione il riferimento è
stato cambiato da Access in Report!R_F2!anprat ed ogni volta che modifico
devo rimettere la "s" di "Reports" altrimenti inaanteprima mi chiede
l'inserimento del parametro R_F2 (che invece è il nome del report stesso).
Circa i riferimenti al nome di un report vedi quanto ho scritto circa il
punto 3.
Se non ho interpretato male ciò che hai scritto devi rifare un bel po' di
cose; ho la sensazione che ti convenga fare i calcoli al livello di record
nei campi calcolati di una query, ma questo mi sembra di avertelo già
consigliato.
Post by Gp
grz infinite
ciao
Gp
[CUT]
--
Roberto

-----------------------------------------------------
il Sito Comune di it.comp.appl.access
http://www.sitocomune.com
----------------------------------------------------
Gp
2005-08-30 10:20:03 UTC
Permalink
Post by Roberto dalla campagna
Post by Gp
Purtroppo non ci siamo ancora. Ho provato con CDbl, CLng, e Val.
Per prima cosa quando rispondi ti consiglio di scrivere DOPO o INFRAMEZZATO
al testo dei messaggi precedenti e non prima come stai facendo ora: il tread
risulterà molto più leggibile e poi per chi interviene a thread iniziato
basta leggere l'ultimo messaggio dall'alto in basso per avere un idea del
discorso: così occorre continuamente cercare in basso la domanda per poi
tornare indietro e leggere le risposta.
OK, ma di cose che mi hanno lasciato scettico ce ne sono molte.
Post by Gp
SELECT ((100-[sconto])/100) AS ScFatt, ((100-[bonus])/100) AS BoFatt
FROM scontibonusfatt
WHERE marca=Reports!R_F2!marca And Reports!R_F2!dtftag Between dtinval And
dtfineval;
A parte che non capisco che compito abbia tale query nel contesto che stiamo
discutendo, a mio avviso non ha proprio significato avere i controlli di un
report come riferimenti di una query parametrica; anzi, visto che i valori
di tali controlli non è statico (un report viene eseguito e non aperto), si
può fare riferimento ad essi solo all'interno del report stesso, ma non da
altri oggetti del database.
Post by Gp
Campo, Tipo, Lungh, Formato
marca, Testo, 1 (chiave)
dtinval, Data/ora, Data in cifre (chiave)
dtfineval, Data/ora, Data in cifre
sconto, Numerico, 4, Precisione doppia
bonus, Numerico, 4, Precisione doppia
=CDbl(Round(IIf([marca]='A';DLookUp('[imponbonus]*([planning]+[mix]+[corpora
tedesign])/100';"calcolobonus";"[marca]
Post by Gp
= '" & Report!R_F2!marca2 & "' AND [anno] <= " & Report!R_F2!anprat & "
AND
Post by Gp
[trimestre] = " &
DatePart("q";Report!R_F2!dtftag));DLookUp('[imponbonus]*([volume]+[planning]
+[mix]+[corporatedesign])/100';"calcolobonus";"[marca]
Post by Gp
= '" & Report!R_F2!marca2 & "' AND [anno] <= " & Report!R_F2!anprat & "
AND
Post by Gp
[trimestre] = " & DatePart("q";Report!R_F2!dtftag)));2))
In un report non esistono i campi ma i controlli: i campi sono contenuti
solamente nelle tabelle e nelle queries; questa precisazione non è fatta per
fare il pignolo, ma è importante aver chiara questa cosa, come vedremo nel
commentare il punto 4.
Presuppongo pertanto che bonus sia il nome di un controllo non associato e
che quello di cui sopra lo hai scritto nella sua origine controllo.
Nel generatore di espressioni (quindi nello script di un'origine controllo)
NON si può far riferimento al nome di un report o di una maschera, ma si può
fare riferimento solo a nomi di controlli dell'oggetto o ai nomi dei campi
della sua origine record.
Quindi, ammesso che marca2 e anprat siano nomi di campi dell'origine record
Report!R_F2!marca2 e Report!R_F2!anprat
marca3 e anprat
Comunque in VBA tali riferimenti al report ti avrebbero dato errore formale
Reports!R_F2!marca2 e Reports!R_F2!anprat
Post by Gp
=Somma([bonus]) -> restituisce Null anzichè il valore somma del campo
bonus
Post by Gp
dei vari record ottenuti tramite la funzione DLookUp del punto 3.
La funzione Somma, come tutte le funzioni di aggregazione NON possono far
riferimento al nome di un controllo calcolato (come mi sembra di capire sia
bonus) ma possono fare riferimento SOLAMENTE a nome di campi dell'oggetto
origine: per maggiori dettagli vai sull'help e leggi l'argomento
intitolatato Calcolare il totale di un controllo calcolato in una maschera o
in un report.
Molto spesso il nome del controllo associato coincide con il nome del campo
cui è associato e quando si usa la funzione Somma si crede che venga fatta
la somma dei valori contenuti nei controlli, mentre invece viene fatta la
somma dei valori contenuti nei campi con lo stesso nome: d'altra parte non
potrebbe essere altrimenti visto che per definizione una funzione di
aggregazione può operare esclusivamente sui campi di una tabella o di una
query e non su controlli di una maschera o di un report.
Come vedi nella comprensione di Access e del suo help in linea, è molto
importante distinguere tra campo e controllo, specie se quest'ultimo è
calcolato.
Post by Gp
5. Come posso evitare di dover aggiungere la "s" al riferimento di 1 campo
del report?
Campo di un report?
Post by Gp
Nella DLookUp, x es, ho inserito il riferimento
[Reports]![R_F2]![anprat]. Dopo aver inserito la funzione il riferimento è
stato cambiato da Access in Report!R_F2!anprat ed ogni volta che modifico
devo rimettere la "s" di "Reports" altrimenti inaanteprima mi chiede
l'inserimento del parametro R_F2 (che invece è il nome del report stesso).
Circa i riferimenti al nome di un report vedi quanto ho scritto circa il
punto 3.
Se non ho interpretato male ciò che hai scritto devi rifare un bel po' di
cose; ho la sensazione che ti convenga fare i calcoli al livello di record
nei campi calcolati di una query, ma questo mi sembra di avertelo già
consigliato.
Post by Gp
grz infinite
ciao
Gp
[CUT]
--
Roberto
-----------------------------------------------------
il Sito Comune di it.comp.appl.access
http://www.sitocomune.com
----------------------------------------------------
Ciao Roberto, ho deciso di creare 1 query che già contiene i 2 campi
calcolati imponbonus e bonus e successivamente creare il report sulla base
della query stessa.
A questo proposito, x il calcolo del bonus devo controllare se la marca è =
'A' o meno; nel primo caso devo eseguire 1 calcolo, nel secondo caso 1
diverso (come puoi vedere dalla DLookUp che ho creato). E' possibile eseguire
questo controllo (IIf marca='A'; ...; ...) in 1 query? Ho provato ma mi
restituisce errore di sintassi (sui ";").
Grazie ancora
ciao
Gp
Roberto dalla campagna
2005-08-30 10:55:15 UTC
Permalink
Post by Gp
Post by Roberto dalla campagna
Post by Gp
Purtroppo non ci siamo ancora. Ho provato con CDbl, CLng, e Val.
Per prima cosa quando rispondi ti consiglio di scrivere DOPO o INFRAMEZZATO
al testo dei messaggi precedenti e non prima come stai facendo ora: il tread
risulterà molto più leggibile e poi per chi interviene a thread iniziato
basta leggere l'ultimo messaggio dall'alto in basso per avere un idea del
discorso: così occorre continuamente cercare in basso la domanda per poi
tornare indietro e leggere le risposta.
OK, ma di cose che mi hanno lasciato scettico ce ne sono molte.
Post by Gp
SELECT ((100-[sconto])/100) AS ScFatt, ((100-[bonus])/100) AS BoFatt
FROM scontibonusfatt
WHERE marca=Reports!R_F2!marca And Reports!R_F2!dtftag Between dtinval And
dtfineval;
A parte che non capisco che compito abbia tale query nel contesto che stiamo
discutendo, a mio avviso non ha proprio significato avere i controlli di un
report come riferimenti di una query parametrica; anzi, visto che i valori
di tali controlli non è statico (un report viene eseguito e non aperto), si
può fare riferimento ad essi solo all'interno del report stesso, ma non da
altri oggetti del database.
Post by Gp
Campo, Tipo, Lungh, Formato
marca, Testo, 1 (chiave)
dtinval, Data/ora, Data in cifre (chiave)
dtfineval, Data/ora, Data in cifre
sconto, Numerico, 4, Precisione doppia
bonus, Numerico, 4, Precisione doppia
=CDbl(Round(IIf([marca]='A';DLookUp('[imponbonus]*([planning]+[mix]+[corpora
Post by Gp
Post by Roberto dalla campagna
tedesign])/100';"calcolobonus";"[marca]
Post by Gp
= '" & Report!R_F2!marca2 & "' AND [anno] <= " & Report!R_F2!anprat & "
AND
Post by Gp
[trimestre] = " &
DatePart("q";Report!R_F2!dtftag));DLookUp('[imponbonus]*([volume]+[planning]
Post by Gp
Post by Roberto dalla campagna
+[mix]+[corporatedesign])/100';"calcolobonus";"[marca]
Post by Gp
= '" & Report!R_F2!marca2 & "' AND [anno] <= " & Report!R_F2!anprat & "
AND
Post by Gp
[trimestre] = " & DatePart("q";Report!R_F2!dtftag)));2))
In un report non esistono i campi ma i controlli: i campi sono contenuti
solamente nelle tabelle e nelle queries; questa precisazione non è fatta per
fare il pignolo, ma è importante aver chiara questa cosa, come vedremo nel
commentare il punto 4.
Presuppongo pertanto che bonus sia il nome di un controllo non associato e
che quello di cui sopra lo hai scritto nella sua origine controllo.
Nel generatore di espressioni (quindi nello script di un'origine controllo)
NON si può far riferimento al nome di un report o di una maschera, ma si può
fare riferimento solo a nomi di controlli dell'oggetto o ai nomi dei campi
della sua origine record.
Quindi, ammesso che marca2 e anprat siano nomi di campi dell'origine record
Report!R_F2!marca2 e Report!R_F2!anprat
marca3 e anprat
Comunque in VBA tali riferimenti al report ti avrebbero dato errore formale
Reports!R_F2!marca2 e Reports!R_F2!anprat
Post by Gp
=Somma([bonus]) -> restituisce Null anzichè il valore somma del campo
bonus
Post by Gp
dei vari record ottenuti tramite la funzione DLookUp del punto 3.
La funzione Somma, come tutte le funzioni di aggregazione NON possono far
riferimento al nome di un controllo calcolato (come mi sembra di capire sia
bonus) ma possono fare riferimento SOLAMENTE a nome di campi
dell'oggetto
Post by Gp
Post by Roberto dalla campagna
origine: per maggiori dettagli vai sull'help e leggi l'argomento
intitolatato Calcolare il totale di un controllo calcolato in una maschera o
in un report.
Molto spesso il nome del controllo associato coincide con il nome del campo
cui è associato e quando si usa la funzione Somma si crede che venga fatta
la somma dei valori contenuti nei controlli, mentre invece viene fatta la
somma dei valori contenuti nei campi con lo stesso nome: d'altra parte non
potrebbe essere altrimenti visto che per definizione una funzione di
aggregazione può operare esclusivamente sui campi di una tabella o di una
query e non su controlli di una maschera o di un report.
Come vedi nella comprensione di Access e del suo help in linea, è molto
importante distinguere tra campo e controllo, specie se quest'ultimo è
calcolato.
Post by Gp
5. Come posso evitare di dover aggiungere la "s" al riferimento di 1 campo
del report?
Campo di un report?
Post by Gp
Nella DLookUp, x es, ho inserito il riferimento
[Reports]![R_F2]![anprat]. Dopo aver inserito la funzione il riferimento è
stato cambiato da Access in Report!R_F2!anprat ed ogni volta che modifico
devo rimettere la "s" di "Reports" altrimenti inaanteprima mi chiede
l'inserimento del parametro R_F2 (che invece è il nome del report stesso).
Circa i riferimenti al nome di un report vedi quanto ho scritto circa il
punto 3.
Se non ho interpretato male ciò che hai scritto devi rifare un bel po' di
cose; ho la sensazione che ti convenga fare i calcoli al livello di record
nei campi calcolati di una query, ma questo mi sembra di avertelo già
consigliato.
Post by Gp
grz infinite
ciao
Gp
[CUT]
--
Roberto
Ciao Roberto, ho deciso di creare 1 query che già contiene i 2 campi
calcolati imponbonus e bonus e successivamente creare il report sulla base
della query stessa.
A questo proposito, x il calcolo del bonus devo controllare se la marca è =
'A' o meno; nel primo caso devo eseguire 1 calcolo, nel secondo caso 1
diverso (come puoi vedere dalla DLookUp che ho creato). E' possibile eseguire
questo controllo (IIf marca='A'; ...; ...) in 1 query? Ho provato ma mi
restituisce errore di sintassi (sui ";").
Certo che si può usare una IIf in un campo calcolato della query, solo che
l'aperta parentesi tonfa la devi mettere dopo e non prima della parola IIf,
ovvero IIf([marca] = "A"; ... ; ...)
Post by Gp
Grazie ancora
Prego
Post by Gp
ciao
Gp
--
Roberto

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