Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2009
    residenza
    Belo Horizonte, Brazil
    Messaggi
    258

    [2.0-C#] Salvare valori decimali sul db

    Ciao a tutti!
    Sono intrippato su un problema. Immesso un numero decimale, per esempio 0,5, su una textbox devo salvarlo sul db. Solo che ho provato in svariati modi. Mi dà sempre errore su command.ExecuteNonQuery();
    Che fare?

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    che codice usi?
    Pietro

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2009
    residenza
    Belo Horizonte, Brazil
    Messaggi
    258
    Originariamente inviato da pietro09
    che codice usi?
    Vorresti vedere il codice?

    codice:
    //classe timesheet
    public string Salva(string ID_Timesheet, string ID_Dipendente, string Data_Timesheet, string Cod_Arca, string ID_Commessa, decimal Ore)
    {
    Timesheet mioTS = new Timesheet();
    SqlConnection conn = new SqlConnection();
    SqlCommand com = new SqlCommand();
    conn.ConnectionString = "Data Source=nomecomputer\\SQLEXPRESS;Initial Catalog=database;Integrated Security=True";
    com.Connection = conn;
    com.CommandText = "INSERT INTO Timesheet(ID_Timesheet, ID_Dipendente, Data_Timesheet, Cod_Arca, ID_Commessa, Ore) VALUES('" + ID_Timesheet + "', '" + ID_Dipendente + "', '" + Data_Timesheet + "', '" + Cod_Arca + "', '" +
                        ID_Commessa + "', " + Ore + ")";
    conn.Open();
    com.ExecuteNonQuery();
    conn.Close();
    return "0";
    }
    
    //codice c# pagina timesheet
    mioTS.Salva(mese, User.Identity.Name, lblLun.Text, ddlCliente1.Text, ddlCommessa1.SelectedItem.Text, decimal.Parse(txtLun1.Text));

  4. #4
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    in questa riga

    ID_Commessa + "', " + Ore + ")";

    prova a cambiare (ho scritto in pseudo codice, perciò correggi)

    ID_Commessa + "', " + Ore.tostring().replace(",", ".") + ")";

    ossia, converti ore in stringa e prova a cambiare la virgola decimale in punto. :master:
    Pietro

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2009
    residenza
    Belo Horizonte, Brazil
    Messaggi
    258
    Originariamente inviato da pietro09
    in questa riga

    ID_Commessa + "', " + Ore + ")";

    prova a cambiare (ho scritto in pseudo codice, perciò correggi)

    ID_Commessa + "', " + Ore.tostring().replace(",", ".") + ")";

    ossia, converti ore in stringa e prova a cambiare la virgola decimale in punto. :master:
    Con la virgola mi dà il seguente problema:

    "Formato della stringa di input non corretto."

    codice:
    mioTS.Salva(mese, User.Identity.Name, lblMar.Text, ddlCliente1.Text, ddlCommessa1.SelectedItem.Text, decimal.Parse(txtMar1.Text));
    e fa riferimento ad una textbox vuota (txtMar1.Text). Ho tante textbox che accettano i numeri decimali, e se sono vuote mi danno questo problema. Il bello è che prima, quando il campo Ore sul database era int, andavano bene anche le textbox vuote.. ora no. -.-
    Sarà perché, sulla classe, ho messo Ore come decimal anziché string (com'era prima)?




    EDIT: se metto Ore tra apici oltre alle virgolette, e lo dichiaro come string mi dà il seguente errore:

    "Errore durante la conversione del tipo di dati da varchar a numeric."

    Da notare ancora che quando Ore sul db era int non mi dava questo errore..

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2009
    residenza
    Belo Horizonte, Brazil
    Messaggi
    258
    Anyone?

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    59
    usa Decimal.TryParse invece di Decimal.Parse e se la conversione fallisce mostri un bel messaggio di errore senza eseguire la query

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2009
    residenza
    Belo Horizonte, Brazil
    Messaggi
    258
    Originariamente inviato da bitman
    usa Decimal.TryParse invece di Decimal.Parse e se la conversione fallisce mostri un bel messaggio di errore senza eseguire la query
    Ma decimal.TryParse è bool.

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    59
    quel booleano ti dice se la conversione ha avuto successo, il valore convertito è il secondo parametro in out

    leggi la documentazione
    http://msdn.microsoft.com/it-it/library/9zbda557.aspx

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2009
    residenza
    Belo Horizonte, Brazil
    Messaggi
    258
    Originariamente inviato da bitman
    quel booleano ti dice se la conversione ha avuto successo, il valore convertito è il secondo parametro in out

    leggi la documentazione
    http://msdn.microsoft.com/it-it/library/9zbda557.aspx
    Ho capito. Infatti adesso funziona.
    Grazie mille!

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.