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

Sto cercando di far fare un semplice calcolo ad Access ma mi succede una
cosa che non capisco
In una frm ho 2 text in cui l'utente inserisce dei valori.Con VBA assegno a
due variabili il valore delle txt
e con la funzione CSng trasformo il valore in single.Fin quì tutto bene.Il
problema è che quando faccio la divisione
la variabile sngRisultato mi ritorna 0.Anzi sulla finestra immediata mi
scrive Falso.
Qualche suggerimeto?
SunRex
Private Sub cmdCalcola_Click()
Dim strCampo1 As String
Dim strCampo2 As String
Dim sngRisultato As Single
strCampo1 = CSng(txtCampo1.Value)
strCampo2 = CSng(txtCampo2.Value)
Debug.Print sngRisultato = strCampo1  / strCampo2
End Sub

 ha scritto nel messaggio
news:MQDMa.9280$HU3.2...@news2.tin.it...

Senti un po'.
Mi spieghi perchè delle variabili che devono contenere un valore single come
è quello dato dalla funzione CSign, le hai dichiarate STRING !??!!??!?!?
Antonio

 ha scritto nel messaggio
news:MQDMa.9280$HU3.2...@news2.tin.it...

Io ho capito che questi valori sono single e allora hanno i loro problemi,
ma perchè diventano prima string e poi single?
MAssimiliano

 ha scritto nel messaggio
news:MQDMa.9280$HU3.2...@news2.tin.it...

Credo che il problema derivi dal fatto che comunque i campi destinatari
della conversione sono di tipo stringa, ed alla fine esegui una divisione
tra stringhe.
Secondo me puoi provare a definire come single i campi strCampo1 e
strCampo2, oppure se per motivi particolari non puoi farlo, prova con:
sngRisultato = CSng(strCampo1)  / CSng(strCampo2)
Il motivo per cui il Debug.Print ti restituisce Falso, dovrebbe dipendere
dal fatto che la parte a Dx viene tutta interpretata come un espressione di
confronto e non come un'istruzione di assegnazione.
Quindi devi mettere le due istruzioni su righe separate
sngRisultato = CSng(strCampo1)  / CSng(strCampo2)
Debug.Print sngRisultato
Ciao.

 ha scritto nel messaggio
news:e3EMa.140235$Ny5.3...@twister2.libero.it...

Perchè sono imbecille :(
Cmq se dichiaro tutte le variabili Single e provo a fargli fare 20/20 mi da
Overflow.
SunRex

 ha scritto nel messaggio
news:X7EMa.9431$HU3.2...@news2.tin.it...

Ok per il debug hai ragione.
Ho provato a dichiarare tutto Single ma per esempio facendo 20/20 mi da
OverFlow.
SunRex

 ha scritto nel messaggio
news:M7EMa.9024$de....@news.edisontel.com...

Ti rimando alla mia risposta alla e mail di A.Biso.
SunRex

 ha scritto nel messaggio
news:oQFMa.10130$HU3.2...@news2.tin.it...

In A2000 sotto Win XP ho creato una maschera vuota con due controlli non
legati, ho inserito le stesse istruzioni nella routine evento 'dopo
aggiornamento' del secondo controllo e tutto funziona.
Magari prima della divisione non hai più i valori 20 e 20.
Xchè non fai un bel MsgBox del valore dei due controlli?
Se continua a non funzionare, prova con una maschera vuota come ho fatto io.
Se ancora non funziona prova con un esorcista.
Ciao.

 ha scritto nel messaggio
news:vHGMa.7063$xK6.1...@news1.tin.it...

Tombola.Il fatto era che scrivendo Debug.Print sngRisultato = strCampo1  /
strCampo2
VBA provava a fare il confronto (Vero/Falso) e quindi mi sballava la
variabile sngRisultato.
Adesso funziona anche dichiarando le variabili string ed usando CSng
Grazie a tutti e scusate ma mi sono incasinato da solo.
SunRex

 Ti rimando alla mia risposta alla e mail di A.Biso.
Post, si chiama post sui NG.
L'email è quella che mandi direttamente ad una persona.
Antonio

 ha scritto nel messaggio
news:luQMa.142737$lK4.3...@twister1.libero.it...

Scusa non lo sapevo.
SunRex

 SunRex
Già... eppure natale è passato da tanto...
Compleanno?
Esami superati?
Ehe heehhe eehe e eeehhhh
Antonio