דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. מיון תאריכים המוצגים כחודש ושנה בסדר כרונולוגי

מיון תאריכים המוצגים כחודש ושנה בסדר כרונולוגי

מתוזמן נעוץ נעול הועבר תכנות
25 פוסטים 3 כותבים 456 צפיות 2 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • dovidD dovid

    @mekev הכי טוב שתביא לי את הSQL (אני מניח שאתה לא משתמש בEF, נכון?)
    ותגדיר לי לפי מה הPivot הרצוי ואתן לך את הקוד המתאים לענ"ד.

    M מנותק
    M מנותק
    mekev
    כתב ב נערך לאחרונה על ידי
    #11

    @dovid

    CREATE TABLE Sales
        ([date] datetime, [Barcode] int, [product_name] varchar(50),[GGroup] varchar(50),[stock] int, [quantity] int)
    ;
        
    INSERT INTO Sales
        ([date] , [Barcode] , [product_name] ,[GGroup],[stock] , [quantity] )
    VALUES
        ('2022-01-01 12:00:00', 2885, 'Cookware','microwave',25,1),
        ('2022-01-06 13:00:00', 2885, 'Cookware','microwave',25,2),
        ('2022-02-01 14:00:00', 2885, 'Cookware','microwave',25,3),
        ('2022-02-05 15:00:00',  2885, 'Cookware','microwave',25,4),
        ('2022-03-05 16:00:00', 2885, 'Cookware','microwave',25,5),
        ('2022-03-06 17:00:00', 2885, 'Cookware','microwave',25,6),
        ('2022-04-07 18:00:00', 2885, 'Cookware','microwave',25,7),
        ('2022-04-08 19:00:00',  2885, 'Cookware','microwave',25,8),
        ('2022-05-09 20:00:00',  2885, 'Cookware','microwave',25,9),
        ('2022-05-10 21:00:00',  2885, 'Cookware','microwave',25,10),
        ('2022-06-11 22:00:00',  2885, 'Cookware','microwave',25,11),
        ('2022-06-12 23:00:00',  2885, 'Cookware','microwave',25,12),
        ('2022-07-13 11:00:00', 2885, 'Cookware','microwave',25,13),
        ('2022-07-14 10:00:00',  2885, 'Cookware','microwave',25,14),
    	('2022-01-01 12:00:00', 3665, 'Appliances','refrigerator',12,15),
        ('2022-01-06 13:00:00', 3665, 'Appliances','refrigerator',12,16),
        ('2022-02-01 14:00:00', 3665, 'Appliances','refrigerator',12,17),
        ('2022-02-05 15:00:00', 3665, 'Appliances','refrigerator',12,18),
        ('2022-03-05 16:00:00', 3665, 'Appliances','refrigerator',12,19),
        ('2022-03-06 17:00:00', 3665, 'Appliances','refrigerator',12,20),
        ('2022-04-07 18:00:00', 3665, 'Appliances','refrigerator',12,21),
        ('2022-04-08 19:00:00',  3665, 'Appliances','refrigerator',12,22),
        ('2022-05-09 20:00:00',  3665, 'Appliances','refrigerator',12,23),
        ('2022-05-10 21:00:00', 3665, 'Appliances','refrigerator',12,24),
        ('2022-06-11 22:00:00',  3665, 'Appliances','refrigerator',12,25),
        ('2022-06-12 23:00:00',  3665, 'Appliances','refrigerator',12,26),
        ('2022-07-13 11:00:00', 3665, 'Appliances','refrigerator',12,27),
        ('2022-07-14 10:00:00',  3665, 'Appliances','refrigerator',12,28),
    	('2022-01-01 12:00:00', 2885, 'Cookware','microwave',25,1),
        ('2022-01-06 13:00:00', 2885, 'Cookware','microwave',25,2),
        ('2022-02-01 14:00:00', 2885, 'Cookware','microwave',25,3),
        ('2022-02-05 15:00:00',  2885, 'Cookware','microwave',25,4),
        ('2022-03-05 16:00:00', 2885, 'Cookware','microwave',25,5),
        ('2022-03-06 17:00:00', 2885, 'Cookware','microwave',25,6),
        ('2022-04-07 18:00:00', 2885, 'Cookware','microwave',25,7),
        ('2022-04-08 19:00:00',  2885, 'Cookware','microwave',25,8),
        ('2022-05-09 20:00:00',  2885, 'Cookware','microwave',25,9),
        ('2022-05-10 21:00:00',  2885, 'Cookware','microwave',25,10),
        ('2022-06-11 22:00:00',  2885, 'Cookware','microwave',25,11),
        ('2022-06-12 23:00:00',  2885, 'Cookware','microwave',25,12),
        ('2022-07-13 11:00:00', 2885, 'Cookware','microwave',25,13),
        ('2022-07-14 10:00:00',  2885, 'Cookware','microwave',25,14),
    	('2023-01-01 12:00:00', 3665, 'Appliances','refrigerator',12,15),
        ('2023-01-06 13:00:00', 3665, 'Appliances','refrigerator',12,16),
        ('2023-02-01 14:00:00', 3665, 'Appliances','refrigerator',12,17),
        ('2023-02-05 15:00:00', 3665, 'Appliances','refrigerator',12,18),
        ('2023-03-05 16:00:00', 3665, 'Appliances','refrigerator',12,19),
        ('2023-03-06 17:00:00', 3665, 'Appliances','refrigerator',12,20),
        ('2023-04-07 18:00:00', 3665, 'Appliances','refrigerator',12,21),
        ('2023-04-08 19:00:00',  3665, 'Appliances','refrigerator',12,22),
        ('2023-05-09 20:00:00',  3665, 'Appliances','refrigerator',12,23),
        ('2023-05-10 21:00:00', 3665, 'Appliances','refrigerator',12,24),
        ('2023-06-11 22:00:00',  3665, 'Appliances','refrigerator',12,25),
        ('2023-06-12 23:00:00',  3665, 'Appliances','refrigerator',12,26),
        ('2023-07-13 11:00:00', 3665, 'Appliances','refrigerator',12,27),
        ('2023-07-14 10:00:00',  3665, 'Appliances','refrigerator',12,28)
    ;
    

    אפשרות א:

    select  year (s.date) as year ,month (s.date) as month ,s.product_name ,s.Barcode ,s.GGroup ,s.stock ,SUM (s.quantity) AS quantity
    from Sales s
    group by year(s.date),month(s.date) ,s.product_name ,s.Barcode ,s.GGroup ,s.stock
    

    אפשרות ב:

    select CONVERT( nvarchar,month(date)) + '/' +CONVERT( nvarchar, year(date)) as 'date' ,s.product_name ,s.Barcode ,s.GGroup ,s.stock ,SUM (s.quantity) AS quantity
    from Sales s
    group by year(s.date),month(s.date) ,s.product_name ,s.Barcode ,s.GGroup ,s.stock
    

    התוצאה הרצויה:

    a364197e-11cf-48db-b1d9-7a7c7252804b-image.png

    (נ.ב. לא מצאתי עורך קוד אונליין להעלות דרכו את הדוגמא
    sqlfiddle לא תומך בחלק מהפונקציות)

    dovidD תגובה 1 תגובה אחרונה
    1
    • M mekev

      @dovid

      CREATE TABLE Sales
          ([date] datetime, [Barcode] int, [product_name] varchar(50),[GGroup] varchar(50),[stock] int, [quantity] int)
      ;
          
      INSERT INTO Sales
          ([date] , [Barcode] , [product_name] ,[GGroup],[stock] , [quantity] )
      VALUES
          ('2022-01-01 12:00:00', 2885, 'Cookware','microwave',25,1),
          ('2022-01-06 13:00:00', 2885, 'Cookware','microwave',25,2),
          ('2022-02-01 14:00:00', 2885, 'Cookware','microwave',25,3),
          ('2022-02-05 15:00:00',  2885, 'Cookware','microwave',25,4),
          ('2022-03-05 16:00:00', 2885, 'Cookware','microwave',25,5),
          ('2022-03-06 17:00:00', 2885, 'Cookware','microwave',25,6),
          ('2022-04-07 18:00:00', 2885, 'Cookware','microwave',25,7),
          ('2022-04-08 19:00:00',  2885, 'Cookware','microwave',25,8),
          ('2022-05-09 20:00:00',  2885, 'Cookware','microwave',25,9),
          ('2022-05-10 21:00:00',  2885, 'Cookware','microwave',25,10),
          ('2022-06-11 22:00:00',  2885, 'Cookware','microwave',25,11),
          ('2022-06-12 23:00:00',  2885, 'Cookware','microwave',25,12),
          ('2022-07-13 11:00:00', 2885, 'Cookware','microwave',25,13),
          ('2022-07-14 10:00:00',  2885, 'Cookware','microwave',25,14),
      	('2022-01-01 12:00:00', 3665, 'Appliances','refrigerator',12,15),
          ('2022-01-06 13:00:00', 3665, 'Appliances','refrigerator',12,16),
          ('2022-02-01 14:00:00', 3665, 'Appliances','refrigerator',12,17),
          ('2022-02-05 15:00:00', 3665, 'Appliances','refrigerator',12,18),
          ('2022-03-05 16:00:00', 3665, 'Appliances','refrigerator',12,19),
          ('2022-03-06 17:00:00', 3665, 'Appliances','refrigerator',12,20),
          ('2022-04-07 18:00:00', 3665, 'Appliances','refrigerator',12,21),
          ('2022-04-08 19:00:00',  3665, 'Appliances','refrigerator',12,22),
          ('2022-05-09 20:00:00',  3665, 'Appliances','refrigerator',12,23),
          ('2022-05-10 21:00:00', 3665, 'Appliances','refrigerator',12,24),
          ('2022-06-11 22:00:00',  3665, 'Appliances','refrigerator',12,25),
          ('2022-06-12 23:00:00',  3665, 'Appliances','refrigerator',12,26),
          ('2022-07-13 11:00:00', 3665, 'Appliances','refrigerator',12,27),
          ('2022-07-14 10:00:00',  3665, 'Appliances','refrigerator',12,28),
      	('2022-01-01 12:00:00', 2885, 'Cookware','microwave',25,1),
          ('2022-01-06 13:00:00', 2885, 'Cookware','microwave',25,2),
          ('2022-02-01 14:00:00', 2885, 'Cookware','microwave',25,3),
          ('2022-02-05 15:00:00',  2885, 'Cookware','microwave',25,4),
          ('2022-03-05 16:00:00', 2885, 'Cookware','microwave',25,5),
          ('2022-03-06 17:00:00', 2885, 'Cookware','microwave',25,6),
          ('2022-04-07 18:00:00', 2885, 'Cookware','microwave',25,7),
          ('2022-04-08 19:00:00',  2885, 'Cookware','microwave',25,8),
          ('2022-05-09 20:00:00',  2885, 'Cookware','microwave',25,9),
          ('2022-05-10 21:00:00',  2885, 'Cookware','microwave',25,10),
          ('2022-06-11 22:00:00',  2885, 'Cookware','microwave',25,11),
          ('2022-06-12 23:00:00',  2885, 'Cookware','microwave',25,12),
          ('2022-07-13 11:00:00', 2885, 'Cookware','microwave',25,13),
          ('2022-07-14 10:00:00',  2885, 'Cookware','microwave',25,14),
      	('2023-01-01 12:00:00', 3665, 'Appliances','refrigerator',12,15),
          ('2023-01-06 13:00:00', 3665, 'Appliances','refrigerator',12,16),
          ('2023-02-01 14:00:00', 3665, 'Appliances','refrigerator',12,17),
          ('2023-02-05 15:00:00', 3665, 'Appliances','refrigerator',12,18),
          ('2023-03-05 16:00:00', 3665, 'Appliances','refrigerator',12,19),
          ('2023-03-06 17:00:00', 3665, 'Appliances','refrigerator',12,20),
          ('2023-04-07 18:00:00', 3665, 'Appliances','refrigerator',12,21),
          ('2023-04-08 19:00:00',  3665, 'Appliances','refrigerator',12,22),
          ('2023-05-09 20:00:00',  3665, 'Appliances','refrigerator',12,23),
          ('2023-05-10 21:00:00', 3665, 'Appliances','refrigerator',12,24),
          ('2023-06-11 22:00:00',  3665, 'Appliances','refrigerator',12,25),
          ('2023-06-12 23:00:00',  3665, 'Appliances','refrigerator',12,26),
          ('2023-07-13 11:00:00', 3665, 'Appliances','refrigerator',12,27),
          ('2023-07-14 10:00:00',  3665, 'Appliances','refrigerator',12,28)
      ;
      

      אפשרות א:

      select  year (s.date) as year ,month (s.date) as month ,s.product_name ,s.Barcode ,s.GGroup ,s.stock ,SUM (s.quantity) AS quantity
      from Sales s
      group by year(s.date),month(s.date) ,s.product_name ,s.Barcode ,s.GGroup ,s.stock
      

      אפשרות ב:

      select CONVERT( nvarchar,month(date)) + '/' +CONVERT( nvarchar, year(date)) as 'date' ,s.product_name ,s.Barcode ,s.GGroup ,s.stock ,SUM (s.quantity) AS quantity
      from Sales s
      group by year(s.date),month(s.date) ,s.product_name ,s.Barcode ,s.GGroup ,s.stock
      

      התוצאה הרצויה:

      a364197e-11cf-48db-b1d9-7a7c7252804b-image.png

      (נ.ב. לא מצאתי עורך קוד אונליין להעלות דרכו את הדוגמא
      sqlfiddle לא תומך בחלק מהפונקציות)

      dovidD מחובר
      dovidD מחובר
      dovid
      ניהול
      כתב ב נערך לאחרונה על ידי dovid
      #12

      @mekev יאהוו ממש השקעת, כל הכבוד.
      אני התכוונתי שתביא לי את הSELECT שאיתו אתה שולף מהSQL בC# (אתה עובד עם DataSet.Fill?).
      בכל אופן בדוגמאות שלך, אתה פשוט מצרף עמודה שמכילה את התאריך כתאריך:
      אפשרות א'

      select  MIN(s.date) as FullDate, year (s.date) as year ,month (s.date) as month ,s.product_name ,s.Barcode ,s.GGroup ,s.stock ,SUM (s.quantity) AS quantity
      from Sales s
      group by year(s.date),month(s.date) ,s.product_name ,s.Barcode ,s.GGroup ,s.stock
      

      אפשרות ב' לא טובה. אם כבר ליצור מזה תאריך חדש של יום האחד בחודש תמיד:

      select DATEFROMPARTS(year(date), month(date), 1) ,s.product_name ,s.Barcode ,s.GGroup ,s.stock ,SUM (s.quantity) AS quantity
      from Sales s
      group by DATEFROMPARTS(year(date), month(date), 1) ,s.product_name ,s.Barcode ,s.GGroup ,s.stock
      

      אבל אני לא מבין איך כל זה יעזור לך לC#, ץתביא את הSQL שאיתו אתה שולף לDATATBLE עם החודשושנה.

      • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
      • בכל נושא אפשר ליצור קשר dovid@tchumim.com
      M תגובה 1 תגובה אחרונה
      1
      • dovidD dovid

        @mekev יאהוו ממש השקעת, כל הכבוד.
        אני התכוונתי שתביא לי את הSELECT שאיתו אתה שולף מהSQL בC# (אתה עובד עם DataSet.Fill?).
        בכל אופן בדוגמאות שלך, אתה פשוט מצרף עמודה שמכילה את התאריך כתאריך:
        אפשרות א'

        select  MIN(s.date) as FullDate, year (s.date) as year ,month (s.date) as month ,s.product_name ,s.Barcode ,s.GGroup ,s.stock ,SUM (s.quantity) AS quantity
        from Sales s
        group by year(s.date),month(s.date) ,s.product_name ,s.Barcode ,s.GGroup ,s.stock
        

        אפשרות ב' לא טובה. אם כבר ליצור מזה תאריך חדש של יום האחד בחודש תמיד:

        select DATEFROMPARTS(year(date), month(date), 1) ,s.product_name ,s.Barcode ,s.GGroup ,s.stock ,SUM (s.quantity) AS quantity
        from Sales s
        group by DATEFROMPARTS(year(date), month(date), 1) ,s.product_name ,s.Barcode ,s.GGroup ,s.stock
        

        אבל אני לא מבין איך כל זה יעזור לך לC#, ץתביא את הSQL שאיתו אתה שולף לDATATBLE עם החודשושנה.

        M מנותק
        M מנותק
        mekev
        כתב ב נערך לאחרונה על ידי mekev
        #13

        @dovid

        1. אני שולף עם SqlCommand

        2. העמודה 'date' זה העמודה 'חודשושנה' בקוד האמיתי שלי
          אני כיום שולף מה SQL באפשרות ב' שכתבתי (הופך את התאריך לטקסט)
          ומבצע עליה בC# 'פיבוט' כדלעיל

        dovidD תגובה 1 תגובה אחרונה
        0
        • M mekev

          @dovid

          1. אני שולף עם SqlCommand

          2. העמודה 'date' זה העמודה 'חודשושנה' בקוד האמיתי שלי
            אני כיום שולף מה SQL באפשרות ב' שכתבתי (הופך את התאריך לטקסט)
            ומבצע עליה בC# 'פיבוט' כדלעיל

          dovidD מחובר
          dovidD מחובר
          dovid
          ניהול
          כתב ב נערך לאחרונה על ידי dovid
          #14

          @mekev אוקי,
          אז קח את הקוד הזה

          select DATEFROMPARTS(year(date), month(date), 1) as 'date' ,s.product_name ,s.Barcode ,s.GGroup ,s.stock ,SUM (s.quantity) AS quantity
          from Sales s
          group by year(s.date),month(s.date) ,s.product_name ,s.Barcode ,s.GGroup ,s.stock
          

          בקוד שלך תשנה את זה:

          var uniqueAncType = dt.AsEnumerable().Select(x => x.Field<DateTime>("date")).Distinct().OrderBy(x => x).Select(x => x.ToString("MM/yyyy"));
          

          וגם את זה:

           newRow[ancType.Field<DateTime>("date").ToString("MM/yyyy")] = ancType.Field<double>("כמות מכירות");
          
          • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
          • בכל נושא אפשר ליצור קשר dovid@tchumim.com
          M תגובה 1 תגובה אחרונה
          1
          • dovidD dovid

            @mekev אוקי,
            אז קח את הקוד הזה

            select DATEFROMPARTS(year(date), month(date), 1) as 'date' ,s.product_name ,s.Barcode ,s.GGroup ,s.stock ,SUM (s.quantity) AS quantity
            from Sales s
            group by year(s.date),month(s.date) ,s.product_name ,s.Barcode ,s.GGroup ,s.stock
            

            בקוד שלך תשנה את זה:

            var uniqueAncType = dt.AsEnumerable().Select(x => x.Field<DateTime>("date")).Distinct().OrderBy(x => x).Select(x => x.ToString("MM/yyyy"));
            

            וגם את זה:

             newRow[ancType.Field<DateTime>("date").ToString("MM/yyyy")] = ancType.Field<double>("כמות מכירות");
            
            M מנותק
            M מנותק
            mekev
            כתב ב נערך לאחרונה על ידי mekev
            #15

            @dovid כתב במיון תאריכים המוצגים כחודש ושנה בסדר כרונולוגי:

            DATEFROMPARTS

            הפונקציה DATEFROMPARTS זמינה רק מגרסת 2012.....

            עריכה:

            החלפתי ב:

            dateadd(dd, 0, dateadd(mm, datediff(mm,0, date), 0)) as 'חודשושנה'
            

            מקור

            M תגובה 1 תגובה אחרונה
            1
            • M mekev

              @dovid כתב במיון תאריכים המוצגים כחודש ושנה בסדר כרונולוגי:

              DATEFROMPARTS

              הפונקציה DATEFROMPARTS זמינה רק מגרסת 2012.....

              עריכה:

              החלפתי ב:

              dateadd(dd, 0, dateadd(mm, datediff(mm,0, date), 0)) as 'חודשושנה'
              

              מקור

              M מנותק
              M מנותק
              mekev
              כתב ב נערך לאחרונה על ידי
              #16

              @mekev

              לא עובד...

              כאשר הוא מקבל את ההמרה ל: ToString("MM/yyyy") הוא ממיין כטקסט

              e55378da-28c3-4707-a84d-e9908dc94454-image.png

              dovidD תגובה 1 תגובה אחרונה
              0
              • M mekev

                @mekev

                לא עובד...

                כאשר הוא מקבל את ההמרה ל: ToString("MM/yyyy") הוא ממיין כטקסט

                e55378da-28c3-4707-a84d-e9908dc94454-image.png

                dovidD מחובר
                dovidD מחובר
                dovid
                ניהול
                כתב ב נערך לאחרונה על ידי
                #17

                @mekev המיון של העמודות נקבע עוד לפני ההמרה לToString, איפה שכתוב המילים OrderBy.
                לכן התוצאה שאתה מציג היא בהכרח שלא העתקת את הקוד כפי שהוא (בפרט השורה בה שמתי OrderBy), ואם אתה מכחיש תהיה חייב להציג לי כדי שהאמין לך...

                • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                M תגובה 1 תגובה אחרונה
                0
                • dovidD dovid

                  @mekev המיון של העמודות נקבע עוד לפני ההמרה לToString, איפה שכתוב המילים OrderBy.
                  לכן התוצאה שאתה מציג היא בהכרח שלא העתקת את הקוד כפי שהוא (בפרט השורה בה שמתי OrderBy), ואם אתה מכחיש תהיה חייב להציג לי כדי שהאמין לך...

                  M מנותק
                  M מנותק
                  mekev
                  כתב ב נערך לאחרונה על ידי mekev
                  #18

                  @dovid
                  6ed72cad-5064-4778-83ce-bf1544f553a5-image.png

                  עריכה: כאשר אני עושה order by ישירות בSQL זה אכן מביא בצורה מממוינת
                  במקביל גם כאשר אני משאיר את המיון בביצוע השאילתא דרך הC# זה מביא את התוצאה הנ"ל

                  dovidD תגובה 1 תגובה אחרונה
                  0
                  • M mekev

                    @dovid
                    6ed72cad-5064-4778-83ce-bf1544f553a5-image.png

                    עריכה: כאשר אני עושה order by ישירות בSQL זה אכן מביא בצורה מממוינת
                    במקביל גם כאשר אני משאיר את המיון בביצוע השאילתא דרך הC# זה מביא את התוצאה הנ"ל

                    dovidD מחובר
                    dovidD מחובר
                    dovid
                    ניהול
                    כתב ב נערך לאחרונה על ידי
                    #19

                    @mekev בא נשאל ככה, יש קוד נוסף חוץ מזה (כלומר חוץ ממה שמוצג בתמונה) שמנסה לסדר את העמודות?
                    אגב גם אם הוא היה ממין כטקסט עדיין 01/2022 צריך לקדום ל01/2023. משהו פה משגע אותי.

                    • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                    • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                    M תגובה 1 תגובה אחרונה
                    0
                    • dovidD dovid

                      @mekev בא נשאל ככה, יש קוד נוסף חוץ מזה (כלומר חוץ ממה שמוצג בתמונה) שמנסה לסדר את העמודות?
                      אגב גם אם הוא היה ממין כטקסט עדיין 01/2022 צריך לקדום ל01/2023. משהו פה משגע אותי.

                      M מנותק
                      M מנותק
                      mekev
                      כתב ב נערך לאחרונה על ידי mekev
                      #20

                      @dovid

                      @dovid כתב במיון תאריכים המוצגים כחודש ושנה בסדר כרונולוגי:

                      יש קוד נוסף חוץ מזה (כלומר חוץ ממה שמוצג בתמונה) שמנסה לסדר את העמודות?

                      לא.

                      זה מה שמופיע בdt

                      4285c3af-8e9c-46de-bc2e-07c13d97d959-image.png

                      dovidD 2 תגובות תגובה אחרונה
                      0
                      • M mekev

                        @dovid

                        @dovid כתב במיון תאריכים המוצגים כחודש ושנה בסדר כרונולוגי:

                        יש קוד נוסף חוץ מזה (כלומר חוץ ממה שמוצג בתמונה) שמנסה לסדר את העמודות?

                        לא.

                        זה מה שמופיע בdt

                        4285c3af-8e9c-46de-bc2e-07c13d97d959-image.png

                        dovidD מחובר
                        dovidD מחובר
                        dovid
                        ניהול
                        כתב ב נערך לאחרונה על ידי dovid
                        #21

                        @mekev איבדתי ראש.
                        מבחינתי לא מציאותי שסדר בעמודות שנוצרים על ידי uniqueAncType אינם לפי סדר כרונולגי.
                        בגלל שמיצינו את האפשרויות אין לי אלא להרים ידיים למרות שיש לי חשק רב לראות את העניין בשליטה מרחוק, אם זה מתאפשר לך.

                        • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                        • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                        M תגובה 1 תגובה אחרונה
                        2
                        • M mekev

                          @dovid

                          @dovid כתב במיון תאריכים המוצגים כחודש ושנה בסדר כרונולוגי:

                          יש קוד נוסף חוץ מזה (כלומר חוץ ממה שמוצג בתמונה) שמנסה לסדר את העמודות?

                          לא.

                          זה מה שמופיע בdt

                          4285c3af-8e9c-46de-bc2e-07c13d97d959-image.png

                          dovidD מחובר
                          dovidD מחובר
                          dovid
                          ניהול
                          כתב ב נערך לאחרונה על ידי
                          #22

                          למי שנפשו יוצאת לדעת את פתרון החידה אני מעדכן ש@mekev ברוב טובו יצר עימי קשר והראה לי את התעלומה הגדולה במוחש.
                          עקבנו אחרי הקוד, הDataTable אכן בסדר נכון, כל העמודות בסדר בו יצרו אותם (אלא מה?!) אבל הDataGridView שעם ההגדרה של AutoGenerateColumns מציג סדר משונה בו 01/2023 קודם ל01/2022.
                          אחרי הרבה זמן פתאום עלה הרעיון במוחו של @mekev שהבעיה מתרחשת תמיד רק בטעינה נוספת לDGV כלומר אחרי שכבר היה לו מקור אחר בעבר. מה שפתאום הבנו שיש מנגנון של מחזור עמודות קיימות, ושבמקרה כזה הם לא רק נחסכות מלהיווצר אלא הם גם שומרים על מיקומם... הגדרה של DataSource = null לפני הטעינה החדשה פותר את הבעיה!

                          • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                          • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                          dovidD תגובה 1 תגובה אחרונה
                          4
                          • dovidD dovid

                            למי שנפשו יוצאת לדעת את פתרון החידה אני מעדכן ש@mekev ברוב טובו יצר עימי קשר והראה לי את התעלומה הגדולה במוחש.
                            עקבנו אחרי הקוד, הDataTable אכן בסדר נכון, כל העמודות בסדר בו יצרו אותם (אלא מה?!) אבל הDataGridView שעם ההגדרה של AutoGenerateColumns מציג סדר משונה בו 01/2023 קודם ל01/2022.
                            אחרי הרבה זמן פתאום עלה הרעיון במוחו של @mekev שהבעיה מתרחשת תמיד רק בטעינה נוספת לDGV כלומר אחרי שכבר היה לו מקור אחר בעבר. מה שפתאום הבנו שיש מנגנון של מחזור עמודות קיימות, ושבמקרה כזה הם לא רק נחסכות מלהיווצר אלא הם גם שומרים על מיקומם... הגדרה של DataSource = null לפני הטעינה החדשה פותר את הבעיה!

                            dovidD מחובר
                            dovidD מחובר
                            dovid
                            ניהול
                            כתב ב נערך לאחרונה על ידי dovid
                            #23

                            קוד linqpad שממחיש את האבסורד (יש להקליק דבל קליק על הטבלה המוצגת כדי לטעון את זו שאחריה):

                            void Main()
                            {
                                var dt1 = new DataTable();
                                dt1.Columns.Add("B");
                                dt1.Columns.Add("C");
                                AddRow(dt1);
                            
                                var dt2 = new DataTable();
                                dt2.Columns.Add("A");
                                dt2.Columns.Add("B");
                                dt2.Columns.Add("C");
                                AddRow(dt2);
                            
                                var dgv = new DataGridView();
                                dgv.DataSource = dt1;
                                dgv.Dump();
                            
                                dgv.MouseDoubleClick += (s,e) => dgv.DataSource = dt2;
                            }
                            
                            void AddRow(DataTable dt)
                            {
                                var row = dt.NewRow();
                                row[0] = 123;
                                dt.Rows.Add(row);
                            }
                            

                            תוצאה:

                            c66d8eff-a333-41d6-9346-8dbd2dbc1928-image.png

                            • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                            • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                            תגובה 1 תגובה אחרונה
                            2
                            • dovidD dovid

                              @mekev איבדתי ראש.
                              מבחינתי לא מציאותי שסדר בעמודות שנוצרים על ידי uniqueAncType אינם לפי סדר כרונולגי.
                              בגלל שמיצינו את האפשרויות אין לי אלא להרים ידיים למרות שיש לי חשק רב לראות את העניין בשליטה מרחוק, אם זה מתאפשר לך.

                              M מנותק
                              M מנותק
                              mekev
                              כתב ב נערך לאחרונה על ידי mekev
                              #24

                              @dovid

                              ממש תודה ענקית על התמיכה באישי
                              (ועל ה...)

                              לתועלת הציבור:
                              הפתרון לתעלומה הינו: שהפקד DataGridView
                              שומר את שמות העמודות
                              ולכן בטעינה חוזרת של טווח תאריכים שונה,
                              למרות שב DataTable זה ממוין נכון,
                              נותר מיקום העמודות המקוריות לא לפי הסדר הרצוי

                              ולכן יש לאפס את מקור הנתונים לפני טעינה חוזרת

                              DataGridView1.DataSource = null
                              
                              dovidD תגובה 1 תגובה אחרונה
                              1
                              • M mekev

                                @dovid

                                ממש תודה ענקית על התמיכה באישי
                                (ועל ה...)

                                לתועלת הציבור:
                                הפתרון לתעלומה הינו: שהפקד DataGridView
                                שומר את שמות העמודות
                                ולכן בטעינה חוזרת של טווח תאריכים שונה,
                                למרות שב DataTable זה ממוין נכון,
                                נותר מיקום העמודות המקוריות לא לפי הסדר הרצוי

                                ולכן יש לאפס את מקור הנתונים לפני טעינה חוזרת

                                DataGridView1.DataSource = null
                                
                                dovidD מחובר
                                dovidD מחובר
                                dovid
                                ניהול
                                כתב ב נערך לאחרונה על ידי
                                #25

                                @mekev לא שמת לב שכבר הקדמתי אותך.

                                אנחנו לא היחידים ששמנו לב לזה:
                                הבעיה ב2008:
                                https://www.pcreview.co.uk/threads/3551798/

                                פה מוזכר הפתרון
                                https://stackoverflow.com/a/38883973/1271037

                                • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                                • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                                תגובה 1 תגובה אחרונה
                                2
                                תגובה
                                • תגובה כנושא
                                התחברו כדי לפרסם תגובה
                                • מהישן לחדש
                                • מהחדש לישן
                                • הכי הרבה הצבעות


                                • 1
                                • 2
                                בא תתחבר לדף היומי!
                                • התחברות

                                • אין לך חשבון עדיין? הרשמה

                                • התחברו או הירשמו כדי לחפש.
                                • פוסט ראשון
                                  פוסט אחרון
                                0
                                • דף הבית
                                • קטגוריות
                                • פוסטים אחרונים
                                • משתמשים
                                • חיפוש
                                • חוקי הפורום