تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
اضافه عدد من الشهور على تاريخ محدد
#1
السلام عليكم ورحمه الله وبركاته
اتمنى القى من يساعدنى فى هذا الطلب

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


الملفات المرفقة صورة/صور
   
الرد }}}
تم الشكر بواسطة:
#2
السلام عليكم ورحمة الله وبركاته
اخي الكريم 
هذا الكود للداتاغرايد افترضت فيه 3 اعمدة وحيث اننا نقف او نحتار الصف الحالي
نحول العمود الاول وهو التاريخ من نص  الى تاريخ ونضعه في متغير ونحول العمود الثاني الذي هو عدد اشهر الاضافة من نص الى نوع (int) ونضعه في متغير
ثم نسند للعمود الثالث  الناتج من قيمة المتغير الاول وهو التاريخ مضافا اليه عدد الاشهر الموجودة في المتغير الرقمي العمود الثاني
كود :
DateTime DD;
           DD = Convert.ToDateTime(dataGridView1.CurrentRow.Cells[0].Value);
         
           int VV;
           VV= int.Parse(dataGridView1.CurrentRow.Cells[1].Value.ToString());

           dataGridView1.CurrentRow.Cells[2].Value= DD.AddMonths(VV).ToString("dd/MM/yyyy");
اعمل الخير وأجرك لا تنتظره فالله خير من إليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد }}}
تم الشكر بواسطة: amonem , amonem , عبد العزيز البسكري
#3
(03-01-21, 07:18 PM)ابراهيم ايبو كتب : السلام عليكم ورحمة الله وبركاته
اخي الكريم 
هذا الكود للداتاغرايد افترضت فيه 3 اعمدة وحيث اننا نقف او نحتار الصف الحالي
نحول العمود الاول وهو التاريخ من نص  الى تاريخ ونضعه في متغير ونحول العمود الثاني الذي هو عدد اشهر الاضافة من نص الى نوع (int) ونضعه في متغير
ثم نسند للعمود الثالث  الناتج من قيمة المتغير الاول وهو التاريخ مضافا اليه عدد الاشهر الموجودة في المتغير الرقمي العمود الثاني
كود :
DateTime DD;
           DD = Convert.ToDateTime(dataGridView1.CurrentRow.Cells[0].Value);
         
           int VV;
           VV= int.Parse(dataGridView1.CurrentRow.Cells[1].Value.ToString());

           dataGridView1.CurrentRow.Cells[2].Value= DD.AddMonths(VV).ToString("dd/MM/yyyy");
شكرا لردك استاذي الفاضل

حولت افهم الكود واضعه ولكن خبرتى لا تكفى مع العلمان الاضفه تتم عن طريق دتا جرد فيو كما واضح فى الصوره
ارجو دمجه فى هذا الكود

