premetto non sono esperto.
ho 1 problema in un report faccio una divisione C=A/B se B � zero su C
di mi esce ERROR anzich� zero.
aiutatemi come posso ottenere zero?
grazie tante
rino
Ciao rino, la cosa più giusta secondo me è che se B=0 C dovrebbe
essere uguale al valore A oppure a Null:
C=A/IIf(B<>0,B,Null)
se poi vuoi ottenere C=0 allora:
C=A / IIf(B <> 0, B, A) - 1
Ciao Vladimiro
Ciao rino, la cosa pi� giusta secondo me � che se B=0 C dovrebbe
essere uguale al valore A oppure a Null:
C=A/IIf(B<>0,B,Null)
se poi vuoi ottenere C=0 allora:
C=A / IIf(B <> 0, B, A) - 1
Ciao Vladimiro
grazie Vladimiro per la risposta
chiarisco meglio il mio problema:
C=A/B > B � un valore dinamico se contiene es. da 1 in poi non mi da
errore se contiene zero mi da l'errore che ti ho detto.
quindi, vorrei in questo caso, che il risultato di C fosse zero e non
errore.
grazie
rino
Ciao
Antonio
io ho questo: C = [A]/[B] se racchiudo tutto in 2 solo parentesi ()
es. antonio, mi da errorre, se lascio quelle quadre se metto l'una e
l'altra mi da sempre l'errore
ho messo =IIf([B]<>0;[C]=0) mi sempre l'errore
scusatemi x l'imbranamento
rino
Le parentesi quadre puoi metterle oppure no, come vuoi fare tu. Si usano
particolarmente quando il nome di un campo contiene uno spazio in mezzo. Per
es.: [Importo IVA]=[Saldo Imponibile] * [Aliquota IVA]
strano ho provato con C=iif(B<>0;A/B;0) mi da ZERO dove non ho inserito
i numeri, (ho 4 report dinamici con stesse condizioni dove attraverso
la form inserisco i numeri) mentre dove non sono inseriti mi da
predefinito zero
grazie
scusatemi mi sono espresso male prima volevo dire: strano ho provato con
C=iif(B<>0;A/B;0) mi da ZERO dove non ho inserito
i numeri, (ho 4 report dinamici con stesse condizioni dove attraverso
la form inserisco i numeri) mi da errore, mentre dove non sono inseriti
Ciao
Antonio
scusami Antonio se insisto, ma mi da sempre l'errore dove calcolo,
PRECISO che il calcolo C lo faccio nella casella di testo del report in
riferimento a 2 caselle del report stesso che contengono numeri
calcolati dalla Form.
nella casella di testo scrivendo la formula compreso la tua, ma mi da
ERRORE mentre negli altri 3 report che non contengono i numeri mi da
predefinito lo zero
non so se sono stato chiaro nell'esprimermi
grazie per la pazienza
rino
Inserisci una nuova routine di tipo Function in un modulo (se nel DB non c'�
nessun modulo lo puoi creare adesso) cos�:
Public Function CalcolaC(CampoA As Integer, CampoB As Integer) As Integer
If Nz(CampoB) = 0 Then CalcolaC = 0
If Nz(CampoB) <> 0 Then CalcolaC = Nz(CampoA) / CampoB
End Function
poi sul tuo report nell'origine controllo di C scrivi:
= CalcolaC (A;B)
ma ricordati che se C � anche un campo della tabella, questo controllo lo
devi rinominare in un modo diverso, magari X come avevo detto
precedentemente.
Per� fare cos� � sicuramente pi� complicato che cercare sistemare le cose
con l'altro metodo.
Antonio ti chiedo scusa e ti ringrazio per la pazienza.
l'esempio del mio problema non riguarda solo 3 campi A,B,C ma sono
diversi ma tutti con il criterio identico, quindi se risolvo l'esempio
del mio problema di fatto risolvo anche gli altri. Posso gentilmente
chiederti una risoluzione pi� semplice dove nella casella di testo (C)
deve contenere zero e non errore se B � zero dopo la divisione C=A/B?
scusami e ti ringrazio far� sicuramente un corso da programmatore.
curiosita sei Antonio che conosco io di B... e tu nativo della S....?
rino
Perch� non mi rispondi passo-passo a quell'ipotesi che ho fatto poco fa ?
E' vero che in primis c'� una tabella con dei campi che vengono aggiornati
dal form ?
Se � cos�, prova a vedere il contenuto dei campi e scrivimi qui sotto quelli
che ti sembrano pi� significativi. Es.
CampoA CampoB CampoC
10 niente niente
20 5 8
etc. etc.
Poi passiamo al report. Se il report si basa sui campi della tabella non pu�
darti errore. A meno che � nel report stesso che prima calcoli un controllo
e poi vuoi utilizzare il risultato di questo controllo per calcolarne un
altro... ma questo sistema mi sembra pi� complicato e non credo che sia il
caso tuo.
Si Antonio scusami per passo passo, hai capito bene c'� una tabella con
dei campi che vengono aggiornati
dal form. ma il report si riferisce a una Query della tabella.
gli esempi A,B,C, che tu fai sono esatti, ma sono riferiti a un singolo
calcolo, con lo stesso criterio vi sono nello stesso report altri Campi
D,E,F ecc.
cerco di spiegarmi (spero) il campo A e B sono aggiornati dalla tabella
mentre il Campo C calcola A/B ma se B � ZERO su C mi da ERRORE per
questo dico che se risolvo con il primo esempio risolvo anche gli altri.
non capisco come mai se B contiene un numero superiore a 1 mi da il
risultato giusto invece se contiene ZERO mi da errore
no Antonio sono una persona seria non rientra nei miei parametri di vita
mi sforzo ogni giorno di essere persona normale.
cmq per ritornare alla risoluzione, ho adattato la tua formula,
iif(Testo203<>0; SommaDiE1/ Testo203;0) il risultato nella (Casella di
TestoC) da ERRORE.
perch� il Testo203 � ZERO invece se contiene un numero superiore a ZERO
mi calcola giusto
da predefinito lo ZERO nelle altre pagine stesso criterio stessa
(casella TestoC) stessi riferimenti ecc.dove non vi sono calcoli e
numeri
grazie Antonio
no antonio = � compreso nell'origine controllo
Poi dimmi SommaDiE1 cosa contiene ? forse � lui che contiene l'errore ?
Metti un altro controllo in cui fai vedere cosa c'� in SommaDiE1 cos� puoi
capire meglio come vanno le cose. In ultimo, SommaDiE1 � per caso un
controllo calcolato sul report stesso ? Se s�, prova a spostarlo nella parte
alta del report.
Aspetto incuriosito
Tu curioso io ansioso :-)
Nome elemento: SommaDiDelAssE1
nell'Origine controllo. . . .: =iif(Testo203<>0; SommaDiE1/ Testo203;0)
SommaDiE1 � un campo calcolato dalla query che somma ed � numerico e di
riferimento al report in questione (come metto altro controllo se devo
fare riferimento a lui)?
stava nell'intestazione di pagina ed � nascosto l'ho messo nel corpo ma
nulla.
ma come mai se Testo203 contiene 1 numero sup a ZERO mi da il risultato
giusto
Sostituisci quanto appare in Origine controllo con SommaDiE1. Sii preciso,
fai cos�:
Origine controllo . .: SommaDiE1
Se nel report vedi che in questo nuovo controllo c'� l'errore, vuol dire che
l'errore che vedevi prima nel controllo C non dipendeva dalla formula ma dal
fatto che uno dei fattori della divisione conteneva gi� un errore.
la casella di SommaDiE1 che esiste l'abbiamo chiamata A esiste e calcola
giusto, cmq ho fatto come tu hai detto ed esce lo stesso risultato di
SommaDiE1
quindi due caselle stesso numero.
invece dato che nel frattempo provo e riprovo leggo ecc. ho provato
nella form a mettere ZERO nella casella che si riferisce alla stessa
tab,query e casella di report in argomento mi da errore run time (non fa
la divisione x zero. (va be questo e altra cosa)
Ma non c'� una formula semplice che dice: se Testo203 � ZERO nella
casella di (TestoC) scrivi Zero altrimenti calcola A/B (Testo203) che
funziona come ti ho detto.
si scusami la form non centra con la discussione n/s ma l'ho scritto
ancora ti poteva servire a risolvere. Si riferisce alla tab
che in una query viene sommata e poi elaborata ancora su report in
argomento. e poi i problemi che si presentano nel report che ho citato
grazie antonio,
avevo premesso che sono autodidatta.
il file contiene 1 sacco di cose sarebbe complesso inviartelo. l'unica
cosa che posso dirti a questo punto � che sei stato molto gentile e
disponibile. Legger� e prover�
ti ringrazio
rino
Il thread ᅵ lunghissimo ... magari ti ᅵ giᅵ stato suggerito e mi ᅵ
sfuggito. In caso contrario prova cosᅵ:
=IIf(Nz(Testo203;0)<>0; SommaDiE1/ Testo203;0)
Ciao
--
Alberto S
Ciao rino,
Mi rendo conto che ieri, rispondendoti in maniera affrettata, ho
commesso degli errori; proverò a riparare, anche perchè ho la
sensazione che ti sei un pò scoraggiato.
apri l'origine record del report e inserisci:
C: IIf([A] Or [B]=Null;IIf([B]<>0;[A]/[B];0);Null)
modificando naturalmente il nome dei campi.
Ciao Vladimiro.
> Ciao a tutti,
> premetto non sono esperto.
> ho 1 problema in un report faccio una divisione C=A/B se B � zero su C
> di mi esce ERROR anzich� zero.
> aiutatemi come posso ottenere zero?
> grazie tante
> rino
C=IIf([B]=0;0;[A]/[B])
--
Ciao
Pablitomf
-----------------------------------
Napoli nel "Q"uore.... sempre e comunque.
-----------------------------------
Chi parla senza modestia trover� difficile rendere buone le proprie parole.
Confucio
questo articolo e` stato inviato via web dal servizio gratuito
http://www.newsland.it/news segnala gli abusi ad ab...@newsland.it
Stavo pensando che potresti trovarti nella situazione di avere anche
il campo A vuoto o = 0, allora è meglio modificare la condizione
(campo C nella query del report) così:
C: IIf([A] Or [B]=Null;IIf([B]=0;0;[A]/[B]);Null)
In questo modo, se i campi A o B o uno di essi è vuoto oppure il campo
A è = 0 anche il campo C sarà vuoto, se il campo A é > 0 ed il campo B
è = 0, il campo C sarà = 0
Di nuovo Vladimiro.
Albert ti ringrazio tanto sei stato di aiuto. ho risolto tutto
grazie
rino