PDA

View Full Version : پیغام خطای Error converting data type nvarchar to numeric



Mehrdad_Parsi
چهارشنبه 27 فروردین 1393, 08:11 صبح
با سلام
من یه فرم دارم که داخلش 3 تا تکست باکس هست . دو تا تاریخ و داخل سومی یه کد (کد سازنده ) وارد میشه
تاریخ ها Varchar و کد Numerc هست

یه گرید ویو وجود داره که براساس این پارامترها اطلاعاتش بروز میشه . زمانیکه همه اطلاعات رو وارد کنم تاریخ و کد مربوطه ، گرید ویو بروز میشه ولی زمانیکه فقط تاریخ ها رو وارد می کنم و تکس باکس کد سازنده رو خالی میزارم با خطای زیر روبرو میشم :Error converting data type nvarchar to numeric
اینم کد برنامه :



SqlConnection conn = new SqlConnection("Data Source=" + strserver + ";Initial Catalog=co;User id=p;Password=4");
SqlDataAdapter adapter = new SqlDataAdapter(); ;
DataSet ds = new DataSet();
conn.Open();
// 1. declare command object with parameter



System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
cmd.CommandText = "SELECT * FROM dbo.PEYMANKAR_QTY_DTE_T WHERE ( IGSD_SUP_DTE > = @IGSD_SUP_DTE OR @IGSD_SUP_DTE = '') AND ( IGSD_SUP_DTE < = @IGSD_SUP_DTE1 OR @IGSD_SUP_DTE1 = '') AND ( IGSD_RSUP_SUP1 = @IGSD_RSUP_SUP1 OR @IGSD_RSUP_SUP1 = '') ";


cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
// 2. define parameters used in command object
SqlParameter param = new SqlParameter();
SqlParameter param1 = new SqlParameter();
SqlParameter param2 = new SqlParameter();

// decimal IGSD_RSUP_SUP1 = decimal.Parse(TXT_RSUP.Text);

param.ParameterName = "@IGSD_SUP_DTE";
param1.ParameterName = "@IGSD_SUP_DTE1";
param2.ParameterName = "@IGSD_RSUP_SUP1";


param.Value = TXT_FROM.Text;
param1.Value = TXT_TO.Text;
param2.Value = TXT_RSUP.Text;



// 3. add new parameter to command object
cmd.Parameters.Add(param);
cmd.Parameters.Add(param1);
cmd.Parameters.Add(param2);

//4.set adapter
adapter.SelectCommand = cmd;

adapter.Fill(ds, "dbo.PEYMANKAR_QTY_DTE_T");

DGV_PEYMANKAR.DataSource = ds.Tables["dbo.PEYMANKAR_QTY_DTE_T"];

conn.Close();

118037

ممنون میشم راهنمایی بفرمایید

nasim394
چهارشنبه 27 فروردین 1393, 12:24 عصر
1-توی پروزه خودت یک دیتا ست داری . جداول پاک کن . دوباره از server explorer اضافه کن.

2-قبلش نوع دادهات راچک کن توی بانک

Mehrdad_Parsi
چهارشنبه 27 فروردین 1393, 12:42 عصر
ممنون و سپاسگزار ولی متوجه نشدم با دیتاست چیکار باید کنم . ولی مورد بعد اینه که من جداولم رو از طریق لینک سرور تو پروژم اضافه کردم . اطلاعات را از بانک اطلاعاتی اوراکل شرکت می گیرم که فرمتش مشخصه

Mehrdad_Parsi
چهارشنبه 27 فروردین 1393, 15:21 عصر
دوستان زمانیکه هر سه پارامتر دیتا داره درست کار می کنه ولی زمانیکه یکی از پارامترها خالی است با این خطا مواجه میشم

مهرداد صفا
چهارشنبه 27 فروردین 1393, 18:45 عصر
سلام.
فیلد سوم طبق گفته خودتون از نوع عددی هست، در حالیکه شما با رشته مورد مقایسه قرار دادید!

Mehrdad_Parsi
چهارشنبه 27 فروردین 1393, 21:22 عصر
واقعیت من با متد int.parse کار تبدیل مقدار تکست باکس سومو انجام دادم ولی با خطای input string was not in correct format روبرو شدم . اگر بزرگواری بفرمایید چجوری باید تبدیل کنم ممنون میشم

مهرداد صفا
چهارشنبه 27 فروردین 1393, 21:52 عصر
واقعیت من با متد int.parse کار تبدیل مقدار تکست باکس سومو انجام دادم ولی با خطای input string was not in correct format روبرو شدم . اگر بزرگواری بفرمایید چجوری باید تبدیل کنم ممنون میشم


متن درون textBox و کدتون رو لطف کنید.

Mehrdad_Parsi
پنج شنبه 28 فروردین 1393, 07:46 صبح
param2.Value = int.Parse(TXT_RSUP.Text);

nasim394
پنج شنبه 28 فروردین 1393, 09:47 صبح
param2.Value = int.Parse(TXT_RSUP.Text);

مقدار text نباید خالی باشه از دستور convert.int32 استفاده کن

Mehrdad_Parsi
پنج شنبه 28 فروردین 1393, 10:09 صبح
مقدار text نباید خالی باشه از دستور convert.int32 استفاده کن

بازم خطا میده متاسفانه . البته گاهی نیاز دارم بدون ورود پارامتر در این فیلد گزارش تهیه کنم . یعنی صرفا تاریخ شروع و پایان
118075