خطا در هنگام ریختن اطلاعات در Data Table
سلام. خسته نباشید.
من اول اطلاعات را از دیتا بیس میخوام بگیرم و در دیتا تیبل بریزم و چک کنم اگر دیتا تییبل مقدار دارد اطلاعات مورد نیاز من را ثبت کند اما برنامه با خطا روبرو میشود.
چطوری باید به بگم که اگر مقداری نبود پیغام بده روش من مشکل دارد.
و همچنین الان خطا از من میگیرد : Conversion failed when converting the varchar value 'id_group' to data type int.
داده من از نوع اینتیجر هم هست درون دیتا بیس .
if (mojaz_chk_group.Checked == true && mojaz_chk_madrak.Checked == true)
{
DataTable dt = new DataTable();
SqlConnection con1 = new SqlConnection(connectionString: mycon);
SqlDataAdapter da = new SqlDataAdapter("Select id_group,id_madrak_tahsili,code_ozviat from group_for_employe where id_group='" + mojaz_cmb_group.ValueMember + "' and id_madrak_tahsili='" + mojaz_cmb_madrak_tahsili.ValueMember + "'", con1);
SqlCommand cmdInsert = new SqlCommand();
da.Fill(dt);
while (dt.Rows.Count == 0)
{
// نوع فیلد کد عضویت اینتیجر میباشید
myCodeOzviat = Convert.ToString(dt.Columns["code_ozviat"]);
cmdInsert.Parameters.AddWithValue("@sonati", mojaz_txt_sonati.Text);
cmdInsert.Parameters.AddWithValue("@felezi", mojaz_txt_felezi.Text);
cmdInsert.Parameters.AddWithValue("@sakhteshode", mojaz_txt_sakhte_shode.Text);
cmdInsert.Parameters.AddWithValue("@add_sal", mojaz_cmb_sal.Text);
cmdInsert.Parameters.AddWithValue("@code_ozviat", myCodeOzviat);
con1.Open();
cmdInsert.Connection = con1;
cmdInsert.ExecuteNonQuery();
con1.Close();
MessageBox.Show(" اطلاعات با موفقیت ثبت شد ");
}
// این کد چطوری باید به طور صحیح نوشت ؟
MessageBox.Show(" چنین مقادیری وجود ندارد ");
}
خیلی گیج شدم لطفا راهنمایی کنید .
نقل قول: خطا در هنگام ریختن اطلاعات در Data Table
اگه به کامندی که برای اینزرت دقت کنید هیچ دستور اینزرتی بهش ندادید. الان چیو باید اینزرت کنه؟ هیچی جز یک سلکت دیده نمیشه. اگه توی دیتا تیبل شما مقدار باشه توسط count اون میتونید مطلع بشید.
نقل قول: خطا در هنگام ریختن اطلاعات در Data Table
سلام
شما توی کانورت کردن ایراد دارید
کد رو نوشتید که به رشته تبدیل بشه ولی ایراد داره
نقل قول: خطا در هنگام ریختن اطلاعات در Data Table
اینم معنی اروری که سیستم بهتون میده[
"تبدیل در هنگام تبدیل ارزش VARCHAR id_group به داده های نوع int شکست خورده است"
نقل قول: خطا در هنگام ریختن اطلاعات در Data Table
نقل قول:
نوشته شده توسط
شهابسلطانی
اینم معنی اروری که سیستم بهتون میده[
"تبدیل در هنگام تبدیل ارزش VARCHAR id_group به داده های نوع int شکست خورده است"
داده من از نوع int است درون دیتا بیس چرا نمیتونه درون دیتا تیبل ارسالش کند ؟
SqlDataAdapter da = new SqlDataAdapter("Select id_group,id_madrak_tahsili,code_ozviat from group_for_employe where id_group='" + mojaz_cmb_group.ValueMember + "' and id_madrak_tahsili='" + mojaz_cmb_madrak_tahsili.ValueMember + "'", con1);
کد سلکت جاییش ایراد دارد ؟
کمبو باکس من اطلاعاتش را از یک جدول میگیرد. و از طریق آی دی آن میخوام با آی دی هم نام که در جدول دیگر است و با کلید خارجی وصل شدند به هم مقایسه کند که اگر وجود داشت بر گرداند .
حالا من داده را از جدول میخونم و درون کمبو باکس نشون میدم و آی دی آن را به عنوان ValueMember مشخص میکنم ، و هنگام سلکت کردن مقایسه را با دستور valuemember انجام میدهم . دلیل خطا گرفته شده از نوع داده ای آن از کجا میباشد ؟ چه چیزی را باید تغییر دهم ؟
با تشکر
نقل قول: خطا در هنگام ریختن اطلاعات در Data Table
من قبلا به همین ارور برخورد کردم مشکل وقتی ایجاد میشه که کمبو باکس value ه انتخاب شده نداشته باشه یعنی null برگرده اون موقع س که سیستم نمیتونه کانورتو انجام بده پس هر جاکه کمبو باکس داری از یه شرط استفاده کن
که اگه خالی بود -1 بده
البته من فکر میکنم اگه بجای valueMember از SelectedValue استفاده کنی هم مشکلت حل میشه (اول اینو امتحان کن)
نقل قول: خطا در هنگام ریختن اطلاعات در Data Table
بعد از تعریف کردن connection string ، باید connection.open کنید و سپس عملیات را انجام دهید(بهتر است ابتدا چک کنید که اگر connection باز نیست ، آن را باز کند)
علامت ' نشانه ی نوع داده رشته ای می باشند ، شاید بخاطر استفاده از این علامت در دستورselect است، بهتر است مقادیر دستور سلکت هم به صورت پارامتر ارسال شوند.
در ضمن نوع داده ی فیلد id_group را چک کنید و با قرار دادن یک شرط از خالی نبودن کامبوباکس مطمئن شوید.
فکر کنم باید یک sqlcommand برای دستور insert بنویسید ، زیرا همان طور که یکی از دوستان گفتند، دستور insert وجود ندارد.
نقل قول: خطا در هنگام ریختن اطلاعات در Data Table
سلام دوستان .
نت مثل همیشه قطع شد ( ایران دیگه)
من کد ویرایش کردم طبق گفته های همه دوستا ن ، یک بخش برایم سوال شد که نتونستم به جواب برسم .
من میخوام اطلاعات ستون کد عضویت را بخونم از دیتا تیبل اما با کدی که من نوشتم برنامه خطا میده لطفا راهنمایی کنید.
راستی یک سوال دیگه ، کد من اگر داده نباشد پیغام میده که داده وجود ندارد و زمانی هم که داده هست اول پیغام میده که داده ثبت شد و بعد باز هم پیغام میده که داده ای وجود ندارد ( برنامه اجرا نمیشود فقط طبق تجربه قبلی گفتم ) زیرا شرط من با حلقه while هست و نمیتوانم از else برای آن استفاده کنم . راهکاری برای این موضوع به من بدید .
http://www.uploadtak.com/images/l2184_DataTable.jpg
با تشکر.
نقل قول: خطا در هنگام ریختن اطلاعات در Data Table
دوستان مشکلم حل شد کد قرار میدم اگر کسی به این مشکل بر خورد استفاده کند.
if (mojaz_chk_group.Checked == true && mojaz_chk_madrak.Checked == true)
{
// حالت اول هر دو گزینه گروه و مدرک فعال باشند
DataTable dt = new DataTable();
SqlConnection con1 = new SqlConnection(connectionString: mycon);
SqlDataAdapter da = new SqlDataAdapter(
"Select code_ozviat,id_group,id_madrak_tahsili from group_for_employe where id_group='" + mojaz_cmb_group.SelectedValue + " ' and id_madrak_tahsili='" + mojaz_cmb_madrak_tahsili.SelectedValue + "'", con1);
SqlCommand cmdInsert = new SqlCommand{ CommandText = "insert into tbl_mojaz(sonati,felezi,sakhteshode,code_ozviat,ad d_sal) VALUES (@sonati,@felezi,@sakhteshode,@code_ozviat,@add_sa l)" };
da.Fill(dt);
con1.Close();
if (dt.Rows.Count != 0)
{ int CodeOzviat=0;
for (int i = 0 ; i <dt.Rows.Count ; i++) {
CodeOzviat = 0;
CodeOzviat=Convert.ToInt32(dt.Rows[i].ItemArray[0]);
cmdInsert.Parameters.Clear();
cmdInsert.Parameters.AddWithValue("@sonati", mojaz_txt_sonati.Text);
cmdInsert.Parameters.AddWithValue("@felezi", mojaz_txt_felezi.Text);
cmdInsert.Parameters.AddWithValue("@sakhteshode", mojaz_txt_sakhte_shode.Text);
cmdInsert.Parameters.AddWithValue("@add_sal", mojaz_cmb_sal.Text);
cmdInsert.Parameters.AddWithValue("@code_ozviat", CodeOzviat);
con1.Open();
cmdInsert.Connection = con1;
cmdInsert.ExecuteNonQuery();
con1.Close();
}
MessageBox.Show(" اطلاعات با موفقیت ثبت شد ");
}else{
MessageBox.Show(" چنین مقادیری وجود ندارد ");
}
}