PDA

View Full Version : سوال: مشکل در جستجوی یک رکورد خاص



neda_dela
یک شنبه 22 شهریور 1388, 15:09 عصر
سلام دوستان این دفعه یه سوال خیلی بزرگ دارم امیدوارم که درست منظورم رو برسونم.
البته قبلش از اینکه سوالم خیلی طولانیه واقعا معذرت می خوام آخه راه دیگه ای نداشتم مجبور شدم.
توی برنامم هم امکان ثبت نام جدید دارم و هم امکان ویرایش که صفحه ای که برای این دو تا باز میشه یکی هست یعنی برای ویرایش فرم جدید نساختم یه متغیر bool تعریف کردم که هر وقت فرم مربوطه برای ویرایش باز شد t و هر وقت برای ثبت نام جدید باز شد f میشه. وقتی کاربر صفحه رو برای ثبت نام جدید باز می کنه addnew میشه و یه جا برای رکورد جدید باز میشه و وقتی خواسته باشیم رکوردی رو هم برای ویرایش باز کنیم اون رکورد رو از دیتا گرید فرم 1 انتخاب می کنیم و دکمه ویرایش رو می زنیم (در اینجا اون متغیره bool مقدارش t میشه) تا مقادیر فیلدها به فرم 2 که همون صفحه ثبت نام باشه منتقل بشه برای تغییرات مورد نظر. خوب تا اینجا عمل ویرایش با موفقیت انجام میشه و توی دیتا گرید فرم 1 نشون داده میشه. حالا مشکل از این به بعده : من توی همون فرم 1 که شامل دیتاگرید و دکمه های ثبت نام و ویرایش و حذف و ... هست یه امکان جستجو هم گذاشتم براساس نام و کد ملی و سطح آموزشی دانش آموز. مقابل سطح آموزشی کمبو گذاشتم که مقادیرش رو از tableمربوطه در بانک می گیره (از طریق خاصیتdata source و display member ) یعنی مقادیرش دستی وارد نشده.
وقتی رکورد جدیدی ثبت می کنم جستجو بر اساس سطح آموزشی درست جواب میده اما همین که رکوردی رو انتخاب می کنم و یکی از فیلد هاش رو تغییر میدم یا ویرایش می کنم دیگه جستجو بر اساس سطح آموزشی جواب و نتیجه ای نمیده. این در صورتیه که جستجو رکورد ها بر اساس نام و کد ملی کاملا صحیح جواب میده و مشکلی نداره.
در ضمن من راه دیگه ای رو هم امتحان کردم یعنی برای ویرایش یه فرم جدید ساختم اما باز هم مشکل داشت.
این کد مربوط به زمانیه که رکمه ثبت نام کلیک میشه(فرم 1):


sabtst.flg = false;
sabtst sabt = new sabtst();
sabt.ShowDialog();
this.studentTableAdapter.Fill(this.quranDataSet.st udent);

این کد مربوط به کلیک دکمه ویرایشه(فرم 1):


sabtst.flg = true;
if (dataGridView1.SelectedRows.Count > 0)
{
sabtst sabt = new sabtst();
sabt.Tag = this;
sabt.ShowDialog();
this.studentTableAdapter.Fill(this.quranDataSet.st udent);
}
else
MessageBox.Show("please select a row from the list");

این کد مربوط به دکمه جستجو هست(فرم 1):


studentBindingSource.Filter = null;
if (textBox2.Text.Length != 0)
studentBindingSource.Filter = "melinum='" + textBox2.Text + "'";
if (textBox1.Text.Length != 0)
if (studentBindingSource.Filter == null || studentBindingSource.Filter.Length == 0)
studentBindingSource.Filter += "name like'%" + textBox1.Text + "%'";
else
studentBindingSource.Filter += "name like'%" + textBox1.Text + "%'";
if (comboBox2.Text.Length != 0)
studentBindingSource.Filter = "class='" + comboBox2.Text + "'";

این کد لود فرم 2 یا همون ثبت نام یا ویرایشه:


