Errore calcolo textbox

venerdì 08 maggio 2015 - 16.23
Tag Elenco Tags  Windows XP  |  Access (.mdb)  |  Office 2007  |  Firefox

Ms402 Profilo | Newbie

Salve, ho una maschera dove tramite 3 combobox collegate richiamo dei valori che vengono inseriti in delle textbox. Poi ho altre textbox in cui vengono effettuati dei calcoli con i valori precedentemente richiamati. Ora il problema che si presenta è che quando mi va a fare la somma di 2 campi richiamati, non li tratta come numeri ma come testo. Invece di sommare 2+1=3 mi scrive 21. Questo lo fa solo con l'addizione mentre con altre espressioni più complesse funziona bene.
In origine controllo scrivo l'espressione: =[Testo0]+[Testo2]
C'è una soluzione? Anticipatamente ringrazio.

Ho fatto un tentativo facendo compiere i calcoli in una query e poi richiamarli. Ora i calcoli sono esatti ma anche impostando i decimali alla 2 cifra me li mostra tutti ignorando le istruzioni, quindi deduco che li tratta come testo e non come numeri.

renarig Profilo | Expert

>.... Poi ho altre textbox in cui vengono effettuati dei calcoli
>con i valori precedentemente richiamati. ........

>..... non li tratta come numeri ma come testo
> ...... Invece di sommare 2+1=3 mi scrive 21

Se fossero veramente dei numeri ti scriverebbe 3
se invece ti scrive 21 è evidente che si tratta di testi

il motivo potrebbe essere nei "calcoli" che citi e soprattutto nelle
funzioni che usi per effettuare i tuoi calcoli.

devi consultare la guida e controllare il tipo dato restituito da ogni funzione utilizzata
e se questo fosse testo ( stringa ) allora convertilo subito in numero con le specifica
funzione
- CDbl([NomeControllo]) ----- per i decimali
- CInt([NomeControllo]) ------ per gli interi



PS: inutile dirti che la conversione potresti farla anche alla fine
=CDbl([Testo0])+CDbl([Testo2])
ma io la consiglio alla origine


Facci sapere


Ms402 Profilo | Newbie

Carico le textbox con:
Private Sub cbo3_AfterUpdate()
Me!Testo0 = Me!cbo3.Column(1)
Me!Testo2 = Me!cbo3.Column(2)
End Sub
Se utilizzo la formula
=CDbl([Testo0])+CDbl([Testo2])
all'apertura della form mi da nella textbox dove viene effettuati il calcolo il valore #ERRORE fino alla selezione delle textbox. Ho provato ad usare la funzione NZ:
=Nz(CDbl([Testo0]);0)+Nz(CDbl([Testo2]);0)
ma non cambia nulla. Vorrei evitare di mostrare lo zero nelle textbox 0 e 2.
PS in un'altra textbox effettuo la divisione
=[Testo0]/[Testo2]
tutto funziona perfettamente. Mi chiedo il perchè di questa cosa.
Grazie per l'aiuto.

renarig Profilo | Expert

> Se utilizzo la formula
>=CDbl([Testo0])+CDbl([Testo2])
>all'apertura della form mi da nella textbox dove viene effettuati
>il calcolo il valore #ERRORE fino alla selezione delle textbox.

L'errore sta nel fatto che tenti di convertire un valore inesistente in un numero ........
Dovevo pensarci prima


>Ho provato ad usare la funzione NZ:
>=Nz(CDbl([Testo0]);0)+Nz(CDbl([Testo2]);0)
l'errore è gia nel CDbl([Testo0]) pertanto il Nz...
non ti puo aiutare se usato in quel modo.


Se fai cosi invece dovrebbe funzionare
=CDbl(Nz([Testo0];0))+CDbl(Nz([Testo2];0))


Facci sapere

Ms402 Profilo | Newbie

Ok funziona perfettamente. Grazie. L'unica cosa che non capisco perchè quando inserisco valori numeri tramite una combobox in una textbox li tratta come testo.

renarig Profilo | Expert

>..... perchè quando inserisco valori numeri tramite una
>combobox in una textbox li tratta come testo.

Perché la combobox restituisce nativamente dei Variant

https://msdn.microsoft.com/en-us/library/office/ff192660.aspx?f=255&MSPPError=-2147217396

poi il "+" che sembrerebbe un concatenatore .....
e poi non so cos'altro dire :-((

.

Ms402 Profilo | Newbie

Ok grazie credo di aver capito (spero!). Grazie ancora per i consigli.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5