Xche non mi vengono visualizzati i decimali in SQL Server??

lunedì 21 giugno 2010 - 23.39

86Marco Profilo | Expert

Salve,
ho una stored procedure con questi dati in input dichiarati

@Descrizione varchar(50),
@Entrate money,
@Uscite money,
@numeroconto varchar(50)

Le tabella che deve contenere i campi Entrate ed Uscite sono anch'essi money

Perchè se salvo da una textbox, che poi passo come parametro alla SP, il valore 156.25 mi viene salvato nel database 156!????

Mi sapreste dire quale tipo di dati dovrei utilizzare per avere esattamente i dati decimali corretti cosi come li metto dalla textbox?


In più a che serve il tipo di dato money se nn visualizza il simbolo di valuta ma solo 4 zeri dopo la virgola?
Grazie!!

alx_81 Profilo | Guru

>Salve,
Ciao

>Le tabella che deve contenere i campi Entrate ed Uscite sono anch'essi money
>Perchè se salvo da una textbox, che poi passo come parametro
>alla SP, il valore 156.25 mi viene salvato nel database 156!????
Dipende dal codice che scrivi per passare i dati al database, postane una parte, soprattutto la definizione delle variabili che usi e dei parametri che crei.

>In più a che serve il tipo di dato money se nn visualizza il
>simbolo di valuta ma solo 4 zeri dopo la virgola?
Il simbolo di valuta è SOLO ED ESCLUSIVAMENTE un formato, sul database non ti devi preoccupare della rappresentazione di un dato ma della sua natura.
E Money è un decimal a 8bytes con 4 cifre dopo la virgola. Sta a te definire la valuta nella parte di software che presenta il dato.
E' semplicemente un decimale, non è EURO o DOLLARI, anche perchè quello è il significato che assume l'informazione dopo che tu hai deciso come trattarla.

>Grazie!!
di nulla!
--

Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

86Marco Profilo | Expert

ciao alex

lo stralcio di codice che passa i parametri al database è questo:


Dim con As New SqlConnection
con.ConnectionString = "Data Source=etc etc"

Dim cmd As New SqlCommand
cmd.CommandType = CommandType.StoredProcedure
cmd.CommandText = "InsertMovimentazioni"

cmd.Parameters.AddWithValue("Descrizione", TextBox1.Text)
cmd.Parameters.AddWithValue("Entrate", TextBox2.Text)
cmd.Parameters.AddWithValue("Uscite", TextBox3.Text)
cmd.Parameters.AddWithValue("numeroconto", ComboBox1.SelectedValue)

con.Open()
cmd.Connection = con

Dim a As Integer = 0

cmd.ExecuteNonQuery()
MsgBox(a & " righe inserite")
con.Close()

Come faccio per farmi salvare anche i decimali :) Grazie

alx_81 Profilo | Guru

>ciao alex
ciao

>Come faccio per farmi salvare anche i decimali :) Grazie
sostituisci queste:
cmd.Parameters.AddWithValue("Entrate", TextBox2.Text) cmd.Parameters.AddWithValue("Uscite", TextBox3.Text)

con queste:
cmd.Parameters.Add("@Entrate", SqlDbType.Decimal) cmd.Parameters("@Entrate").Precision = 7 'imposta te il valore che ti serve cmd.Parameters("@Entrate").Scale = 2 'imposta te il valore che ti serve cmd.Parameters("@Entrate").Value = TextBox2.Text cmd.Parameters.Add("@Uscite", SqlDbType.Decimal) cmd.Parameters("@Uscite").Precision = 7 'imposta te il valore che ti serve cmd.Parameters("@Uscite").Scale = 2 'imposta te il valore che ti serve cmd.Parameters("@Uscite").Value = TextBox3.Text

ho fatto il codice al volo, chiedo venia per eventuali errori..
--

Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
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