كود :
void add_Penalty()
       {
           if (DGV_Penalty.CurrentRow != null)
           {
               DataGridViewRow dgvRow = DGV_Penalty.CurrentRow;
               SqlCommand Cmd = new SqlCommand();
               Cmd.CommandType = CommandType.Text;
               string Save = "";
               if (dgvRow.Cells[2].Value == DBNull.Value)//Insert
               {
                   Save = "INSERT INTO TB_Penalty(ID,Nam,Of_Month,Days,Number,Start,Fin,Totl,Mon_th,Dat,Emp_ID)VALUES (@ID,@Nam,@Of_Month,@Days,@Number,@Start,@Fin,@Totl,@Mon_th,@Dat,@Emp_ID)";
                   Cmd = new SqlCommand(Save, DB.Con);
                   Cmd.Parameters.AddWithValue("@ID", DB.GetMaxIDColumn("TB_Penalty", "ID").ToString());
               }
               else //update
               {
                   Save = "UPDATE TB_Penalty SET Nam = @Nam,Of_Month = @Of_Month,Days = @Days,Number = @Number,Start = @Start,Fin = @Fin,Totl = @Totl,Mon_th = @Mon_th,Dat = @Dat,Emp_ID = @Emp_ID WHERE ID = @ID";
                   Cmd = new SqlCommand(Save, DB.Con);
                   Cmd.Parameters.AddWithValue("@ID", Convert.ToInt32(dgvRow.Cells[2].Value));
               }
               Cmd.Parameters.AddWithValue("@Nam", dgvRow.Cells[3].Value).DbType = DbType.Int32;
               Cmd.Parameters.AddWithValue("@Of_Month", dgvRow.Cells[4].Value).DbType = DbType.Int32;// دا حقل عدد لشهور المطلوب اضافتها على التاريخ
               Cmd.Parameters.AddWithValue("@Days", dgvRow.Cells[5].Value).DbType = DbType.Int32;
               Cmd.Parameters.AddWithValue("@Number", dgvRow.Cells[6].Value).DbType = DbType.Int32;
               Cmd.Parameters.AddWithValue("@Start", dgvRow.Cells[7].Value).DbType = DbType.Date;// هذا الحقل به تاريخ البدايه الذي يتم العمل عليه
               Cmd.Parameters.AddWithValue("@Fin", dgvRow.Cells[8].Value).DbType = DbType.Date;// هذا الحقل الذي يظهر به الناتج
               Cmd.Parameters.AddWithValue("@Totl", dgvRow.Cells[9].Value).DbType = DbType.Decimal;
               Cmd.Parameters.AddWithValue("@Mon_th", dgvRow.Cells[10].Value).DbType = DbType.Decimal;
               Cmd.Parameters.AddWithValue("@Dat", DateTime.Now.ToString("dd/MM/yyyy"));
               Cmd.Parameters.AddWithValue("@Emp_ID", Txt_Emp_ID.Text.ToString());
               DB.open(); Cmd.ExecuteNonQuery(); DB.close();
           }
       }


الملفات المرفقة صورة/صور
   
الرد }}}
تم الشكر بواسطة: ابراهيم ايبو
#4
السلام عليكم ورحمة الله وبركاته
اخي الكريم اخر 
اولا يجب ان تتم عملية اضافة الشهور اثناء تعبئة مربعات النصوص الخاصة باضافة سجل جديد وعند اختيار تاريخ معين ثم اضافة عدد من الشهور في مربع نص عدد الشهور المضافة وبعد الانتقال الى التاريخ الجديد تتم العملية الحسابية
بعدها ستكون جملة الحفظ بحيث تأخذ بياناتها من مربعات الادخال 

معلومة ونصيحة : لاتجرى عمليات حسابية في جمل الانسرت او الابدايت
بل ان جملة الانسرت ستأخذ القيم جاهزة بعد العمليات الحسابية خارج كود الانسرت(الحفظ او التعديل)
هذا في حال انك تدخل البيانات عبر مربعات ادخال
عد الى برنامجك وغير القيم بحيث تستبدل حقول الداتاغرايد بمربعات الادخال
اما ان كان الادخال من الداتا غرايد فعليك استخدام اي حدث يناسبك عند الانتقال من خلية الى اخرى لعمل الحساب
والحذث التالي هو المناسب  dataGridView1_CellValidated اي ان العملية الحسابية تتم في الداتاتا غرايد ثم ستقوم بجملة الحفظ المعتادة لديك بشكل مستقل
اليك الكود 

كود :
private void dataGridView1_CellValidated(object sender, DataGridViewCellEventArgs e)
       {
         
            DateTime DD;
           int VV;
           DD = Convert.ToDateTime(dataGridView1.CurrentRow.Cells[0].Value);

           if (dataGridView1.CurrentRow.Cells[1].Value != null)
           {
               VV = int.Parse(dataGridView1.CurrentRow.Cells[1].Value.ToString());
               dataGridView1.CurrentRow.Cells[2].Value = DD.AddMonths(VV).ToString("dd/MM/yyyy");
           }
       }
