PDA

View Full Version : سوال: ارورهنگام ثبت در بانک در صورت خالی بودن یکی از سلولهای datagridview



ya30ien2
سه شنبه 19 اردیبهشت 1391, 11:19 صبح
سلام دوستان
من چند فیلد (id,name,lname,code,t,p) که در صورتی که سلول کد رو خالی بزارم وقتی میخوام اطلاعات رو داخل sql ثبت کنم خطا میزنه و هیچ چیزی ذخیره نمیکنه
ممنون میشم من رو راهنمایی کنید
این هم کد :

for ( i = 0; i < DGV.Rows.Count - 1; i++)
{
bool bValue, bValue2;
object value = DGV.Rows[i].Cells[4].Value;
object value2 = DGV.Rows[i].Cells[5].Value;
bValue = Convert.ToBoolean(value);
bValue2 = Convert.ToBoolean(value2);
connect.Open();
SqlCommand insCmd = new SqlCommand("insert into Client(id,name,lname,code,b,t)values('" + DGV.Rows[i].Cells[0].Value.ToString() + "','" + DGV.Rows[i].Cells[1].Value.ToString() + "' ,'" + DGV.Rows[i].Cells[2].Value.ToString() + "','" + DGV.Rows[i].Cells[3].Value.ToString() + "','" + bValue + "','" + bValue2 + "')", connect);
insCmd.ExecuteNonQuery();
connect.Close();
}

ya30ien2
سه شنبه 19 اردیبهشت 1391, 11:22 صبح
راستی سلول 4 و 5 هم که تبدیل به bool کردم آخه checkbox داخلشه

ya30ien2
سه شنبه 19 اردیبهشت 1391, 16:05 عصر
اگر یک نفر لطف میکرد جواب ما رو میداد ممنون میشدم

ya30ien2
سه شنبه 19 اردیبهشت 1391, 20:32 عصر
این از متن خطا
Object reference not set to an instance of an object.

و دوم اینکه تیک گزینه allow null هم true هست

Mahmoud.Afrad
سه شنبه 19 اردیبهشت 1391, 21:08 عصر
به جای tostring ها از convert.tostring استفاده کنید.
مثلا
Convert.ToString(DGV.Rows[i].Cells[0].Value)

ya30ien2
سه شنبه 19 اردیبهشت 1391, 21:13 عصر
دوست عزیز من که کد برای تبدیل به string ندارم
اگه منظورتون bool هست که convert.tobolean نوشتم
اگه که منظورتون چیز دیگه ای هست لطفا بیشتر توضیح بدید
بازم ممنون

ya30ien2
سه شنبه 19 اردیبهشت 1391, 22:30 عصر
دوست عزیز شرمنده تازه متوجه حرفت شدم
حالا اومدم کاری که شما گفتی انجام دادم حالا یه ارور دیگه
میگه کلید رو تکراری وارد کردی
با این حال به بانک اضافه میکنه
در صورتی که چنین کلیدی وجود نداشته

amir11205
سه شنبه 19 اردیبهشت 1391, 23:07 عصر
سلام
باید برای مقادیر bValue و bValue2 هم متد ToString استفاده کنی و همچنین به اونها مقدار اولیه هم بده.

ya30ien2
چهارشنبه 20 اردیبهشت 1391, 01:27 صبح
نه عزیز بصورت دستی آی دی رو وارد میکنم
نمیدونم واسه چی گیر میده

ya30ien2
چهارشنبه 20 اردیبهشت 1391, 01:49 صبح
از نوع int کلید اصلی هستش و برای راهتی کار

Mahmoud.Afrad
چهارشنبه 20 اردیبهشت 1391, 01:54 صبح
بزرگترین مشکل دستی مقدار دادن به کلید اصلی اینه که باید از یکتا بودن اون اطمینان حاصل کنید. یعنی باید مطمئن بشید چنین id قبلا ثبت نشده باشه.
خوب پیشنهاد اینه که identity رو true کنید و دیگه در موقع اینزرت دستی مقدار ندید تا خود sqlserver اونو مقداردهی کنه.

ya30ien2
چهارشنبه 20 اردیبهشت 1391, 02:05 صبح
ممنون از راهنماییت اینگار با این راه حل مشکل حل شد بازم ممنون