PDA

View Full Version : سوال: ویرایش نشدن اطلاعات با sqlcommand



emad_ban
شنبه 30 آبان 1388, 22:06 عصر
با سلام
من از sqlcommand برای درج و ویرایش اطلاعات استفاده می کنم توی درج هیچ مشکلی نیست
ولی در ویرایش می خوام فیلدا رو ویرایش کنم نمی شه
توی where کلید اصلیم که int است را برابر با یک مقدار int که از گرید می گیرم می زارم ولی ارور می ده
Input string was not in a correct format
ولی وقتی متغیر رو string می کنم ارور می ده
Failed to convert parameter value from a string to int32
دوستان اگه می تونن یه راهنمایی بکنند.

Saeed.Masoumi
شنبه 30 آبان 1388, 22:42 عصر
سلام
لطفا کد هایتان را بگزارید

seven7777777
یک شنبه 01 آذر 1388, 00:32 صبح
سلام
این که بسیار واضحه که نوع فیلد شما Int هست ولی شما به دستور Sql Command مقدار String ( همون مقدار دریافتی از گرید ) رو پاس میدین .
همیشه برای پاس دادن مقادیر به یک Command درون Command از متغیرهایی به شکل @varname استفاده کنید و بعدا به شکل

command.Parameters.Add("@varname",SqlDbType.fieldtype).value = varvalue;
اونو مقدار دهی کنید تا مشکلی پیش نیاد .

emad_ban
یک شنبه 01 آذر 1388, 07:48 صبح
سلام
این که بسیار واضحه که نوع فیلد شما Int هست ولی شما به دستور Sql Command مقدار String ( همون مقدار دریافتی از گرید ) رو پاس میدین .
همیشه برای پاس دادن مقادیر به یک Command درون Command از متغیرهایی به شکل @varname استفاده کنید و بعدا به شکل

command.Parameters.Add("@varname",SqlDbType.fieldtype).value = varvalue;اونو مقدار دهی کنید تا مشکلی پیش نیاد .
من همين كارو كردم مقداري رو كه از گريد مي گيرم رو تبديل به int مي كنم بعد بعنوان پارامتر مثل اينكه شما گفتيد fieldtype رو int مي زارم و متغير را بجاي varvalue ولي اونوقت ارور زير رو مي ده
Input string was not in a correct format

sky_in_iran
یک شنبه 01 آذر 1388, 09:26 صبح
سلام دوست عزيز لطف كن كدتو بزار تا سريع كمكت كنيم اين جوري كمي سخته شايد insert شما مشكل داشته باشه تو ترتيب ركوردات كه اطلاعات و ميفرستي اشتباه كردي

emad_ban
یک شنبه 01 آذر 1388, 10:00 صبح
اينم كد برنامه

SqlCommand objCommand = new SqlCommand();
objCommand.Connection = objConnection;

objCommand.CommandText = " UPDATE TblSabt" + " SET" +
" FristName = @FristName, LastName = @LastName" +
" WHERE id = @id";

objCommand.CommandType = CommandType.Text;
int id;
id = Convert.ToInt16( dtdgrd.CurrentRow.Cells[0].ToString());
objCommand.Parameters.Add("@id", SqlDbType.Int).Value = id;
objCommand.Parameters.Add("@FristName",SqlDbType.NVarChar).Value=txtFname.Text;
objCommand.Parameters.AddWithValue("@LastName", SqlDbType.NVarChar).Value = txtLname.Text;
if (objConnection.State == ConnectionState.Closed)
{
objConnection.Open();
}
objCommand.ExecuteNonQuery();

آریوس1985
یک شنبه 01 آذر 1388, 10:48 صبح
id = Convert.ToInt16( dtdgrd.CurrentRow.Cells[0].ToString());

این خط رو بیخیال شید. شما اگر عدد هم در قالب String به پارامترتون بدهید، مشکلی نداره.
1 - Debug کنید و مطمئن شوید که مقداری که دارید پاس میکنید یک عدده

