webForumDet fria alternativet

“Error converting data type nvarchar to numeric“

0 svar · 464 visningar · startad av _YES

_YESMedlem sedan feb. 20071 inlägg
#1

Hej

Jag utvecklar ett program i Visual Studio 2005 (Visual Basic) som använder sig av databastabeller i SQL Server. Men jag får problem när jag försöker att göra Insert eller Update på tabellvärden som i databasen är definierade som decimal(10,2). eftersom VB och SQL använder sig av olika decimalavskiljare . Se exempelkod nedan. Hur löser man detta på ett smidigt sätt?

----------------------------------------------------------------------
SqlDataSource3.SelectParameters("ProdRadNr").DefaultValue = Radnr
reader = SqlDataSource3.Select(arg)

While reader.Read
Visa_Produkt.UpdateParameters("nr").DefaultValue = Radnr
Dim brutto As Decimal = NullSafeDecimal(reader.Item("S:a Artiklar"))
Dim netto As Decimal
Dim _rabatt As Decimal

' Kontrollerar om användaren är kopplad till någon rabattsats
If Kategori = 1 Then
If TextBox_Rabatt.Text <= 100 Or TextBox_Rabatt.Text > 0 Then
_rabatt = brutto * TextBox_Rabatt.Text * 0.01
Else
_rabatt = 0
End If
Else
_rabatt = brutto * Rabatt * 0.01
End If
netto = brutto - _rabatt

Visa_Produkt.UpdateParameters("Brutto").DefaultValue = brutto
Visa_Produkt.UpdateParameters("Rabatt_kr").DefaultValue = _rabatt
Visa_Produkt.UpdateParameters("Netto").DefaultValue = netto
If Vald = 3 Or Vald = 4 Or Vald = 6 Or Vald = 7 Then
If Vald = 4 Then
Visa_Produkt.UpdateParameters("Nto_s").DefaultValue = netto
End If
Visa_Produkt.UpdateParameters("Nto_s").DefaultValue = netto / TextBoxA5.Text
Else
Visa_Produkt.UpdateParameters("Nto_m").DefaultValue = netto / TextBoxA1.Text
End If
------------------------------------------------------------------------

Här blir det fel, “Error converting data type nvarchar to numeric“ , när variablerna "brutto, "netto" och "_rabatt" används för att uppdatera( eller infoga) värden till databasen

------------------------------------------------------------------------
Felmeddelande som genereras av ovan beskrivna kod:

[SqlException (0x80131904): Error converting data type nvarchar to numeric.]
System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) +177
System.Data.SqlClient.SqlInternalConnection.OnError(SqlExcep
tion exception, Boolean breakConnection) +68
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(Tds
ParserStateObject stateObj) +199
System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +2300
System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlData
Reader ds, RunBehavior runBehavior, String resetOptionsString) +147
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(Command
Behavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) +1021
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBeh
avior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) +314
System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbA
syncResult result, String methodName, Boolean sendToPipe) +413
System.Data.SqlClient.SqlCommand.ExecuteNonQuery() +115
System.Web.UI.WebControls.SqlDataSourceView.ExecuteDbCommand
(DbCommand command, DataSourceOperation operation) +392
System.Web.UI.WebControls.SqlDataSourceView.ExecuteUpdate(ID
ictionary keys, IDictionary values, IDictionary oldValues) +639
System.Web.UI.WebControls.SqlDataSource.Update() +17
Produkter.Button_OK_Click(Object sender, EventArgs e) in C:\CWL\Produkter.aspx.vb:635
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +75
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +97
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEven
tHandler.RaisePostBackEvent(String eventArgument) +7
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +170
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +4921
------------------------------------------------------------------------

Hoppas att det finns någon som har en bra lösning till detta.

Tacksam för snabbt svar

_YES

260 ms totalt · 3 externa anrop · v20260731065814-full.30151723
127 ms — hämta forumlista (db)
122 ms — hämta statistik (db)
136 ms — hämta tråd, inlägg och bilagor (db)