اعمل الخير وأجرك لا تنتظره فالله خير من إليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد }}}
تم الشكر بواسطة: amonem
#5
(04-01-21, 04:14 AM)ابراهيم ايبو كتب : السلام عليكم ورحمة الله وبركاته
اخي الكريم اخر 
اولا يجب ان تتم عملية اضافة الشهور اثناء تعبئة مربعات النصوص الخاصة باضافة سجل جديد وعند اختيار تاريخ معين ثم اضافة عدد من الشهور في مربع نص عدد الشهور المضافة وبعد الانتقال الى التاريخ الجديد تتم العملية الحسابية
بعدها ستكون جملة الحفظ بحيث تأخذ بياناتها من مربعات الادخال 

معلومة ونصيحة : لاتجرى عمليات حسابية في جمل الانسرت او الابدايت
بل ان جملة الانسرت ستأخذ القيم جاهزة بعد العمليات الحسابية خارج كود الانسرت(الحفظ او التعديل)
هذا في حال انك تدخل البيانات عبر مربعات ادخال
عد الى برنامجك وغير القيم بحيث تستبدل حقول الداتاغرايد بمربعات الادخال
اما ان كان الادخال من الداتا غرايد فعليك استخدام اي حدث يناسبك عند الانتقال من خلية الى اخرى لعمل الحساب
والحذث التالي هو المناسب  dataGridView1_CellValidated اي ان العملية الحسابية تتم في الداتاتا غرايد ثم ستقوم بجملة الحفظ المعتادة لديك بشكل مستقل
اليك الكود 

كود :
private void dataGridView1_CellValidated(object sender, DataGridViewCellEventArgs e)
       {
         
            DateTime DD;
           int VV;
           DD = Convert.ToDateTime(dataGridView1.CurrentRow.Cells[0].Value);

           if (dataGridView1.CurrentRow.Cells[1].Value != null)
           {
               VV = int.Parse(dataGridView1.CurrentRow.Cells[1].Value.ToString());
               dataGridView1.CurrentRow.Cells[2].Value = DD.AddMonths(VV).ToString("dd/MM/yyyy");
           }
       }
