Newsgroup: it.comp.appl.access
Titolo: Overflow runtime 6

Sul piede di una form calcolo dei totali e in un controllo metto in formato percentuale il rapporto fra TOT1 e TOT2. Tutto ok.
Su corrente vorrei fare in modo che se la percentuale supera un certo valore si visualizzi un bottone ... quindi 
if percentuale  > 10 then ....
 
E a questo punto mi da l'errore di overflow.
 
Ho provato a mettere clng(percentuale) ma senza successo.
 
Come posso risolvere?


Maschera Singola o Continua...?
Se sei nel 2° Caso il Button da Visualizzare non è gestibile come pensi.
 
Cos'è [percentuale]...? Un controllo oppure una Variabile...?
Scritta così sembra una Variabile e non un controllo(avrebbe il Riferimento a Me!)... 
Nel caso come è dichiarata...?
Sai che quando si definisce PERCENTUALE in realtà è solo una rappresentazione del Formato del dato non la valorizzazione che rimane Decimale...?
Quindi quello che definisci 10(come 10%) in realtà è dato da 0,1
 
Fai le tue considerazioni e vedi di capire dove sbagli.
 
@Alex

 Nel caso come è dichiarata...?
 
La maschera è continua ... quindi già qui un primo problema. Come dovrei gestire la cosa?
Percentuale è in realtà un controllo (o messo il me. per velocità nel messaggio). In quanto al formato lo so che è solo in visualizzazione ma il problema di overflow non riesco comunque a capire da dove nasce nè come risolverlo. I singoli TOT sono semplici somme ... il problema è il loro rapporto? Ma il controllo percentuale non mi da nessun problema. Perchè solo quando provo a confrontarlo con un if?
 
 

> (o messo il me. per velocità nel messaggio)
 
Ho omesso il me. per velocità nel messaggio

 Ho omesso il me. per velocità nel messaggio
 
provo a dare un suggerimento SENZA però dare una risposta alla questione overflow
Innanzi tutto occorre un NUOVO campo nel record e un controllo (testo ? ) associato nella form continua.
Se, come hai descritto, la necessità di evidenziare il valore avviene di volta in volta, al posizionamento sulla riga della maschera continua, io farei così:
Sistemerei il controllo testo in modo che possa apparire come un pulsante
(layout?, colori di sfondo e del carattere ? bloccato ma che resta sensibile al doppio click !)
Poi
il controllo è sempre invisibile
all'evento SuCorrente fai il calcolo di questa percentuale (query al volo ? dovresti avere i criteri necessari) e se il valore supera il test rendi visibile il controllo che può ricevere il doppio click.
All'uscita dal record fai ritornare NON visibile il controllo

Provo a descrivere meglio.
 
Ho una form continua che praticamente mi mostra il [MAx_richiedibile]
 e il [Fatturabile] raggiunto di alcuni [Operatori]
 
A pie' di pagina della maschera ho il [TOT_MAx_richiedibile] ed il [TOT_Fatturabile]
 
Quando il [TOT_fatturabile]/[TOT_MAx_richiedibile] >= 10% (0,1) si dovrebbe visualizzare un [Controllo] normalmente invisibile.
 
Evento SUCorrente
 
If me.[TOT_fatturabile]/me.[TOT_MAx_richiedibile]>= 0,1 then ....
 
E su questo mi scatta l'overflow


Verifica che il DENOMINATORE non valga ZERO... mi sa tanto che...
 
@Alex

Il giorno mercoledì 5 aprile 2017 11:22:16 UTC+2, zut ha scritto:

e anche:
quale risultato ottieni con la stessa query fatta da QBE con i criteri di selezione necessari riferiti alla maschera APERTA (criteri di eventuale selezione record) E con il cursore dove ti è necessario vedere il risultato (ANCHE qui ci può essere un criterio aggiuntivo di selezione) ?

Esatto ... Eccolo lì l'errore....
se faccio eseguire l'if quando la maschera è già aperta funziona perfettamente.
Evidentemente SuCaricamento avviene prima che il calcolo avvenga e quindi è un overflowwwwwww grande come una casa!!
 
Bene ... su quale evento della form posso quindi caricarlo?


Se devi eseguirlo SOLO 1 volta, puoi usare un trucchetto su Timer...
Se deve essere ricalcolato a seconda valuta CURRENT.
 
Su Timer si può fare una cosa simile:
 
Private Sub Form_Load()
   Me.TimerInterval=500
End Sub
 
Private Sub Form_Timer()
   ' ESEGUI IL TUO CALCOLO
   Me.TimerInterval=0
End Sub
 
Viene eseguito solo ONE-SHOT a 500ms dopo l'apertura.
 
@Alex

Il giorno mercoledì 5 aprile 2017 15:02:27 UTC+2, zut ha scritto:

se comunque ti devi spostare con il cursore su tutti i record (tutte le righe della form) per far variare l'aspetto di un controllo proprio del record puoi anche mettere un pulsante nella form (che quindi appare in tutte le righe) che va a testare il risultato della query SALVATA con tutti i criteri di selezione ripresi dalla form (e dalla posizione del cursore, ORA sul pulsante), e quindi fai il test "a comando" premendo un pulsante e NON "in automatico" scorrendo con il cursore

 Viene eseguito solo ONE-SHOT a 500ms dopo l'apertura.
 
Fantastico. Funzia!!