تقييم الموضوع :
  • 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; // هذا الباراميتر يكتب عادي مع بقية الباراميترات وينفذ في الحالة الثانية
يتم التأكد ان كان فارغ يستخدم جملة الانسرت الاولى ولايقرب الباراميتر
وأن كان مليئ يستخدم جملة الانسرت الثانية والباراميتر جاهز
اعمل الخير وأجرك لا تنتظره فالله خير من إليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد }}
تم الشكر بواسطة: مصمم هاوي


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [سؤال] حول تكرار البيانات في نفس التاريخ sher 2 275 21-06-22, 12:07 PM
آخر رد: sher
  انشاء قاعدة بيانات عن طرق الكود amonem 2 396 01-06-22, 02:37 AM
آخر رد: amonem
  [سؤال] تحديث قاعدة بيانات العملاء kasber 3 918 17-02-22, 09:48 PM
آخر رد: محمود بكرى
  [سؤال] طريقة ربط مشروع برابط URL وتحديث البيانات منه talal_ameer 1 613 11-02-22, 01:38 AM
آخر رد: عدنان الشمري
  كيف اقوم بربط قاعدة بيانات server sql// SQLite محمدعبدالسلام 3 786 25-01-22, 10:54 PM
آخر رد: ابراهيم ايبو
  [C#.NET] كيف اجعل قاعدة البينات في البرنامج يعمل عليها اكثر من مستخدم عبدالرحمن محمدين السيد 1 542 10-01-22, 08:58 PM
آخر رد: سعود
  [سؤال] كيف يمكنني سحب البيانات من قواعد البيانات حسب الشخص يلي سجل دخوله للسيستم ؟ aabir 1 834 30-10-21, 01:55 PM
آخر رد: رسول555
  [C#.NET] سؤال بخصوص ادخال البيانات واستدعائها من ال dataset امير رزق 3 938 28-08-21, 07:55 PM
آخر رد: asemshahen5
  [C#.NET] ربط قاعدة بيانات الأكسس بسى شارب محمود احمد سعد 12 2,573 17-04-21, 06:49 AM
آخر رد: amiria
  ربط قاعدة بيانات الأكسس بسى شارب xx محمود احمد سعد 1 1,063 23-02-21, 09:22 PM
آخر رد: Rabeea Qbaha

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


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