2- به جای Value می تونید SqlValue رو بگذارید (یه چی گفتم چون اصولا ربطی نداره به مشکل شما )

3- امیدوارم Nvarchar هم در حین کپی شده باشه N varchar
objCommand.Parameters.Add("@FristName",SqlDbType.N VarChar).Value=txtFname.Text;

4- از دستور AddWithValue هم استفاده کردید که نمیدونم چرا، اونم همون Add رو استفاده کنید
objCommand.Parameters.AddWithValue("@LastName", SqlDbType.NVarChar).Value = txtLname.Text;

emad_ban
یک شنبه 01 آذر 1388, 11:40 صبح
اين كارم كردم ارور مي ده
Failed to convert parameter value from a string to int32

pluschild
یک شنبه 01 آذر 1388, 11:54 صبح
اگه هنوز مشكلت حل نشده بگو تا راهنماييت كنم

emad_ban
یک شنبه 01 آذر 1388, 12:02 عصر
حل نشده هنوز

آریوس1985
یک شنبه 01 آذر 1388, 12:32 عصر
Debug کردی؟مقدارت عدده؟
اگه هر 4 تا کارو کردی جواب نداد حداقل اون تبدیلتو Int32 بذار جای Int16

امیدوارم حل شه

happy65_sh
یک شنبه 01 آذر 1388, 12:43 عصر
اينم را امتحان كن و به جاي

id = Convert.ToInt16( dtdgrd.CurrentRow.Cells[0].ToString())
بنويس:

id = Convert.ToInt16( dtdgrd.CurrentRow.Cells[0].value.ToString())

sky_in_iran
یک شنبه 01 آذر 1388, 13:00 عصر
دوست عزيز كدي كه گذاشته بودي و كمي تغيير دادم برات ميذارم انشاالله كه درست بشه و اگر درست نشد برنام تو بزار تا بتونيم راهنماييت كنيم ممنون




SqlCommand objCommand = new SqlCommand();
objCommand.Connection = objConnection;
objCommand.CommandText = " UPDATE TblSabt SET FristName = @FristName, LastName = @LastName WHERE id = @id";
objCommand.CommandType = CommandType.Text;
int id;
id = Convert.ToInt16( dtdgrd.CurrentRow.Cells[0].ToString());
objCommand.Parameters.Add("@id", SqlDbType.Int32).Value = id;
objCommand.Parameters.Add("@FristName",SqlDbType.NVarChar).Value=txtFname.Text;
objCommand.Parameters.AddWithValue("@LastName", SqlDbType.NVarChar).Value = txtLname.Text;
if (objConnection.State == ConnectionState.Closed)
{
objConnection.Open();
}
objCommand.ExecuteNonQuery();
-----------------------------------------
SqlCommand objCommand = new SqlCommand();
objCommand.Connection = objConnection;
id = Convert.ToInt16( dtdgrd.CurrentRow.Cells[0].ToString());
objCommand.CommandText = " UPDATE TblSabt SET FristName = @FristName, LastName = @LastName WHERE id = "+ id +"";
objCommand.CommandType = CommandType.Text;
int id;
objCommand.Parameters.Add("@id", SqlDbType.Int32).Value = id;
objCommand.Parameters.Add("@FristName",SqlDbType.NVarChar).Value=txtFname.Text;
objCommand.Parameters.AddWithValue("@LastName", SqlDbType.NVarChar).Value = txtLname.Text;
if (objConnection.State == ConnectionState.Closed)
{
objConnection.Open();
}
objCommand.ExecuteNonQuery();

emad_ban
یک شنبه 01 آذر 1388, 23:08 عصر
ممنون از راهنمایی همه دوستان با راهنمایی دوستمون happy65_sh (http://barnamenevis.org/forum/member.php?u=38885) توی پست 12 مشکل حل شد البته کد اینجور ویرایش کردم
objCommand.Parameters.Add("@id", SqlDbType.Int).Value = dtdgrd.CurrentRow.Cells[0].Value.ToString();