Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,117

    problema con gestione virgola

    Ho un text box che contiene un valore del tipo xx,xx

    quando lo salvo in un db, utilizzando

    myCommand.Parameters.Add(new OleDbParameter("@Imponibile",
    OleDbType.Decimal));

    myCommand.Parameters.Add(new OleDbParameter("@Sconto", OleDbType.Decimal));

    myCommand.Parameters.Add(new OleDbParameter("@Iva", OleDbType.Decimal));

    myCommand.Parameters.Add(new OleDbParameter("@TotaleRiga",
    OleDbType.Decimal));



    myCommand.Parameters["@Imponibile"].Value = TotImp2.Text;


    myCommand.Parameters["@Sconto"].Value = 0;


    if (Iva2.ToString() != "")

    {

    myCommand.Parameters["@Iva"].Value = Iva2.Text;

    }

    else

    {

    myCommand.Parameters["@Iva"].Value = 0;

    }

    ...



    in locale funziona tutto correttamente, mi salva ad esepio 2,1

    sul server "ufficiale" invece ho: 21

    per quale motivo il valore viene moltiplicato per 100?

    grazie per l'aiuto





    nel web.config ho già

    <globalization culture="it-IT" ... />


    il server di sviluppo è windows 2003 (lingua ENG), con la lingua IT
    impostata

    il server che da problemi è windows 2000 (lingua ITA), e nelle opzioni
    internazionali ho impostato italia ed il formato 1.000.000,xx


    la cosa strana è che, l'applicazione funziona correttamente (quindi 1,20 viene salvato come 1,20) nella versione inglese di windows 2003, mentre 1,20 diventa 12,0 nella versione in italiano di windows 2000.

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    4,127
    purtroppo non sei la prima ne sarai l'ultima ad avere problemi di questo tipo..
    ti propongo la più banale delle risoluzioni (l'unica ke mi viene in mente): un replace di , con .

  3. #3
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,117
    ho trasformato

    myCommand.Parameters.Add(new OleDbParameter("@Imponibile",
    OleDbType.Decimal));

    myCommand.Parameters.Add(new OleDbParameter("@Imponibile",
    OleDbType.VarChar));

    ed ora sul server va bene

    e sul pc di prova moltiplica

    che casino!!!

    come sarebbe la soluzione del replace?

    thanks

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    4,127
    al posto ke fare
    myCommand.Parameters["@Iva"].Value = Iva2.Text;
    fai
    myCommand.Parameters["@Iva"].Value = Replace(Iva2.Text, ",", ".");


  5. #5

    Re: problema con gestione virgola

    Non credo che cambiare un parametro per un campo decimal in varchar sia la strada giusta. Cmq, tanto per darti una traccia, forse il problema nasce nella lettura della stringa di testo contenuta nella textbox...
    Saluti a tutti
    Riccardo

  6. #6
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,117

    Re: Re: problema con gestione virgola

    Originariamente inviato da riccardone
    Non credo che cambiare un parametro per un campo decimal in varchar sia la strada giusta. Cmq, tanto per darti una traccia, forse il problema nasce nella lettura della stringa di testo contenuta nella textbox...
    avevo pensato anche a questo

    ma per quale motivo?

    e perchè sui due server si comporta differentemente?

  7. #7
    prova una cosa così (in vb)


    codice:
    <%@ Import NameSpace="System.Globalization" %>
    <%@ Import NameSpace="System.Globalization.CultureInfo" %>
    
    ............
    ...........
    
    Dim Thread as CultureInfo
    Thread = CurrentCulture
    if Thread.ToString() = "it-IT" then
    myCommand.Parameters("@Iva").Value = Iva2.Text
    else
    myCommand.Parameters("@Iva").Value = Replace(Iva2.Text, ",", ".")
    end if
    ed usa la virgola come separatore dei decimali
    "...non è detto che sia tardi se non guardi che ora è..."

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.