תחומים
    • הרשמה
    • התחברות
    • חיפוש
    • קטגוריות
    • פוסטים אחרונים
    • משתמשים
    • חיפוש
    חוקי הפורום

    #dateTimePicker - C

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

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

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

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

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

      אשמח לעזרתכם

      dovid תגובה 1 תגובה אחרונה תגובה ציטוט 0
      • dovid
        dovid ניהול @mekev נערך לאחרונה על ידי dovid

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

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

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

        M תגובה 1 תגובה אחרונה תגובה ציטוט 2
        • M
          mekev @dovid נערך לאחרונה על ידי

          @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();
          
          dovid תגובה 1 תגובה אחרונה תגובה ציטוט 0
          • dovid
            dovid ניהול @mekev נערך לאחרונה על ידי

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

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

            M תגובה 1 תגובה אחרונה תגובה ציטוט 0
            • M
              mekev @dovid נערך לאחרונה על ידי

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

              dovid תגובה 1 תגובה אחרונה תגובה ציטוט 0
              • dovid
                dovid ניהול @mekev נערך לאחרונה על ידי

                @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 נערך לאחרונה על ידי

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

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

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

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

                  yossiz י 2 תגובות תגובה אחרונה תגובה ציטוט 1
                  • yossiz
                    yossiz @יהושע נערך לאחרונה על ידי

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

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

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

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

                    י תגובה 1 תגובה אחרונה תגובה ציטוט 2
                    • י
                      יהושע @yossiz נערך לאחרונה על ידי

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

                      תגובה 1 תגובה אחרונה תגובה ציטוט 1
                      • י
                        יהושע @יהושע נערך לאחרונה על ידי יהושע

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

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

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

                        dovid תגובה 1 תגובה אחרונה תגובה ציטוט 1
                        • dovid
                          dovid ניהול @יהושע נערך לאחרונה על ידי dovid

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

                          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
                          • הועבר מ תכנות ע"י  dovid dovid 
                          • 1 / 1
                          • פוסט ראשון
                            פוסט אחרון
                          בא תתחבר לדף היומי!