تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[سؤال] ازي احفظ قيم فارغة في قاعدة البيانات
#1
السلام عليكم ورحمة الله وبركاته 
فى البرنامج بتاعى عملت استيراد بيانات من اكسيل وشغالة تمام اوي وهى عن طريق اختيار اعمدة الاكسيل من ليست بوكس واضافتها في قاعدة البيانات 
بس طبعا مش شرط المستخدم يحدد كل الاعمدة ممكن يختار جزء فابالتالى الي مش هيختاره هيتحفظ فاضي 
مثلا:



زي الصورة كدة ان مثلا اخترت كل البيانات من شيت الاكسيل بس مش هختار الملاحظات علشان مش عاوزة عاوز بقى لما يستورد البيانات يحفظ الملاحظات بس فاضة 
الكود الي مستخدمة
كود :
for (int i = 0; i < DgvSearch.Rows.Count; i++)
               {
                   if (Con.State == ConnectionState.Closed)
                   {
                       Con.Open();
                   }
                   tbl3 = db3.readData("select max (Sup_ID) from Suppliers", "");
                   Cmd3 = new SqlCommand("insert into Suppliers (Sup_ID,Sup_Name,Compny_Name,Sup_Adderss,Sup_Phone,Notes) Values (@Sup_ID,@Sup_Name,@Compny_Name,@Sup_Adderss,@Sup_Phone,@Notes)", Con);

                   if ((Convert.ToInt32(tbl3.Rows[0][0]) + 1).ToString() == null)
                   {
                       Cmd3.Parameters.Add(new SqlParameter("@Sup_ID", SqlDbType.Int)).Value = DBNull.Value;
                   }
                   else
                   {
                       Cmd3.Parameters.Add(new SqlParameter("@Sup_ID", SqlDbType.Int)).Value = (Convert.ToInt32(tbl3.Rows[0][0]) + 1).ToString();

                   }
                   if (cbx2.SelectedIndex <= -1)
                   {
                       Cmd3.Parameters.Add(new SqlParameter("@Sup_Name", SqlDbType.VarChar)).Value = DBNull.Value ;
                   }
                   else
                   {
                        Cmd3.Parameters.Add(new SqlParameter("@Sup_Name", SqlDbType.VarChar)).Value = DgvSearch.Rows[i].Cells[cbx2.SelectedIndex].Value;
                   }
                   if (cbx3.SelectedIndex <= -1)
                   {
                       Cmd3.Parameters.Add(new SqlParameter("@Compny_Name", SqlDbType.VarChar)).Value = DBNull.Value;
                   }
                   else
                   {
                       Cmd3.Parameters.Add(new SqlParameter("@Compny_Name", SqlDbType.VarChar)).Value = DgvSearch.Rows[i].Cells[cbx3.SelectedIndex].Value;

                   }
                   if (cbx4.SelectedIndex <= -1)
                   {
                       Cmd3.Parameters.Add(new SqlParameter("@Sup_Adderss", SqlDbType.VarChar)).Value = DBNull.Value;
                   }
                   else
                   {
                       Cmd3.Parameters.Add(new SqlParameter("@Sup_Adderss", SqlDbType.VarChar)).Value = DgvSearch.Rows[i].Cells[cbx4.SelectedIndex].Value;

                   }
                   if (cbx5.SelectedIndex <= -1)
                   {
                       Cmd3.Parameters.Add(new SqlParameter("@Sup_Phone", SqlDbType.VarChar)).Value = DBNull.Value;
                   }
                   else
                   {
                       Cmd3.Parameters.Add(new SqlParameter("@Sup_Phone", SqlDbType.VarChar)).Value = DgvSearch.Rows[i].Cells[cbx5.SelectedIndex].Value;

                   }
                   if (cbx6.SelectedIndex <= -1)
                   {
                       Cmd3.Parameters.Add(new SqlParameter("@Notes", SqlDbType.VarChar)).Value = DBNull.Value;
                   }
                   else
                   {
                       Cmd3.Parameters.Add(new SqlParameter("@Notes", SqlDbType.VarChar)).Value = DgvSearch.Rows[i].Cells[cbx6.SelectedIndex].Value;
                   }
                   
                   Cmd3.ExecuteNonQuery();
                   Con.Close();
               }
               XtraMessageBox.Show("تم إستيراد بيانات الموردين بنجاح ", "حفظ", MessageBoxButtons.OK, MessageBoxIcon.Information);
               SelectAll_Table3();
           }
طبعا لما اجي انفذ الكود ده فهو فعلا بيحفظ معايا كله تمام وحتي لو سايب ليست بوكس فاضية فبيحفظ عادي بس للاسف بيجبلى الرسالة دي


وطبعا الحل فى الرسالة دي هو اغير جلمة ال if الي في الكود الي فوق الى الاتى: 
كود :
if (DgvSearch.Rows[i].Cells[cbx5.SelectedIndex].Value == null)
                   {
                       Cmd3.Parameters.Add(new SqlParameter { ParameterName = "@Notes", Value = DBNull.Value });
                   }
                   else
                   {
                       Cmd3.Parameters.Add(new SqlParameter { ParameterName = "@Notes", Value = DgvSearch.Rows[i].Cells[cbx5.SelectedIndex].Value });
                   }

بس للاسف لما اغيرها لكدة مش بيرضي يحفظ قيم فارغة خالص 
وبيجب الرسالة دي 




لو حد عنده حل للمشكلة دي او عنده فكره ياريت يفيدنا وشكرا
الرد }}}
تم الشكر بواسطة:
#2
وعليكم السلام ورحمة الله وبركاته
خلي البرنامج عندك يقرأ القيم في المربعات قبل الحفظ
فإذا كانت فارغة ("") يقوم باستبدالها بقيمة ما ولتكن الشرطة "داش" مثلاً ("-") وليحفظ الشرطة عندها برنامجك في قاعدة البيانات.
وبهذا لن تجد مشكلة في الحفظ ولا في استعراضها حين الحاجة.
قال صلى الله عليه وسلم: 
«كلمتان خفيفتان على اللسان 
ثقيلتان في الميزان،حبيبتان إلى الرحمن: 
سبحان الله وبحمده، سبحان الله العظيم».
الرد }}}
تم الشكر بواسطة: mazentq
#3
(15-02-22, 08:54 PM)Taha Okla كتب : وعليكم السلام ورحمة الله وبركاته
خلي البرنامج عندك يقرأ القيم في المربعات قبل الحفظ
فإذا كانت فارغة ("") يقوم باستبدالها بقيمة ما ولتكن الشرطة "داش" مثلاً ("-") وليحفظ الشرطة عندها برنامجك في قاعدة البيانات.
وبهذا لن تجد مشكلة في الحفظ ولا في استعراضها حين الحاجة.

تمام ان عملت كدة والطريقة نجحت بس المشكلة انه بيظهر الرسالة دي 

المفروض تظهر رسالة "تم الحفظ بنجاح"
الرد }}}
تم الشكر بواسطة:
#4
السلام عليكم ورحمة الله وبركاته
اخي الكريم
بالنسبة لحفظ حقل فارغ 
كنت قد اعطيتك حل انشاء حقل من نوع CheckBox في داتا غرايد لكنه لم يرق لك وبقيت على الليست بوكس
المهم نأتي على جملة الانسرت عبر الشرط ان كان فارغا نستثني الحقل من جملة الانسرت وان كان مليئا نضع الحقل في جملة الانسرت
على النحو التالي
كود :
if (DgvSearch.Rows[i].Cells[cbx6.SelectedIndex].Value == null)
           {
               Cmd3 = new SqlCommand("insert into Suppliers (Sup_ID,Sup_Name,Compny_Name,Sup_Adderss,Sup_Phone) Values (@Sup_ID,@Sup_Name,@Compny_Name,@Sup_Adderss,@Sup_Phone)", Con); //Notes بدون
           }
           else
           {
               Cmd3 = new SqlCommand("insert into Suppliers (Sup_ID,Sup_Name,Compny_Name,Sup_Adderss,Sup_Phone,Notes) Values (@Sup_ID,@Sup_Name,@Compny_Name,@Sup_Adderss,@Sup_Phone,@Notes)", Con);

           }
بقي الباراميتر نكتب الباراميتر عادي وكأنه ليس فارغ هكذا
كود :
           Cmd3.Parameters.Add(new SqlParameter("@Notes", SqlDbType.VarChar)).Value = DgvSearch.Rows[i].Cells[cbx6.SelectedIndex].Value; // هذا الباراميتر يكتب عادي مع بقية الباراميترات وينفذ في الحالة الثانية
يتم التأكد ان كان فارغ يستخدم جملة الانسرت الاولى ولايقرب الباراميتر
وأن كان مليئ يستخدم جملة الانسرت الثانية والباراميتر جاهز
اعمل الخير وأجرك لا تنتظره فالله خير من إليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد }}}
تم الشكر بواسطة: مصمم هاوي , رضوان الجماعي
#5
انت رائع استاذ ابراهيم

اللهم اني قد نذرت نفسي لمساعدت الاخرين فوفقني وكن لي معين
جاهز لمساعدة اي حد يحتاج لمساعدتي
طبيب اعشق البرمجة . 
الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  هل الكود هذا صحيح خاص بالربط مع قاعدة بيانات SQL server تركي احمد 0 212 15-02-24, 10:04 AM
آخر رد: تركي احمد
  [سؤال] احتاج الى مساعدة فى تعديل مشروع خاص C# وقاعدة البيانات SQL Server كتكوت المصري 1 504 15-08-23, 02:02 AM
آخر رد: WAEL ABED
  [C#.NET] جلب البيانات من اليوزر كنترول Heemo 1 659 02-06-23, 12:57 AM
آخر رد: G20
  انشاء قاعدة بيانات عن طرق الكود amonem 3 1,355 07-10-22, 12:51 PM
آخر رد: asemshahen5
Sad [C#.NET] تطبيق الويندوز لا يستطيع تحديد قاعدة البيانات المثبتة معى التطبيق عند تشغيله على حاسو Kamel Soltani 1 835 03-10-22, 04:09 PM
آخر رد: asemshahen5
  [سؤال] حول تكرار البيانات في نفس التاريخ sher 2 918 21-06-22, 12:07 PM
آخر رد: sher
  [سؤال] تحديث قاعدة بيانات العملاء kasber 3 1,399 17-02-22, 09:48 PM
آخر رد: محمود بكرى
  [سؤال] طريقة ربط مشروع برابط URL وتحديث البيانات منه talal_ameer 1 1,189 11-02-22, 01:38 AM
آخر رد: عدنان الشمري
  كيف اقوم بربط قاعدة بيانات server sql// SQLite محمدعبدالسلام 3 1,574 25-01-22, 10:54 PM
آخر رد: ابراهيم ايبو
  [C#.NET] كيف اجعل قاعدة البينات في البرنامج يعمل عليها اكثر من مستخدم عبدالرحمن محمدين السيد 1 1,121 10-01-22, 08:58 PM
آخر رد: سعود

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


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