تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
كود عدم تكرار في قاعدة البيانات
#1
Lightbulb 
السلام عليكم

لدي في قاعدة البيانات سكيول سيرفر الاسم والشهر والسنة

ابحث عن كود عدم تكرار نفس الاسم والسنة والشهر

أي في حالة الإسم أدى واجبه الشهري عدم تكرار الأداء لنفس الشخص وفي نوفس الشهر وفي نفس السنة
sql server
c#
الرد
تم الشكر بواسطة:
#2
يمكنك عمل UNIQUE  INDEX يتضمن الاعمدة التي لاتريد تكرار صفوف بنفس قيمتها

افتح SQL Server Management Studio وافتح الجدول الذي تريد منع التكرار فيه

ثم تتبع الخطوات التالية لاضافة الاعمدة ل UNIQUE  INDEX

   
   
   
   
   
   


او : 


اضف السطر التالي الى سكريبت قاعدة البيانات لديك

غير Table1 الى اسم الجدول

و  Name Year Month الى اسماء الحقول

PHP كود :
CREATE UNIQUE  INDEX [IX_Table1_ColumnON [dbo].[Table1] ([Name],[Year],[Month]) 
الان لن تقبل قاعدة البيانات صفوف بها القيم هذه مكرره
وايضا يمكن عمل ذلك يدويا بدون اضافة Index ، تقوم بعمل استعلام على الصف باستخدام WHERE والاعمدة التي تريدها ، اذا كانت موجودة بالفعل لا تضيفها
الرد
تم الشكر بواسطة: asemshahen5 , ابو روضة , ابو روضة
#3
(20-09-20, 10:18 AM)Anas Mahmoud كتب : يمكنك عمل UNIQUE  INDEX يتضمن الاعمدة التي لاتريد تكرار صفوف بنفس قيمتها

افتح SQL Server Management Studio وافتح الجدول الذي تريد منع التكرار فيه

ثم تتبع الخطوات التالية لاضافة الاعمدة ل UNIQUE  INDEX









او : 


اضف السطر التالي الى سكريبت قاعدة البيانات لديك

غير Table1 الى اسم الجدول

و  Name Year Month الى اسماء الحقول

PHP كود :
CREATE UNIQUE  INDEX [IX_Table1_ColumnON [dbo].[Table1] ([Name],[Year],[Month]) 
الان لن تقبل قاعدة البيانات صفوف بها القيم هذه مكرره
وايضا يمكن عمل ذلك يدويا بدون اضافة Index ، تقوم بعمل استعلام على الصف باستخدام WHERE والاعمدة التي تريدها ، اذا كانت موجودة بالفعل لا تضيفها

شكرا لك على هده المعلومة جزاك الله خيرا
هده تعديلات على قاعدة البيانات  سكيول سيرفر 

انا احتاج الى كود c# مع رسالة الخطأ
الرد
تم الشكر بواسطة:
#4
أخي لم اعطك الكود فعلا ولكن ارشدتك للفكرة ، وهي البحث عن الصف الذي يحتوي هذه البيانات واذا وجدها لا نكمل الاضافة ونعرض رسالة والا نكمل الاضافة ::


يمكنك استخدام شيء مثل

كود :
           string name = txtName.Text;
           string month = txtMonth.Text;
           string year = txtYear.Text;

           string commandString = @"SELECT * FROM [Table1] WHERE [Name]=@Name AND [Month]=@Month AND [Year]=@Year"
           SqlCommand command = new SqlCommand(commandString, connection);
           command.Parameters.AddWithValue("@Name", name);
           command.Parameters.AddWithValue("@Month", month);
           command.Parameters.AddWithValue("@Year", year);

           if (command.ExecuteReader().Read())
           {
               //هناك صف او اكثر بالفعل
               MessageBox.Show("الإسم أدى واجبه الشهري");
               return;
           }


           //نقوم بالاضافة بشكل طبيعي
            commandString = @"INSERT INTO [Table1] ([Name],[Month],[Year]) VALUES(@Name,@Month,@Year)"
            command = new SqlCommand(commandString, connection);
           command.Parameters.AddWithValue("@Name", name);
           command.Parameters.AddWithValue("@Month", month);
           command.Parameters.AddWithValue("@Year", year);

           command.ExecuteNonQuery();
الرد
تم الشكر بواسطة:
#5
(20-09-20, 03:18 PM)Anas Mahmoud كتب : أخي لم اعطك الكود فعلا ولكن ارشدتك للفكرة ، وهي البحث عن الصف الذي يحتوي هذه البيانات واذا وجدها لا نكمل الاضافة ونعرض رسالة والا نكمل الاضافة ::


يمكنك استخدام شيء مثل

كود :
           string name = txtName.Text;
           string month = txtMonth.Text;
           string year = txtYear.Text;

           string commandString = @"SELECT * FROM [Table1] WHERE [Name]=@Name AND [Month]=@Month AND [Year]=@Year"
           SqlCommand command = new SqlCommand(commandString, connection);
           command.Parameters.AddWithValue("@Name", name);
           command.Parameters.AddWithValue("@Month", month);
           command.Parameters.AddWithValue("@Year", year);

           if (command.ExecuteReader().Read())
           {
               //هناك صف او اكثر بالفعل
               MessageBox.Show("الإسم أدى واجبه الشهري");
               return;
           }


           //نقوم بالاضافة بشكل طبيعي
            commandString = @"INSERT INTO [Table1] ([Name],[Month],[Year]) VALUES(@Name,@Month,@Year)"
            command = new SqlCommand(commandString, connection);
           command.Parameters.AddWithValue("@Name", name);
           command.Parameters.AddWithValue("@Month", month);
           command.Parameters.AddWithValue("@Year", year);

           command.ExecuteNonQuery();

جربت الكود لا يعمل

هذا هو الكود
I
I
I
V


PHP كود :
private void badd_Click(object senderEventArgs e)
 
       {
 
           if (String.IsNullOrEmpty(tnum.Text) || String.IsNullOrEmpty(nmois.Text) || String.IsNullOrEmpty(cmbane.Text))
 
           {
 
               //do job
 
               MessageBox.Show("معلومات غير كافية""خطأ"MessageBoxButtons.OKMessageBoxIcon.Warning);
 
               return;
 
           }
 
           
            string name 
tnomprenom.Text;
 
          string month nmois.Text;
 
          string year cmbane.Text;

 
          string commandString = @"SELECT * FROM pay WHERE nomprenom=@Name AND mois=@Month AND annee=@Year";
 
          SqlCommand command  = new SqlCommand(commandStringcon);
 
          command.Parameters.AddWithValue("@Name"name);
 
          command.Parameters.AddWithValue("@Month"month);
 
          command.Parameters.AddWithValue("@Year"year);

 
          if (command.ExecuteReader().Read())
 
          {
 
              //هناك صف او اكثر بالفعل
 
              MessageBox.Show("الإسم أدى واجبه الشهري");
 
              return;
 
          }

 
               {
 
                   try
                    
{
 
                       cmd = new SqlCommand("insert into pay(id_id,nomprenom,annee,mois,datepay) values('" tnum.Text "','" tnomprenom.Text "','" cmbane.Text "','" nmois.Text "','" datepay.Value.ToString("yyyy/MM/dd") + "')"con);
 
                       con.Open();
 
                       cmd.ExecuteNonQuery();
 
                       con.Close();
 
                       MessageBox.Show("تم السجيل بنجاح""عملية الإضافة"MessageBoxButtons.OKMessageBoxIcon.Information);
 
                       tnum.Text "";
 
                       tnomprenom.Text "";
 
                   }

 
                   catch (SqlException ex)
 
                   {
 
                       MessageBox.Show("erros" ex.Message);
 
                   }
 
               }
 
           }
 
      

تم حل المشكل بعد البحث وشكرا على مساعدتكم هكذا نتعلم والعلم ليس له حدود



الكود
كود :
private void badd_Click(object sender, EventArgs e)
       {
           if (String.IsNullOrEmpty(tnum.Text) || String.IsNullOrEmpty(nmois.Text) || String.IsNullOrEmpty(cmbane.Text))
           {
               //do job
               MessageBox.Show("معلومات غير كافية", "خطأ", MessageBoxButtons.OK, MessageBoxIcon.Warning);
               return;
           }
           
           
           else
           {
               cmd = new SqlCommand("select * from pay where nomprenom= '" + tnomprenom.Text + "' AND annee= '" + cmbane.Text + "' AND mois= '" + nmois.Text + "'", con);                    
               da = new SqlDataAdapter(cmd);
               da.Fill(ds);
               int i = ds.Tables[0].Rows.Count;
               if (i > 0)
               {
                   MessageBox.Show("" + tnomprenom.Text + "", "هذا الإسم موجود سابقا", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                   ds.Clear();
                   return;
               }
           

               {
                   try
                   {
                       cmd = new SqlCommand("insert into pay(id_id,nomprenom,annee,mois,datepay) values('" + tnum.Text + "','" + tnomprenom.Text + "','" + cmbane.Text + "','" + nmois.Text + "','" + datepay.Value.ToString("yyyy/MM/dd") + "')", con);
                       con.Open();
                       cmd.ExecuteNonQuery();
                       con.Close();
                       MessageBox.Show("تم السجيل بنجاح", "عملية الإضافة", MessageBoxButtons.OK, MessageBoxIcon.Information);
                       tnum.Text = "";
                       tnomprenom.Text = "";
                   }

                   catch (SqlException ex)
                   {
                       MessageBox.Show("erros" + ex.Message);
                   }
               }
           }
       }
الرد
تم الشكر بواسطة:
#6
اخي الكريم استخدام القيم وسط النص هكذا ليس امنا من ال SQL INJECION اطلاقا 

بسهولة جدا ممكن تضيع منك قاعدة البيانات ، وبسهولة يمكن التحكم بها ايضا
عليك استخدام البرامترز لتمرير القيم للاستعلام
الرد
تم الشكر بواسطة:
#7
شكرا على المعلومة القيمة جزاك الله خيرا
الرد
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [C#.NET] الحصول علي البيانات من الويب سيرفيس لبرنامج سطح المكتب محمد اسماعيل 2 417 17-07-20, 07:31 PM
آخر رد: محمد اسماعيل
  [سؤال] كيف يتم اضافة جداول اوحقول او اي تعديل على قاعدة البيانات من خلال سي شارب فقط younass 5 510 04-07-20, 05:52 PM
آخر رد: kiki
  مساعده فى رفع قاعده البيانات على استضافه maxruined 2 454 01-06-20, 08:12 PM
آخر رد: maxruined
  [سؤال] تشفير ملف قاعدة بيانات اكسس ! منه 2 409 16-05-20, 09:56 PM
آخر رد: khodor1985
  [C#.NET] تشغيل فديو من قاعده البيانات ssayed111 2 402 23-04-20, 03:15 PM
آخر رد: سعود
  [سؤال] طريقة برمجة زرار اخذ نسخة احتياطية من قاعدة بيانات sql بلغة فيجول ahmeddor 3 508 28-03-20, 05:16 PM
آخر رد: asemshahen5
  [سؤال] ماهي طريقة الاتصال بقاعدة البيانات بتقنية Entity Framework اثناء تشغيل البرنامج younass 3 645 24-01-20, 11:06 PM
آخر رد: جميل5
  [C#.NET] كيف عمل قاعدة بيانات mysql ورفعها ع سيرفر وربط البرنامج بلسيرفر GeRoO 0 492 18-01-20, 05:38 PM
آخر رد: GeRoO
  حفظ صورة في قاعدة بيانات عبدالكريم رشدان 0 420 17-01-20, 01:14 PM
آخر رد: عبدالكريم رشدان
  استشارة بشراء استضافة لرفع قاعدة بيانات sql server Rabeea Qbaha 0 423 21-12-19, 05:09 AM
آخر رد: Rabeea Qbaha

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم