Newsgroup: it.comp.appl.access
Titolo: errori

buongiorno,
in un documento ho un rapporto che non funziona perchè in alcuni casi 
c'è lo 0 al denominatore. Qual è la funzione di access che converte 
l'errore in 0?
Avevo pensato ad una cosa del genere: iif(val(a/b) "is.error o val.error 
o equivalente"; 0; a/b)
Googlando trovo solo le funzioni valide per excel
Saluti
 
---
Questa e-mail è stata controllata per individuare virus con Avast antivirus.
https://www.avast.com/antivirus
 
 

 Googlando trovo solo le funzioni valide per excel
 
In Access e VBA esiste la funzione IsError() che però non va per la 
divisione per zero. Il modo più semplice è controllare il denominatore:
 
iif(b=0;0;a/b)
 
-- 
Ciao
Karl
*********
http://www.AccessDevCon.com
 
Access FAQ:  
http://www.donkarl.com/it
 


 
Oppure puoi 'acchiappare' l'errore della 'division by zero' quando arriva
A mio parere meglio prevenire, quindi meglio il controllo preliminare 
del divisore

 Access FAQ:  
http://www.donkarl.com/it
 
 
Ciao Karl,
io ricordavo che iif valuta entrambe le espressioni al proprio interno, anche quella che corrisponde alla sezione che non viene restituita, provando l'espressione che hai suggerito l'errore di divisione per zero si verifica comunque, si potrebbe ovviare così:
iif(b=0,0, a/iif(b=0,1,b) )
 
a/1 non sarà mai restituito ma evita la divisione per zero.
 
Ciao
Mat

...
 
La domande e la mia risposta non si riferisce a codice VBA ma ad 
un'espressione. L'iif nelle espressioni si comporta diversamente del VBA 
e non dà un errore in questo caso.
 
Persino la documentazione di iif non è esatta (e non è mai stata) in 
questo rispetto perché dice che iif sempre valuterebbe entrambe parti. 
Invece in espressioni a causa dell'ES (il traduttore tra VBA e 
espressioni) solo la parte rilevante viene valutata.
 
La pratica l'ha sempre mostrato ed una volta tanti anni fa michka (uno 
dei programmatori di Access alla MS) l'ha confermato:
https://groups.google.com/forum/#!search/michka$20iif$20vba$20espression$20service/comp.databases.ms-access/n1907-2fabc/iAQj50cBcsoJ
 
 
-- 
Ciao
Karl
*********
Access FAQ:  
http://www.donkarl.com/it
 
 


Ne sa' piu' Karl che la documentazione di Microsoft
L'avevo sempre sospettato
Ma cos'e' esattamente questo ES, l'expression service?
E' un pezzo distinto da Access, usabile anche da altri programmi?
 

 E' un pezzo distinto da Access, usabile anche da altri programmi?
 
Certo che non è ben documentato. ;-)
 
Sempre da michka da ca. 1999 sappiamo che si tratta del pezzo di Jet/Ace 
che interprete espressioni (funzioni, operatori) nelle query, maschere ecc.
 
Qualche volta è anche riferito come "VBA Expression Service" perché come 
già scritto è quasi il traduttore tra VBA e espressioni:
http://support.office.com/en-us/article/SQL-Expressions-b233db07-8f33-487a-8487-f379b62cb8a7
 
 
Di solito l'ES si usa semplicemente senza accorgersi. Anche "altri 
programmi" lo usano solo come parte di Jet/Ace. Si accorge dell'ES solo 
se non funziona, come p.e. nelle prime versioni di Access 2000 nelle 
quali la MS non aveva integrato le nuove funzioni di stringhe:
https://groups.google.com/forum/#!msg/microsoft.public.it.office.access/3yrst1TgPa8/CJG79ECEtBsJ
 



Buon Anno a tutti,
grazie per la risposta! ha funzionato
 
Akery