// TODO: This line of code loads data into the 'quranDataSet._class' table. You can move, or remove it, as needed.
this.classTableAdapter.Fill(this.quranDataSet._cla ss);
// TODO: This line of code loads data into the 'quranDataSet.student' table. You can move, or remove it, as needed.
this.studentTableAdapter.Fill(this.quranDataSet.st udent);
toolTip1.Active = true;
toolTip1.AutomaticDelay = 500;
toolTip1.AutoPopDelay = 5000;
toolTip1.UseFading = true;
toolTip1.ShowAlways = true;
ClsLang lng = new ClsLang();
lng.farsi();
if (flg == false)
{
studentBindingSource.AddNew();
maskedTextBox1.Text = Program.GetPersianDate();
}
else
{
student st = this.Tag as student;
string s = st.dataGridView1.SelectedRows[0].Cells[0].Value.ToString();
textBox1.Text = s;
s = st.dataGridView1.SelectedRows[0].Cells[1].Value.ToString();
comboBox2.Text = s;
s = st.dataGridView1.SelectedRows[0].Cells[2].Value.ToString();
comboBox3.Text = s;
s = st.dataGridView1.SelectedRows[0].Cells[3].Value.ToString();
comboBox4.Text = s;
s = st.dataGridView1.SelectedRows[0].Cells[4].Value.ToString();
textBox10.Text = s;
s = st.dataGridView1.SelectedRows[0].Cells[5].Value.ToString();
comboBox5.Text = s;
s = st.dataGridView1.SelectedRows[0].Cells[6].Value.ToString();
textBox16.Text = s;
s = st.dataGridView1.SelectedRows[0].Cells[7].Value.ToString();
textBox15.Text = s;
s = st.dataGridView1.SelectedRows[0].Cells[8].Value.ToString();
textBox2.Text = s;
s = st.dataGridView1.SelectedRows[0].Cells[9].Value.ToString();
textBox3.Text = s;
s = st.dataGridView1.SelectedRows[0].Cells[10].Value.ToString();
textBox4.Text = s;
s = st.dataGridView1.SelectedRows[0].Cells[11].Value.ToString();
textBox5.Text = s;
s = st.dataGridView1.SelectedRows[0].Cells[12].Value.ToString();
maskedTextBox2.Text = s;
s = st.dataGridView1.SelectedRows[0].Cells[13].Value.ToString();
comboBox1.Text = s;
s = st.dataGridView1.SelectedRows[0].Cells[14].Value.ToString();
textBox6.Text = s;
s = st.dataGridView1.SelectedRows[0].Cells[15].Value.ToString();
textBox7.Text = s;
s = st.dataGridView1.SelectedRows[0].Cells[16].Value.ToString();
textBox8.Text = s;
s = st.dataGridView1.SelectedRows[0].Cells[17].Value.ToString();
if (s == "چ©¦¬ی")
radioButton4.Checked = true;
else
radioButton3.Checked = true;
s = st.dataGridView1.SelectedRows[0].Cells[18].Value.ToString();
if (s == "ھي¤")
radioButton6.Checked = true;
else
radioButton5.Checked = true;
s = st.dataGridView1.SelectedRows[0].Cells[19].Value.ToString();
textBox11.Text = s;
s = st.dataGridView1.SelectedRows[0].Cells[20].Value.ToString();
if (s == "êی ں¬§")
radioButton8.Checked = true;
else
radioButton7.Checked = true;
s = st.dataGridView1.SelectedRows[0].Cells[21].Value.ToString();
textBox12.Text = s;
s = st.dataGridView1.SelectedRows[0].Cells[22].Value.ToString();
textBox13.Text = s;
s = st.dataGridView1.SelectedRows[0].Cells[23].Value.ToString();
textBox14.Text = s;
s = st.dataGridView1.SelectedRows[0].Cells[24].Value.ToString();
maskedTextBox1.Text = s;
s = st.dataGridView1.SelectedRows[0].Cells[25].Value.ToString();
textBox9.Text = s;
}

و بالاخره این هم کد مربوط به دکمه ثبت فرم 2 هست:


public static int code = 0;
string days;
string need;
string sh;
public static bool flg = false;
private void button1_Click(object sender, EventArgs e)
{
string date = maskedTextBox1.Text;
string nme = textBox1.Text;
string fnme = textBox2.Text;
string jf = textBox3.Text;
string mnme = textBox4.Text;
string jm = textBox5.Text;
string bdate = maskedTextBox2.Text;
string mcode = textBox15.Text;
string paye = comboBox1.Text;
string snme = textBox6.Text;
string bnme = textBox7.Text;
string tnme = textBox8.Text;
if (radioButton4.Checked == true)
sh = radioButton4.Text;
if (radioButton3.Checked == true)
sh = radioButton3.Text;
string sath = comboBox2.Text;
string tch = comboBox3.Text;
string clsnum = textBox16.Text;
if (radioButton5.Checked == true)
days = radioButton5.Text;
if (radioButton6.Checked == true)
days = radioButton6.Text;
string clck = comboBox5.Text;
string mny = textBox9.Text;
string ppr = textBox11.Text;
if (radioButton7.Checked == true)
need = radioButton7.Text;
if (radioButton8.Checked == true)
need = radioButton8.Text;
string tel = textBox12.Text;
string mob = textBox13.Text;
string add = textBox14.Text;
string yrs = textBox10.Text;
string trm = comboBox4.Text;
if (flg == true)
{
this.studentTableAdapter.Fill(this.quranDataSet.st udent);
SqlConnection myConnection = new SqlConnection(Program.strcon);
myConnection.Open();
string query = "update student set tarikh='" + date + "',name='" + nme + "',fname='" + fnme + "',fatherjob='" + jf + "',modername='" + mnme + "',moderjob='" + jm + "',birthday='" + bdate + "',melinum='" + mcode + "',payeh='" + paye + "',school='" + snme + "',boss='" + bnme + "',teacher='" + tnme + "',shift='" + sh + "',class='" + sath + "',educator='" + tch + "',classnum='" + clsnum + "',days='" + days + "',clock='" + clck + "',money='" + mny + "',paper='" + ppr + "',inneed='" + need + "',tel='" + tel + "',mobile='" + mob + "',address='" + add + "',years='" + yrs + "',term='" + trm + "' where melinum='" + mcode + "'";
studentBindingSource.EndEdit();
studentTableAdapter.Update(quranDataSet);
SqlCommand myCommand = new SqlCommand();
myCommand.CommandText = query;
myCommand.Connection = myConnection;
myCommand.ExecuteNonQuery();
myConnection.Close();
}
else
{
this.studentTableAdapter.Fill(this.quranDataSet.st udent);
SqlConnection myConnection = new SqlConnection(Program.strcon);
myConnection.Open();
string query = "insert into student(tarikh,name,fname,fatherjob,modername,mode rjob,birthday,melinum,payeh,school,boss,teacher,sh ift,class,educator,classnum,days,clock,money,paper ,inneed,tel,mobile,address,years,term)values(@date ,@nme,@fnme,@jf,@mnme,@jm,@bdate,@mcode,@paye,@snm e,@bnme,@tnme,@sh,@sath,@tch,@clsnum,@days,@clck,@ mny,@ppr,@need,@tel,@mob,@add,@yrs,@trm)";
SqlCommand myCommand = new SqlCommand();
myCommand.CommandText = query;
myCommand.Connection = myConnection;
myCommand.Parameters.AddWithValue("@date", date);
myCommand.Parameters.AddWithValue("@nme", nme);
myCommand.Parameters.AddWithValue("@fnme", fnme);
myCommand.Parameters.AddWithValue("@jf", jf);
myCommand.Parameters.AddWithValue("@mnme", mnme);
myCommand.Parameters.AddWithValue("@jm", jm);
myCommand.Parameters.AddWithValue("@bdate", bdate);
myCommand.Parameters.AddWithValue("@mcode", mcode);
myCommand.Parameters.AddWithValue("@paye", paye);
myCommand.Parameters.AddWithValue("@snme", snme);
myCommand.Parameters.AddWithValue("@bnme", bnme);
myCommand.Parameters.AddWithValue("@tnme", tnme);
myCommand.Parameters.AddWithValue("@sh", sh);
myCommand.Parameters.AddWithValue("@sath", sath);
myCommand.Parameters.AddWithValue("@tch", tch);
myCommand.Parameters.AddWithValue("@clsnum", clsnum);
myCommand.Parameters.AddWithValue("@days", days);
myCommand.Parameters.AddWithValue("@clck", clck);
myCommand.Parameters.AddWithValue("@mny", mny);
myCommand.Parameters.AddWithValue("@ppr", ppr);
myCommand.Parameters.AddWithValue("@need", need);
myCommand.Parameters.AddWithValue("@tel", tel);
myCommand.Parameters.AddWithValue("@mob", mob);
myCommand.Parameters.AddWithValue("@add", add);
myCommand.Parameters.AddWithValue("@yrs", yrs);
myCommand.Parameters.AddWithValue("@trm", trm);
studentBindingSource.AddNew();
myCommand.ExecuteNonQuery();
myConnection.Close();