PDA

View Full Version : سوال: بررسی تکراری بودن داده در یک ستون



barman.ar16
جمعه 18 فروردین 1396, 15:30 عصر
سلام به اساتید بزرگوار
من بوسیله این تکه کد اطلاعات رو از فایل اکسل میخونم و میریزم درون یک دیتا گرید ویو تا بعد اون رو درون بانک ذخیره کنم :
ابتدا :
public DataTable ReadExcel(string fileName, string fileExt)
{
string conn = string.Empty;
DataTable dtexcel = new DataTable();
if (fileExt.CompareTo(".xls") == 0)
conn = @"provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName +
";Extended Properties='Excel 8.0;HRD=NO;IMEX=1';"; //for below excel 2007
else
conn = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName +
";Extended Properties='Excel 12.0;HDR=NO;IMEX=1';"; //for above excel 2007
using (OleDbConnection con = new OleDbConnection(conn))
{
try
{
OleDbDataAdapter oleAdpt = new OleDbDataAdapter("select * from [Sheet1$]", con);
//here we read data from sheet1
oleAdpt.Fill(dtexcel); //fill excel data into dataTable
}
catch
{
}
}
return dtexcel;
}
و سپس در روایداد یک باتن :
string filePath = string.Empty;
string fileExt = string.Empty;
OpenFileDialog file = new OpenFileDialog(); //open dialog to choose file
if (file.ShowDialog() == System.Windows.Forms.DialogResult.OK) //if there is a file choosen by the user
{
filePath = file.FileName; //get the path of the file
fileExt = Path.GetExtension(filePath); //get the file extension
if (fileExt.CompareTo(".xls") == 0 || fileExt.CompareTo(".xlsx") == 0)
{
try
{
DataTable dtExcel = new DataTable();
dtExcel = ReadExcel(filePath, fileExt); //read excel file
dataGridView1.Visible = true;
dataGridView1.DataSource = dtExcel;
dataGridView1.Columns[0].HeaderText = "نام";
dataGridView1.Columns[1].HeaderText = "نام خانوادگی";
dataGridView1.Columns[2].HeaderText = "نام پدر";
dataGridView1.Columns[3].HeaderText = "کد ملی";
dataGridView1.Columns[4].HeaderText = "شماره پرسنلی";
dataGridView1.Columns[5].HeaderText = "خالص دریافتی";
dataGridView1.Columns[6].HeaderText = "کد کنترل";
}
catch (Exception ex)
{
FrmMessageBox frmm = new FrmMessageBox();
frmm.lblmatn.Text = "انتخاب کنید Xlsx یا Xls لطفا فایل مناسب با پسوند";
frmm.btnyes.Visible = false;
frmm.btnno.Visible = false;
frmm.btnok.Visible = true;
frmm.ShowDialog();
}
}

میخوام وقتی فایل اکسل خونده شد اگر در ستون کد ملی داده تکراری وجود داشت عملیات نمایش صورت نگیره و خطا داده بشه

یک مطلب تکمیلی رو هم اینجا بگم
علت اینکه نمیخوام ستون کد ملی رو در دیتابیس از نوع کلید اصلی و یونیک انتخاب کنم اینه که چون من 3 سری داده دارم اگر به ستون های جدولم دقت کنید آخرین ستون کد کنترل داره که برای هر کدوم از سری ها شماره های 1 و 2 و 3 رو انتخاب کردم در واقع من میخوام کاری کنم که کد ملی توی هر سری فقط تکراری نباشه و اگر یک کد ملی در سری 2 یا 3 تکرار شد اشکالی وجود نداشته باشه
بنابراین مجبورم توی دیتا گرید ویو این قضیه رو چک کنم بعد درون بانکم ذخیره شند

متشکرم

Mahmoud.Afrad
شنبه 19 فروردین 1396, 01:08 صبح
یک راهش این هست که در دیتابیس ستونهای کدملی و کدکنترل رو به عنوان کلید اصلی(کلید ترکیبی) انتخاب کنید. در اینصورت در هنگام درج رکورد ، رکورد با «کدکنترل و کدملی» تکراری ثبت نخواهد شد و خطا میده. میتونید از تراکنش استفاده کنید تا در صورت خطا هیچ رکورد جدیدی ثبت نشه.