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

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

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

#dateTimePicker - C

מתוזמן נעוץ נעול הועבר תכנות
11 פוסטים 4 כותבים 366 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • M מנותק
    M מנותק
    mekev
    כתב ב נערך לאחרונה על ידי
    #1

    בקצרה:
    איך ניתן לאתחל את הפקד dateTimePicker - שלא ישלח שום נתון

    ובהרחבה:
    יש לי שרשרת ייצור המכילה חמישה תהליכים
    אני מעוניין לעקוב ברמה תאריכית על ביצוע כל שלב

    פלטפורמה: - #WinForms / C (ישן ארכאי / ובכ"ז....)
    שמתמשקת ל: SQL

    בניתי שאילתה:
    המכילה חמישה פקדים של dateTimePicker - שכל אחד מהם אמור לעדכן שלב נוסף במסד הנתונים.
    בעת לחיצה על לחצן 'עדכן'
    נשלח עדכון ערך הפקדים למסד נתונים
    היות שלעיתים קרובות אני מעדכן שתים/שלוש שלבים בבת אחת
    בניתי את זה כעדכון אחד לכל השדות ולא דרך המאפיין dateTimePicker1_ValueChanged של כל פקד
    הבעיה שלי היא: שהפקד שולח לי תמיד את התאריך הנוכחי/ברירת מחדל - ומעדכן לי שדה מעוניין שתשאר בערך null
    אני מעוניין שכל פקד שלא אגע / אבחר בו תאריך (נוכחי/קודם) - יישאר בו הערך null

    אשמח לעזרתכם

    dovidD תגובה 1 תגובה אחרונה
    0
    • dovidD מנותק
      dovidD מנותק
      dovid ניהול
      השיב לmekev ב נערך לאחרונה על ידי dovid
      #2

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

      עריכה: יש להבחין בין ערך מקורי של המסד לבין ערך מקורי של הפקד (בברירת מחדל אני רואה שזה תאריך נוכחי). בשביל לדעת בכלל אם הייתה התערבות משתמש נראה לי שקביעת ערך המאפיין Checked = false יכולה לעזור לקבוע אם המשתמש בחר תאריך (אמור להפוך כנראה לtrue).

      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

      בכל נושא אפשר ליצור קשר dovid@tchumim.com

      M תגובה 1 תגובה אחרונה
      2
      • M מנותק
        M מנותק
        mekev
        השיב לdovid ב נערך לאחרונה על ידי
        #3

        @dovid
        זה הקוד שכתבתי

        string oo = dataGridView2.CurrentRow.Cells["מזהה"].Value.ToString();
        
                DateTime x1 = dateTimePicker1.Value;
                DateTime x2 = dateTimePicker2.Value;
                DateTime x3 = dateTimePicker3.Value;
                DateTime x4 = dateTimePicker4.Value;
                DateTime x5 = dateTimePicker5.Value;
                
        
                string y1 = x1.ToString("yyyy-MM-dd");
                string y2 = x2.ToString("yyyy-MM-dd");
                string y3 = x3.ToString("yyyy-MM-dd");
                string y4 = x4.ToString("yyyy-MM-dd");
                string y5 = x5.ToString("yyyy-MM-dd");
                
        
                con.Open();
                SqlCommand cmd = con.CreateCommand();
                cmd.CommandType = CommandType.Text;
                cmd.CommandText = $"UPDATE tabel SET  תאריך 1 = '{y1}', תאריך 2 = '{y2}',תאריך 3 = '{y3}',תאריך 4 = '{y4}',תאריך 5 = '{y5}' WHERE מזהה = " + oo + "";
                cmd.ExecuteNonQuery();
                con.Close();
        
        dovidD תגובה 1 תגובה אחרונה
        0
        • dovidD מנותק
          dovidD מנותק
          dovid ניהול
          השיב לmekev ב נערך לאחרונה על ידי
          #4

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

          מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

          בכל נושא אפשר ליצור קשר dovid@tchumim.com

          M תגובה 1 תגובה אחרונה
          0
          • M מנותק
            M מנותק
            mekev
            השיב לdovid ב נערך לאחרונה על ידי
            #5

            @dovid
            לא טוען כלום
            נמצא על ברירת מחדל

            dovidD תגובה 1 תגובה אחרונה
            0
            • dovidD מנותק
              dovidD מנותק
              dovid ניהול
              השיב לmekev ב נערך לאחרונה על ידי
              #6

              @mekev תגדירו את כל הפקדים שהמאפיין Checked שלהם יהיה false, ותעדכנו את הקוד לככה:

              string id = dataGridView2.CurrentRow.Cells["מזהה"].Value;
              
              var y1 = dateTimePicker1.Checked ? dateTimePicker1.Value.ToString("yyyy-MM-dd") : null;
              var y2 = dateTimePicker1.Checked ? dateTimePicker2.Value.ToString("yyyy-MM-dd") : null;
              var y3 = dateTimePicker1.Checked ? dateTimePicker3.Value.ToString("yyyy-MM-dd") : null;
              var y4 = dateTimePicker1.Checked ? dateTimePicker4.Value.ToString("yyyy-MM-dd") : null;
              var y5 = dateTimePicker1.Checked ? dateTimePicker5.Value.ToString("yyyy-MM-dd") : null;
              
              
              con.Open();
              SqlCommand cmd = con.CreateCommand();
              cmd.CommandType = CommandType.Text;
              cmd.CommandText = $"UPDATE tabel SET  תאריך 1 = '{y1:yyyy-mm-dd}', תאריך 2 = '{y2}',תאריך 3 = '{y3}',תאריך 4 = '{y4}',תאריך 5 = '{y5}' WHERE מזהה = " + id + "";
              cmd.ExecuteNonQuery();
              con.Close();
              

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

              '{y1:yyyy-mm-dd}'
              

              מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

              בכל נושא אפשר ליצור קשר dovid@tchumim.com

              י תגובה 1 תגובה אחרונה
              2
              • י מנותק
                י מנותק
                יהושע
                השיב לdovid ב נערך לאחרונה על ידי
                #7

                @dovid
                היי שלום אני כאן חדש אבל יש לי הרבה נסיון בC#
                מה שאתה צריך לעשות זה מאוד פשוט.
                צריך לשונת את הפומט של הDateTimePircr שיוכל לגם לקבל פורמט מותאם אישית ז"א שיהיה אפשר לאתחל את הTIME בכל סוג של פורמט. ואז פשוט להגדיר את הזמן ל " "

                dateTimePicker1.Format=DateTimePickerFormat.Custom;
                            dateTimePicker1.CustomFormat = " ";
                

                את הקוד הזה לשים בתוך הform_load לכל control
                וזה בעצם מאתחל את picker k" "

                מקווה שהסברתי את עצמי טוב.
                אם יש שאלה הינך מוזמן לשאול כאן

                yossizY י 2 תגובות תגובה אחרונה
                1
                • yossizY מנותק
                  yossizY מנותק
                  yossiz
                  השיב ליהושע ב נערך לאחרונה על ידי
                  #8

                  @יהושע אמר ב#dateTimePicker - C:

                  @dovid
                  היי שלום אני כאן חדש אבל יש לי הרבה נסיון בC#

                  שלום עליכם @יהושע,
                  מקווה שתהנה ותתרום הרבה לפורום
                  יש לך טעות קטנה, האיש שתייגת (@dovid) הוא לא השואל פה. ואגב, גם לו יש המון נסיון ב-#C 🙂
                  (חוץ מזה, נראה שהשואל כבר קיבל תשובה מספיקה)

                  📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                  י תגובה 1 תגובה אחרונה
                  2
                  • י מנותק
                    י מנותק
                    יהושע
                    השיב לyossiz ב נערך לאחרונה על ידי
                    #9

                    @yossiz אני עדיין לא יודע איך משמשים בדיוק פה..
                    אבל אני בכל מקרה נסיתי לעזור
                    והפיתרון שלי בדוק

                    תגובה 1 תגובה אחרונה
                    1
                    • י מנותק
                      י מנותק
                      יהושע
                      השיב ליהושע ב נערך לאחרונה על ידי יהושע
                      #10

                      @יהושע אמר ב#dateTimePicker - C:

                      יש לי הרבה נסיון בC#

                      אני בונה כבר כשנה(!!) פרויקט בC#.
                      תוכנה מאוד גדולה לניהול של גמ"ח כספי.
                      אני מסיים כבר עוד מעט
                      אני אעלה את זה בעז"ה לgithub

                      dovidD תגובה 1 תגובה אחרונה
                      1
                      • dovidD מנותק
                        dovidD מנותק
                        dovid ניהול
                        השיב ליהושע ב נערך לאחרונה על ידי dovid
                        #11

                        @יהושע הפתרון שלך לא עונה על השאלה.
                        הקוד הבא ממחיש את הבעיה:

                        var dateTimePicker1 = new DateTimePicker(); 
                        dateTimePicker1.Format = DateTimePickerFormat.Custom;
                        dateTimePicker1.CustomFormat = " ";
                        Console.WriteLine(dateTimePicker1.Value); 
                        //RESULT: 06/05/2021 19:35:27
                        

                        השואל/ת רצה שכל עוד המשתמש לא ביצע בחירת תאריך, התוצאה תהיה null ולא שום תאריך.

                        מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                        בכל נושא אפשר ליצור קשר dovid@tchumim.com

                        תגובה 1 תגובה אחרונה
                        0
                        • dovidD dovid העביר נושא זה מ-תכנות ב-

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

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

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