Condividi tramite

Verificare se una stringa ha in valore numerico

Anonimo
2016-10-09T20:34:15+00:00

ho delle stringhe(numeriche) da inserire in un DB in un campo "Valuta"

chiaramente prima dell' INSERT devo fare la validazione   :)

potrei usare la specifica funzione  "IsNumeric"  ma ci sono 2 problemi

15,7  viene "venduto" per numerico ma per andare nella INSERT mi serve il 15.7

questo lo risolvo facilmente con un replace   :)

la cosa più complicata è che anche  15.7,5  o 25.3.1  o  9,8.5 vengono "venduti"

per numerici e questi mi danno errori durante la INSERT 

io la avrei risolta come sotto ma mi chiedo se non ci sia qualcosa di meglio.

Grazie

[code] 

Public Sub VerificaSeNumerico()

Dim nnn As Variant

nnn = "15247.2,3"

nnn = Replace(nnn, ",", ".")

' se ci sono 2 punti trasformo la stringa "FalsaNumerica" in un testo in modo che venga intercettato sotto 

If InStr(InStr(nnn, ".") + 1, nnn, ".") > 0 Then nnn = "dew"

MsgBox IsNumeric(nnn)

End Sub

[/code]

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2016-10-09T22:33:57+00:00

Ciao Mancini,

non so se è il tuo caso ma i valori che hai mostrato sono tutti numerici e possono essere trasformati nel formato usa tramite la funzione STR()

STR("15,7 ") = 15.7

STR("15.7,5") = 157.5

STR("25.3.1") = 2531

STR("9,8.5") = 9.85

la stessa cosa è valida per numeri formattati in italiano

STR("1.123.500,25") = 1123500.25

Ciao

Giorgio Rancati

La risposta è stata utile?

0 commenti Nessun commento

1 risposta aggiuntiva

Ordina per: Più utili
  1. Anonimo
    2016-10-09T23:36:36+00:00

    Caspita che figuraccia che ho fatto  :(

    quindi il punto è il separatore delle migliaia (che ho studiato in 1° elementare)

    ma che non è obbligo da mettere ogni 3 cifre, 

    e semplicemente  NON influisce sul valore del risultato

     mentre la virgola è il separatore delle migliaia che viene trasformato in punto prima degli INSERT

    visto cosi è semplice e corretto.


     Il problema è che i miei utenti se devono scrivere per esempio 782 e 3 decimi mi digitano

    indifferentemente   782.3  oppure 782,3 

    che se lo trasformo con Str(xxxxx) mi restituisce  7823 oppure 782.3

     poi il valore di  78.2,3 nonostante sia informaticamente un numero

    è comunque  (per i miei utenti)  un errore di digitazione che devo intercettare

    (non parliamo poi di 78,2,3) 

    Sostanzialmente devo validare le mie "Stringhe Numeriche" solo se sono

    composte dalle 10 cifre da zero a nove e da UN SOLO  carattere di separazione

    che sia punto o indifferentemente virgola 

    Mi sa che la soluzione  anche se sbagliata è ancora quella che avevo abbozzato nel 1° post 

    ma adesso è già notte e non riesco più a pensare 

    Grazie per la visione alternativa 

    Mancini

    La risposta è stata utile?

    0 commenti Nessun commento