Erreur de Conversion des données de type "Numérique" à Virgule (help!)
Bonne Journée À Tous,
Comme de maintenant je suis coincé avec cette erreur
Error Converting data type 'Numeric' to Decimal
c'est mon code
AddManualItems AddReconItem = new AddManualItems();
UserAccess user = new UserAccess();
AddReconItem.BranchCode = BranchCodeTextBox.Text;
AddReconItem.ForLoanMonth = YearDropDownList.SelectedValue + "/" + MonthDropDownList.SelectedValue;
AddReconItem.ItemWeight = Convert.ToDecimal(WeightTextBox.Text);
AddReconItem.PrincipalAmount = Convert.ToDecimal(PrincipalTexAmTextBox.Text);
AddReconItem.PawnTicket = PwnTicketTextBox.Text;
AddReconItem.ItemStorageGroup = Convert.ToInt16(StorageNameDropDownList.SelectedValue);
AddReconItem.ReconID = Convert.ToInt16(ReconTypeDropDownList.SelectedValue);
user.UserID = Session["UserID"].ToString();
string a = servs.AddItemRecon(user, AddReconItem); //this is where the error appears in debug mode
le code à l'intérieur de la ADDitemRecon(Utilisateur,AddReconItem) est-ce
using (SqlConnection reportsConn = new SqlConnection(sqlConnWriter))
{
reportsConn.Open();
SqlCommand AddReconItem = new SqlCommand();
AddReconItem.Connection = reportsConn;
AddReconItem.CommandType = CommandType.StoredProcedure;
AddReconItem.CommandText = "Updater.usp_AddReconcileItems";
AddReconItem.Parameters.AddWithValue("@ITEMWEIGHT", Convert.ToDecimal( items.ItemWeight));
AddReconItem.Parameters.AddWithValue("@ITEMPRINCIPALAMT", Convert.ToDecimal(items.PrincipalAmount));
AddReconItem.Parameters.AddWithValue("@FORLOANMONTH", Convert.ToDateTime(items.ForLoanMonth));
AddReconItem.Parameters.AddWithValue("@STORAGEGROUPID", items.ItemStorageGroup);
AddReconItem.Parameters.AddWithValue("@BRANCHCODE", items.BranchCode);
AddReconItem.Parameters.AddWithValue("RECONID", items.ReconID);
AddReconItem.Parameters.AddWithValue("@PAWNTIX",items.PawnTicket);
AddReconItem.Parameters.AddWithValue("@CREATEDBY", user.UserID.ToString());
AddReconItem.ExecuteNonQuery();
}
ma propriété pour ItemWeight est
private decimal itemWeight;
public decimal ItemWeight
{
get { return itemWeight; }
set { itemWeight = value; }
}
je parie que l'erreur est dans l'élément de poids parce que quand j'ai de l'entrée dans l'élément de poids
12345.12 il fonctionne très bien, mais quand je suis entrée 1234 au lieu de le traiter comme 1234.00 il la traite comme 1234 ne fais numérique..
de l'aide? je ne sais pas si mes conversions sont mal
Par la façon dont mon champ dans la base de données est
fld_ItemWeight (decimal (38,6), not null
EDIT**
Est-il des bugs connus en Décimal?? im en utilisant VS 2005 à partir de maintenant.
OriginalL'auteur Albert Laure | 2013-09-23
Vous devez vous connecter pour publier un commentaire.
Trouvé La réponse! ma Procédure stockée est faux j'ai décimal(9,6) dans mon stockées procedured faire accepter des 3 chiffres ou moins !changé (18,2)\
OriginalL'auteur Albert Laure
Je ne sais pas ce que la bonne solution pour ce problème , Mais j'ai une idée. Comme
Changer votre
ItemWeight
propriétéDataType
décimal à chaîneEdit :
Essayer ce une autre façon pour les utiliser
math.Round()
un 112345.00 lors de la conversion renvoie 112345 que les valeurs transmises dans la base de données et c'est là que l'exception se produit peut-être
Modifier votre base de données de la colonne Type de données décimal de type nvarchar et de tenter ma solution .
si je ne fais que ce qui est l'essence même de type de données décimal? je sais que cela pourrait fonctionner, mais ma base de données à souffrir de la récupération de données spécialement si j'ai besoin de la somme de tous car j'ai besoin de les convertir d'abord en décimal avant que je puisse somme.
Bon congé , voir Mon Jour de réponse .
OriginalL'auteur Ramesh Rajendran
Bien que l'affiche originale a trouvé sa solution, pour le bénéfice d'autres personnes, je pensais que j'allais poster ce qu'il fait pour moi.
Système.Les données.SqlClient.SqlException : Erreur de conversion de type de données numérique à virgule.
Malheureusement, le message ne dit pas quel est le paramètre qui c'est d'avoir le problème. J'ai donc modifié tous les paramètres que j'ai été en passant par avoir une valeur de 0 (ce qui est une valeur appropriée pour la plupart des types SQL, vous pouvez avoir besoin d'utiliser d'autres valeurs), ce qui fait disparaître l'erreur. Je pourrais alors mettre un retour à la normale, un par un, et à chaque fois, j'ai re-testé. C'est la façon dont j'ai travaillé sur le paramètre qui a le problème.
Il s'est avéré que pour l'un des paramètres de la valeur que j'avais dans mon code (C# décimal) était trop grand pour aller dans le decimal(7,2) paramètres de la procédure stockée.
OriginalL'auteur Richardissimo
Essayez à votre tour de valeur dans le jeu.
privé décimal itemWeight;
OriginalL'auteur Lalitha1729
Changement de colonne Sql en Décimal(18,2), Même dans le magasin de la procédure et de prendre SqlDbType.Décimal à ado.net fin
OriginalL'auteur Radheshyam Gavhane
lorsque vous appelez une procédure et il a un paramètre avec une décimale de type de données, alors vous peut passer que dans les fractions. Pour plus de détails, veuillez vous référer Erreur lors de la conversion de type de données numérique à virgule
OriginalL'auteur Sain Pradeep