elahe1393
دوشنبه 10 شهریور 1393, 10:23 صبح
سلام
فرمی به شکل زیر طراحی کردم که به دیتابیس اکسس دسترسی دارد
122939
کد برنامه هم مطابق با کد زیر است
private void btnNew_Click(object sender, EventArgs e)
{
bsPatients.AddNew();
txtCode.ReadOnly = false;
txtFirstName.ReadOnly = false;
txtLastName.ReadOnly = false;
txtAge.ReadOnly = false;
txtCodeMelli.ReadOnly = false;
txtTelephone.ReadOnly = false;
txtMobile.ReadOnly = false;
txtAddress.ReadOnly = false;
txtDescription.ReadOnly = false;
btnSave.Enabled = true;
btnCancel.Enabled = true;
btnNew.Enabled = false;
btnEdit.Enabled = false;
btnDelete.Enabled = false;
txtCode.Focus();
}
private void btnEdit_Click(object sender, EventArgs e)
{
txtCode.ReadOnly = false;
txtFirstName.ReadOnly = false;
txtLastName.ReadOnly = false;
txtAge.ReadOnly = false;
txtCodeMelli.ReadOnly = false;
txtTelephone.ReadOnly = false;
txtMobile.ReadOnly = false;
txtAddress.ReadOnly = false;
txtDescription.ReadOnly = false;
btnSave.Enabled = true;
btnCancel.Enabled = true;
btnNew.Enabled = false;
btnEdit.Enabled = false;
btnDelete.Enabled = false;
txtCode.Focus();
}
private void btnCancel_Click(object sender, EventArgs e)
{
bsPatients.CancelEdit();
txtCode.ReadOnly = true;
txtFirstName.ReadOnly = true;
txtLastName.ReadOnly = true;
txtAge.ReadOnly = true;
txtCodeMelli.ReadOnly = true;
txtTelephone.ReadOnly = true;
txtMobile.ReadOnly = true;
txtAddress.ReadOnly = true;
txtDescription.ReadOnly = true;
btnSave.Enabled = false;
btnCancel.Enabled = false;
btnNew.Enabled = true;
btnEdit.Enabled = true;
btnDelete.Enabled = true;
}
private void Patient_Information_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the 'dSPatient.Patients' table. You can move, or remove it, as needed.
this.taPatients.Fill(this.dsPatient.Patients);
}
private void btnDelete_Click(object sender, EventArgs e)
{
string firstName, lastName;
firstName = txtFirstName.Text;
lastName = txtLastName.Text;
FarsiMessagbox.Show(string.Format("می خواهید اطلاعات بیمار {0} را حذف نمایید؟ ", firstName + " " + lastName), "حذف اطلاعات بیمار", FMessageBoxButtons.OkCancel, FMessageBoxIcon.Question);
bsPatients.RemoveCurrent();
taPatients.Update(dsPatient.Patients);
FarsiMessagbox.Show(string.Format("اطلاعات بیمار {0} حذف گردید ", firstName + " " + firstName), "حذف اطلاعات بیمار", FMessageBoxButtons.OkCancel, FMessageBoxIcon.Information);
}
private void btnSave_Click(object sender, EventArgs e)
{
if (txtCode.Text == "")
FarsiMessagbox.Show("کد را وارد نمائید","",FMessageBoxButtons.Ok,FMessageBoxIcon.Error);
else
{
bsPatients.EndEdit();
taPatients.Update(dsPatient.Patients);
FarsiMessagbox.Show("اطلاعات شما با موفقیت ثبت شد", "", FMessageBoxButtons.Ok, FMessageBoxIcon.None);
txtCode.ReadOnly = true;
txtFirstName.ReadOnly = true;
txtLastName.ReadOnly = true;
txtAge.ReadOnly = true;
txtCodeMelli.ReadOnly = true;
txtTelephone.ReadOnly = true;
txtMobile.ReadOnly = true;
txtAddress.ReadOnly = true;
txtDescription.ReadOnly = true;
btnSave.Enabled = false;
btnCancel.Enabled = false;
btnNew.Enabled = true;
btnEdit.Enabled = true;
btnDelete.Enabled = true;
}
}
private void txtCodeSearch_TextChanged(object sender, EventArgs e)
{
taPatients.FillByCode(dsPatient.Patients, int.Parse(txtCodeSearch.Text));
}
private void txtLastNameSearch_TextChanged(object sender, EventArgs e)
{
taPatients.FillByLastName(dsPatient.Patients, txtLastNameSearch.Text);
}
حالا مشکل من
1. در هر اجرا وقتی بیمارانی اضافه می کنم و در دیتابیس اکسس ذخیره میشه وقتی برنامه رو می بندم بعضی وقتا کل دیتاها حذف میشه دلیلش چیه؟
2. می خوام وقتی کد و نام خانوادگی بیماری رو تو تکس باکسهای سمت چپ وارد می کنم یه جستجو بکنه و مشابه رو تو گرید ویو نشون بده یه کوئری مطابق با
SELECT Code, FirstName, LastName
FROM Patients
WHERE (Code LIKE '@code%')
برای FillByCode نوشتم و همینطور یه کوئری دیگه هم برای FillByLastName ولی وقتی متن داخل تکس باکسهای سمت چپ تغییر میکنه کل رکوردهای داخل گریدویو پاک میشه و هیچ عکس العمل مناسبی نداره مشکل کجاست؟
فرمی به شکل زیر طراحی کردم که به دیتابیس اکسس دسترسی دارد
122939
کد برنامه هم مطابق با کد زیر است
private void btnNew_Click(object sender, EventArgs e)
{
bsPatients.AddNew();
txtCode.ReadOnly = false;
txtFirstName.ReadOnly = false;
txtLastName.ReadOnly = false;
txtAge.ReadOnly = false;
txtCodeMelli.ReadOnly = false;
txtTelephone.ReadOnly = false;
txtMobile.ReadOnly = false;
txtAddress.ReadOnly = false;
txtDescription.ReadOnly = false;
btnSave.Enabled = true;
btnCancel.Enabled = true;
btnNew.Enabled = false;
btnEdit.Enabled = false;
btnDelete.Enabled = false;
txtCode.Focus();
}
private void btnEdit_Click(object sender, EventArgs e)
{
txtCode.ReadOnly = false;
txtFirstName.ReadOnly = false;
txtLastName.ReadOnly = false;
txtAge.ReadOnly = false;
txtCodeMelli.ReadOnly = false;
txtTelephone.ReadOnly = false;
txtMobile.ReadOnly = false;
txtAddress.ReadOnly = false;
txtDescription.ReadOnly = false;
btnSave.Enabled = true;
btnCancel.Enabled = true;
btnNew.Enabled = false;
btnEdit.Enabled = false;
btnDelete.Enabled = false;
txtCode.Focus();
}
private void btnCancel_Click(object sender, EventArgs e)
{
bsPatients.CancelEdit();
txtCode.ReadOnly = true;
txtFirstName.ReadOnly = true;
txtLastName.ReadOnly = true;
txtAge.ReadOnly = true;
txtCodeMelli.ReadOnly = true;
txtTelephone.ReadOnly = true;
txtMobile.ReadOnly = true;
txtAddress.ReadOnly = true;
txtDescription.ReadOnly = true;
btnSave.Enabled = false;
btnCancel.Enabled = false;
btnNew.Enabled = true;
btnEdit.Enabled = true;
btnDelete.Enabled = true;
}
private void Patient_Information_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the 'dSPatient.Patients' table. You can move, or remove it, as needed.
this.taPatients.Fill(this.dsPatient.Patients);
}
private void btnDelete_Click(object sender, EventArgs e)
{
string firstName, lastName;
firstName = txtFirstName.Text;
lastName = txtLastName.Text;
FarsiMessagbox.Show(string.Format("می خواهید اطلاعات بیمار {0} را حذف نمایید؟ ", firstName + " " + lastName), "حذف اطلاعات بیمار", FMessageBoxButtons.OkCancel, FMessageBoxIcon.Question);
bsPatients.RemoveCurrent();
taPatients.Update(dsPatient.Patients);
FarsiMessagbox.Show(string.Format("اطلاعات بیمار {0} حذف گردید ", firstName + " " + firstName), "حذف اطلاعات بیمار", FMessageBoxButtons.OkCancel, FMessageBoxIcon.Information);
}
private void btnSave_Click(object sender, EventArgs e)
{
if (txtCode.Text == "")
FarsiMessagbox.Show("کد را وارد نمائید","",FMessageBoxButtons.Ok,FMessageBoxIcon.Error);
else
{
bsPatients.EndEdit();
taPatients.Update(dsPatient.Patients);
FarsiMessagbox.Show("اطلاعات شما با موفقیت ثبت شد", "", FMessageBoxButtons.Ok, FMessageBoxIcon.None);
txtCode.ReadOnly = true;
txtFirstName.ReadOnly = true;
txtLastName.ReadOnly = true;
txtAge.ReadOnly = true;
txtCodeMelli.ReadOnly = true;
txtTelephone.ReadOnly = true;
txtMobile.ReadOnly = true;
txtAddress.ReadOnly = true;
txtDescription.ReadOnly = true;
btnSave.Enabled = false;
btnCancel.Enabled = false;
btnNew.Enabled = true;
btnEdit.Enabled = true;
btnDelete.Enabled = true;
}
}
private void txtCodeSearch_TextChanged(object sender, EventArgs e)
{
taPatients.FillByCode(dsPatient.Patients, int.Parse(txtCodeSearch.Text));
}
private void txtLastNameSearch_TextChanged(object sender, EventArgs e)
{
taPatients.FillByLastName(dsPatient.Patients, txtLastNameSearch.Text);
}
حالا مشکل من
1. در هر اجرا وقتی بیمارانی اضافه می کنم و در دیتابیس اکسس ذخیره میشه وقتی برنامه رو می بندم بعضی وقتا کل دیتاها حذف میشه دلیلش چیه؟
2. می خوام وقتی کد و نام خانوادگی بیماری رو تو تکس باکسهای سمت چپ وارد می کنم یه جستجو بکنه و مشابه رو تو گرید ویو نشون بده یه کوئری مطابق با
SELECT Code, FirstName, LastName
FROM Patients
WHERE (Code LIKE '@code%')
برای FillByCode نوشتم و همینطور یه کوئری دیگه هم برای FillByLastName ولی وقتی متن داخل تکس باکسهای سمت چپ تغییر میکنه کل رکوردهای داخل گریدویو پاک میشه و هیچ عکس العمل مناسبی نداره مشکل کجاست؟