PDA

View Full Version : مبتدی: مشکل در کد Delete



civilmajor
چهارشنبه 26 فروردین 1394, 10:53 صبح
سلام
من در کد Delete به یه مشکل خوردم که ExecuteNonQuery را ایراد میگیره
این متن کدمه و عکس هم ضمیمه شده
لطفا کمکم کنید
سپاس

private void btnDelete_Click(object sender, EventArgs e)
{
OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Ace.OLEDB.12.0;Data Source=" + Application.StartupPath + "\\GymDataBase.accdb");
OleDbCommand cmd = new OleDbCommand();
cmd.CommandType = CommandType.Text;


DialogResult m;
m = MessageBox.Show("آیا میخواهید عضو انتخاب شده را از بایگانی حذف کنید؟", "اخطار", MessageBoxButtons.YesNo, MessageBoxIcon.Question);


if (m == DialogResult.Yes)
{
try
{
cmd.Connection = conn;
if (dataGridView2.SelectedRows.Count > 0)
{
for (int i = 0; i < dataGridView2.SelectedRows.Count; i++)
{
string a = dataGridView2.SelectedRows[i].Cells[1].Value.ToString();
cmd.CommandText = "Delete From Student where CodMelli=" + a;
}


conn.Open();


cmd.ExecuteNonQuery();


conn.Close();


FillDataGrid();


MessageBox.Show("عضو منتخب حذف شد");


}
else
{
MessageBox.Show("هیچ عضوی برای حذف انتخاب نشده است");
}
}
catch (Exception e1)
{
MessageBox.Show(e1.Message);
}
}
else
{


}
}



130350

محمد رضا فاتحی
چهارشنبه 26 فروردین 1394, 11:03 صبح
خطا احتمالا مربوط به cmd.CommandText = "Delete From Student where CodMelli=" + a
اینطوری بنویس ببین حل میشه
cmd.CommandText = "Delete From Student where CodMelli='" + a+"'"

civilmajor
چهارشنبه 26 فروردین 1394, 12:11 عصر
حل شد
دم هرچی آدم باحال و با معرفته گرمحالا به یه مشکل توی دیتاگرید خوردم،
میخوام فیلدایی که از جداولم باهم مرتبتا تحت یه جدول توی دیتاگرید بهم نشون بده اما پیغامی که توی عکسه بهم نشون میده.
130352
این کدمه:

void FillDataGrid()
{
OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Ace.OLEDB.12.0;Data Source=" + Application.StartupPath + "\\GymDataBase.accdb");
DataSet ds = new DataSet();
OleDbDataAdapter da = new OleDbDataAdapter();
da.SelectCommand = new OleDbCommand();
da.SelectCommand.CommandType = CommandType.Text;
da.SelectCommand.CommandText = "SELECT CodMelli,RegDate,Pic,Nam,Family,Father,[Gender],BirthCity,BirthDate,GymName,AgeTypeStudent,Weight Student,[Tell],[Mobile],[Address],[E-Mail],NameOfCollegeOrSchool,StudingLevel,[Level],AverageScore,RecentlyMounth,DateOfPay,[Money],PayID,PayAll,OntimeOrNot,HozorDate,VaziyatHozor,B eltBelt,DateOfBelt,BeltPlace,BeltCertificateNum,Da teOfMatch,MatchPlace,AgeTypeHero,WeightHero,BeltHe ro,DegreeHero,MatchCertificateNum,[Province],DegreeInProvince,[Contry],DegreeInContry,BeltAccept,HomeWorkForm,StudCoapor ation,ParentCoaporation,SchoolVerification,ParentV erification,ParentPresentation,LeisureCamp,ProCamp ,MasterScore,OtherSuccesses,[Cup] FROM PresentOrAbsent INNER JOIN (Others INNER JOIN (Knowledge INNER JOIN (Hero INNER JOIN (Tuition INNER JOIN (Belt INNER JOIN Student ON Belt.ID = Student.CodMelli) ON Tuition.ID = Student.CodMelli) ON Hero.ID = Student.CodMelli) ON Knowledge.ID = Student.CodMelli) ON Others.ID = Student.CodMelli) ON PresentOrAbsent.ID = Student.CodMelli";


try
{
conn.Open();
da.SelectCommand.Connection = conn;
da.SelectCommand.ExecuteNonQuery();
da.Fill(ds, "Table");
dataGridView2.DataSource = ds;
dataGridView2.DataMember = "Table";
conn.Close();
}
catch (Exception e1)
{
MessageBox.Show(e1.Message);
}
}

محمد رضا فاتحی
چهارشنبه 26 فروردین 1394, 17:43 عصر
این مساله دیگه فکر کنم باید یه تصویری یه مشخصاتی از دیتابیس و بخصوص جداولی که باهم join کردی بدی فکر نکنم بشه اینطوری جوابتو داد

civilmajor
چهارشنبه 26 فروردین 1394, 17:49 عصر
این مساله دیگه فکر کنم باید یه تصویری یه مشخصاتی از دیتابیس و بخصوص جداولی که باهم join کردی بدی فکر نکنم بشه اینطوری جوابتو داد

ممنون
این عکس از Query هستش
130356

محمد رضا فاتحی
چهارشنبه 26 فروردین 1394, 17:58 عصر
نگاه کنید دوست عزیز این خطا زمانی رخ میده که شما تو دستور join کلیدهایی که به هم ارتباط میدید از یک نوع نباشن مثلا اینجا(Others.ID = Student.CodMelli) اکه ID جدول other با فیلد کد ملی از جدول دانش آموزانتون یک نوع نباشن این خطا رو میده

civilmajor
چهارشنبه 26 فروردین 1394, 21:24 عصر
سپاس از لطفتون
کلا دیتا بیسمو تغییر دادم تا اون کلیدام همه از یک جنس باشن
همه از جنس text شدن
حالا میخوام یه گرید ویو داشته باشم که فیلدای پر شده در ثبت نام که هر کدوم از مجموعه فیلدا مال یه جدول بود حالا بیاد و از هر رکورد اطلاعات مربوط را از هر جدول برداره و در قالب یه دیتا گرید بهم نشون بده
یا حتی همه فیلدارو ولی به شرطی که همه فیلدا مربوط به یک کد ملی(کلید اصلی)باشن
واسه همین از inner join استفاده کردم ولی جواب نمیده
میخوام مثلا اگر فقط جدول دانش آموز پرشده تو اون گرید دیتا همون فیلداشو نشون بده اما فیلدای خالیشم که مربوط به همون کد ملی هستن رو هم نشون بده
نمیدونم تونستم منظورمو برسونم یا نه
اما اگر تونستم لطفا راهنماییم کنید
درود بی کران