اولا بشكر حضرتك على مجهودك ومحاوله مساعدتى
انا بالفعل الاضافه بتم عن طريق (dataGridView) وليس مربعات نصوص 
حولت اعمل الكود ولكن يظهر خطأ فى هذا السطر تحديدا بيضع خط احمر اسفل (VV)
                ("dataGridView1.CurrentRow.Cells[2].Value = DD.AddMonths(VV).ToString("dd/MM/yyyy");
ولذلك اقتصرت الطريق وقمت بعمل فيو داخل السيكول سيرفر ونفذ المطلوب كما اريد ولكن وجهتنى مشكله اتمنى القي حل ليها
مستخدم فيه داله (iif) واريد اضافتها اكتر من مره ولم افلح مرفق ككود الفيو داخل السيكول سيرفر

كود :
                 iif((dbo.TB_Penalt.Nam = 'خصم'), CONVERT(decimal(18, 2), SUM(dbo.View_Total_Statement.Total / dbo.TB_Penalty.Number_Day_Month * dbo.TB_Penalty.Number_Days)), 

                 iif((dbo.TB_Penalt.Nam = 'انذار'), CONVERT(decimal(18, 2), SUM(dbo.View_Total_Statement.Total * 85/ 100)),CONVERT(decimal(18, 2), iif((dbo.TB_Penalt.Nam = 'جزاء'), dbo.View_C_Bdalat.Total)) AS Total_Discount,
محتاج اقول للكود اذا كان حقل Nam يساوى خصم نفذ عمليه حسابيه واذا كان انذار نفذ عمليه حسابيه اخرى واذا كان جزاء نفذ عمليه مختلفه عن السابقين واذا كان عير ذلك ينفذ عمليه اخرى
والناتج يضعه فى حقل ويسميه (Total_Discount)  
ولكن بتظهر خطأ  
مع ان الكود بيعمل بشرط واحد فقط لكن عند اضافه اكتر من شرط بيظهر خطأ
لو امكن تعدل الكود كما اريد وجزاك الله خيرا
الكود كامل هو



كود :
SELECT        dbo.TB_Employ.Emp_ID, dbo.TB_Employ.Emp_Nam, dbo.TB_Penalty.ID AS Nam_ID, dbo.TB_Penalty.Number_Days, dbo.TB_Penalty.Number_Month, dbo.TB_Penalty.Start,
                        DATEADD(Month, dbo.TB_Penalty.Number_Month, dbo.TB_Penalty.Start) AS Fin, dbo.View_Total_Statement.Total AS Totl,

                iif((dbo.TB_Penalt.Nam = 'خصم'), CONVERT(decimal(18, 2), SUM(dbo.View_Total_Statement.Total / dbo.TB_Penalty.Number_Day_Month * dbo.TB_Penalty.Number_Days)),
                iif((dbo.TB_Penalt.Nam = 'انذار'), CONVERT(decimal(18, 2), SUM(dbo.View_Total_Statement.Total * 85/ 100)),
                iif((dbo.TB_Penalt.Nam = 'جزاء'), CONVERT(decimal(18, 2), dbo.View_C_Bdalat.Total),CONVERT(decimal(18, 2), dbo.View_Total_Statement.Total)) AS Total_Discount,

                   dbo.TB_Penalty.Number_Day_Month,
                        dbo.TB_Penalt.Nam
FROM            dbo.View_C_Bdalat RIGHT OUTER JOIN
                        dbo.TB_Penalt INNER JOIN
                        dbo.TB_Penalty ON dbo.TB_Penalt.ID = dbo.TB_Penalty.Nam ON dbo.View_C_Bdalat.Bblat_Nam = dbo.TB_Penalt.Nam AND
                        dbo.View_C_Bdalat.Emp_ID = dbo.TB_Penalty.Emp_ID LEFT OUTER JOIN
                        dbo.TB_Salarie INNER JOIN
                        dbo.TB_Employ INNER JOIN
                        dbo.View_Total_Statement ON dbo.TB_Employ.Emp_ID = dbo.View_Total_Statement.Emp_ID ON dbo.TB_Salarie.Emp_ID = dbo.TB_Employ.Emp_ID ON
                        dbo.TB_Penalty.Emp_ID = dbo.TB_Employ.Emp_ID
GROUP BY dbo.TB_Employ.Emp_ID, dbo.TB_Employ.Emp_Nam, dbo.TB_Penalty.ID, dbo.TB_Penalty.Start, dbo.TB_Penalty.Number_Days, dbo.TB_Penalty.Number_Month,
                        dbo.TB_Penalty.Number_Day_Month, dbo.TB_Penalt.Nam, dbo.View_C_Bdalat.Total, dbo.View_Total_Statement.Total
الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  عرض التواريخ الاقل من تاريخ اليوم الحالى mazentq 1 991 25-02-22, 11:27 PM
آخر رد: ابراهيم ايبو
  اضافه صوره remonmary 1 1,287 21-02-20, 04:28 PM
آخر رد: asemshahen5
  [سؤال] توقيت يعمل كل 10 دقائق أو وقت محدد timequran 0 1,158 29-01-20, 02:28 PM
آخر رد: timequran
  استعلام بشرط محدد issamsaidd 9 3,098 20-10-19, 02:22 PM
آخر رد: issamsaidd
  عدد الايام بين تاريخ اليوم الحالي وتاريخ محدد hglogtd 9 2,630 23-09-19, 08:57 PM
آخر رد: ابراهيم ايبو
  [C#.NET] اضافه البيانات والتعديل عليها من خلال الداتا فيو مباشرا amonem 7 3,875 09-07-19, 10:01 AM
آخر رد: amonem
  اضافه البيانات والتعديل عليها من خلال الداتا فيو مباشرا سي شارب amonem 10 4,152 08-07-19, 11:17 PM
آخر رد: amonem
  [C#.NET] بحاجة ماسة الى اضافة فورم جديدة تضم اضافة أنواع كروت التشريج و سعر الشراء مع تاريخ ال aloush 7 2,734 09-08-18, 01:36 AM
آخر رد: aloush
  حذف بيانات الجدول كامل بعد وقت محدد Marwan9990 1 1,646 20-04-18, 04:59 PM
آخر رد: محمود بكرى
  اضافه ايقونات داخل الفورم adelzorrolight 1 3,407 13-01-18, 12:12 AM
آخر رد: طالب برمجة

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


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