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

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

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

WPF הצגת נתונים מ SDF

מתוזמן נעוץ נעול הועבר ארכיון code613m
12 פוסטים 3 כותבים 705 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • רחמיםר מנותק
    רחמיםר מנותק
    רחמים מורחק
    כתב ב נערך לאחרונה על ידי
    #1

    יש כאן דוגמא למסד SDF שהנתונים שלו מוצגים בדטה-גריד ויש גם אפשרות להוסיף נתונים ולעדכן.
    האם זו הצורה הכי נכונה והכי פשוטה וקצרה לנהל את הנתונים בין הממשק למסד מסוג SDF ?
    אולי יש למישהו דוגמא יותר טובה? כי זה נראה לי כל כך לא גנארי, וגם אין שם הדגמה לשאילתות ולא לקשרי גומלין.

    פורסם במקור בפורום CODE613 ב08/01/2014 09:01 (+02:00)

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

      יש הרבה גישות לעבודה עם מסד בדוט נט.
      כל הגישות משתמשות בADO.NET שזו הטכנלוגיה לגישה לנתונים בדוט נט - לא משנה מה סוג המסד (MSSQL, MySql, ORACLE, ACCESS, SqlLite ועוד הרבה).

      הדרכים הם כאלה:

      1. DataAdapters + DataSet\TypedDataSet
      2. DataAdapters + טיפול "ידני" בנתונים (זה מה שיש שם בקישור).
      3. LinqToSql* מוכר גם בקיצור LTS.
      4. Entity Framework* מוכר מאוד כEF.

      3 ו4 שמתי כוכבית, כי הם לא זמינים לכל מסד, כי צריך לממש אותם לכל אחד (כמו רוב הקומפוננטות בADO.NET, המימוש נעשה בידי חברת המסד או מישהו אחר), מיקרוסופט מימשו לMSSQL בלבד, צדדים שלישיים שונים מימשו לאחרים כמו SqlLite.
      לאקסס (משום מה :)) אף אחד לא מימש אותם.
      3 ו4 מתייחדים בכך שהם מאוד עיליים, אין בכלל גישה מפורשת בקוד לנתונים! כמו"כ הם מאפשרים להתחיל את המערכת בצד המודל או הקוד, וממנו ליצור את מבנה הDB ולא להיפך כמסורת שהייתה.

      דרך נכונה ופשוטה, אולי יש. גנרי, אם הכוונה שהתוכנה תידע להתנהג יפה עם מסד שנולד אחריה, זה תלוי בך...
      מה נכון ופשוט? אז 3,4 מחייבים את האפליקציה להכיר את המסד בזמן עיצוב. וזה ממש לא גנרי.
      1 (למעט TypedDataSet) ו2 יכולים לתת לך את מה שאתה רוצה.

      הכרת הADO.NET:

      המחלקות העיקריות, חלקם אבסטרקטיים (לכל מחלקה יש יורשים ייעודיים לכל מסד)

      DbConnection = אבסטרקטי. מחלקת חיבור, קישור לשרת/קובץ המתאים עם פרמטרי התחברות נדרשים ואופציונליים. מחרוזת החיבור היא סטרינג, ויש פקודת פתיחה וסגירה של ההתקשרות. כוללת פקודה בשם GetSchema, שנותנת כל מה שניתן לדעת על המסד (טבלאות שאילתות וכו').
      DbCommand = אבסטרקטי. מחלקת פקודה, מאפשרת לשלוח למסד פקודה (כמו SELECT וכו'). זה כולל פקודה שאינה שאילתה, או פקודת שאילתה שמחזירה ערך בודד או ערכים רבים שנקראים ע"י אובייקט Reader שיבוא בסמוך.
      DbDataReader = אבסטרקטי. מחלקה שקוראת שורות מתוצאות פקודה שהורצה לשרת. הקריאה מבוצעת ע"י פקודה שמחזירה מערך אובייקטים עבור שורה בודדת. הפקודה מחזירה ערך הוליאני חיובי במקרה והגיעה שורה (לא נגמרה הרשימה).
      DataAdapter = (לא אבסטרקטי ממש, אבל כמעט... כי בכל מסד משתמשים בייעודי לצורך התאמה וביצועים משופרים) מחלקה שמתווכת בין כל האובייקטים הנ"ל לבין האובייקט DataSet שיובא בסמוך. תיווך זה חוסך לולאות וכדומה (וזה חיסכון ענק ונוח), לא מעבר לכך.
      DataSet = מחלקה שמייצגת אוסף טבלאות שכולן ב"אויר". הנתונים בטבלה חיים למעשה בזיכרון החי. המחלקה דומה למסד עם אוסף טבלאות - (מחלקת DataTable מחלקה זו נראית ממש כמו טבלה: יש לה עמודות (מחלקת DataColumn), שורות (מחלקת DataRow) אילוצים וקשרים ועוד), קשרים בין טבלאות, ובעיקר היא (וגם הDataTable בזכות עצמה) "כפפה ליד" לDataAdapter האמור לעיל, ולכן היא פועלת איתו בצורה ממש מקילה, היא זוכרת איזו שורה הייתה במקור, איזה שונתה, איזו התווספה, וע"י זה הDataAdapter יודע איזו פקודה להפעיל אם בכלל לכל שורה.
      DbCommandBuilder = אבסטרקטי. מחלקה שיוצרת על פי סכמת טבלה את כל הCommand של פעולות CRUD (ר"ת Create, read, update and delete). צריך לשאוב ממנה אחת אחת מהללו, והיא עושה זאת יפה מאוד כל עוד העסק לא מורכב.

      יש עוד אובייקטים, אבל התייחסתי לעיקריים.

      שלושת האובייקטים האחרונים הם מן של גישה עילית לנתונים, בשביל לחסוך שורות קוד חוזרות בכל מסד.
      איתם אתה יכול לבנות מחלקות גנריות לכל מסד שמומשו עבורו המחלקות הדרושות.
      טכנלוגיות הLTS והEF משתמשות מאחורי הקלעים בשלוש הראשונות.

      פורסם במקור בפורום CODE613 ב08/01/2014 12:40 (+02:00)

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

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

      תגובה 1 תגובה אחרונה
      3
      • רחמיםר מנותק
        רחמיםר מנותק
        רחמים מורחק
        כתב ב נערך לאחרונה על ידי
        #3

        יישר כח גדול!
        באמת יש לפנינו שולחן מלא כל טוב רק לקחת ולאכול ... 🙂

        מה שלא מצא חן בעיני בדוגמא שהבאתי לה קישור לעיל הוא שכל השאילתות עדכון מחיקה וכו' נעשים ע''י הקלדה של השאילתא כמחרוזת וזה מצע טוב להתרבות באגים, זו הדרך היחידה או שיש אפשרות ששמות הטבלאות והעמודות ומילות שפת הSQL יבואו בהשלמה אוטומטית ?
        חוץ מזה אם אני לא טועה עדיף בכלל שמחרוזת השאילתא תיבנה באופן גנארי עם איזו פונקציה שתעשה את זה ותקבל בפרמטר רק באיזה טבלה מדובר והפונקציה לבד כבר תמצא את שמות השדות הקיימים בכל רשומה, אלא אם כן יש איזו שאילתא מיוחדת, אבל אם רוצים לעדכן שורה ע''פ המזהה או למחוק ע''פ מזהה זה יכול להיות גנארי כנ''ל.

        פורסם במקור בפורום CODE613 ב08/01/2014 13:04 (+02:00)

        תגובה 1 תגובה אחרונה
        0
        • dovidD מחובר
          dovidD מחובר
          dovid ניהול
          כתב ב נערך לאחרונה על ידי
          #4

          שכחתי דבר חשוב.
          dbCommandBuilder.

          פורסם במקור בפורום CODE613 ב08/01/2014 18:24 (+02:00)

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

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

          תגובה 1 תגובה אחרונה
          1
          • רחמיםר מנותק
            רחמיםר מנותק
            רחמים מורחק
            כתב ב נערך לאחרונה על ידי
            #5

            יפה, אז גם את זה כבר יש מוכן 🙂
            ומה לגבי קשרי גומלין, זה יכול להיות מובנה בתוך המסד או רק בתוך הדטה-סט, והאם אפשר להציג את הרשימה מהטבלה המקושרת בתוך עמודת קומבו בלא להזדקק ל EF ?

            פורסם במקור בפורום CODE613 ב08/01/2014 22:00 (+02:00)

            תגובה 1 תגובה אחרונה
            0
            • clickoneC מנותק
              clickoneC מנותק
              clickone
              כתב ב נערך לאחרונה על ידי
              #6

              פירגון ענק לדוד ל.ט. על פירוט הדרכים.
              לצערי יש המון חוסר בהירות (גם מצד מייקרוסופט בעצמה) לגבי הDataSet, ודוד ממש הצליח למצות בכמה משפטים דברים שלקח לי המון זמן להבין לבד בצירף בית ההוראה של הרב גוגל :lol: :lol: .
              עדיין לא כ"כ מובן למה מייקרוסופט בחרו לפצל את הDataSet ל 3 אובייקטים שונים, (אני מדבר על המרכזיים, ולא על המימוש מאחורה), ולא להשתמש באובייקט אחד כמו בASPX (אני לא מדבר על LTS, אלא אפילו על אובייקט המקשר ישירות לSQL SERVER ואפילו לאקסס. 😢 :lol:

              פורסם במקור בפורום CODE613 ב08/01/2014 23:07 (+02:00)

              אין טסט כמו פרודקשן.

              המייל שלי urivpn@gmail.com

              תגובה 1 תגובה אחרונה
              3
              • רחמיםר מנותק
                רחמיםר מנותק
                רחמים מורחק
                כתב ב נערך לאחרונה על ידי
                #7

                אגב ראיתי דבר מאוד יפה שמאוד מקל על יצירת פקדים להצגת הנתונים וזה ממש כמו באקסס אפשר לגרור את הטבלה מתוך ה Data Sources window ולשחרר ב WPF Designer והוא כבר יצור לבד דטה-גריד או פקדים מסודרים יעויין כאן.

                פורסם במקור בפורום CODE613 ב08/01/2014 23:38 (+02:00)

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

                  @רחמים

                  אגב ראיתי דבר מאוד יפה שמאוד מקל על יצירת פקדים להצגת הנתונים וזה ממש כמו באקסס אפשר לגרור את הטבלה מתוך ה Data Sources window ולשחרר ב WPF Designer והוא כבר יצור לבד דטה-גריד או פקדים מסודרים יעויין כאן.

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

                  פורסם במקור בפורום CODE613 ב09/01/2014 17:29 (+02:00)

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

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

                  תגובה 1 תגובה אחרונה
                  0
                  • dovidD מחובר
                    dovidD מחובר
                    dovid ניהול
                    כתב ב נערך לאחרונה על ידי
                    #9

                    @ClickOne

                    עדיין לא כ"כ מובן למה מייקרוסופט בחרו לפצל את הDataSet ל 3 אובייקטים שונים, (אני מדבר על המרכזיים, ולא על המימוש מאחורה), ולא להשתמש באובייקט אחד כמו בASPX (אני לא מדבר על LTS, אלא אפילו על אובייקט המקשר ישירות לSQL SERVER ואפילו לאקסס. 😢 :lol:

                    שוב אתה עם ההבדל...
                    אבל יש הרבה כלים שכוללים את כל הכלים הללו ותת הכלים שבתוכם בצורה מאוד שקופה למתכנת. טוב? תלוי למי..

                    פורסם במקור בפורום CODE613 ב09/01/2014 17:31 (+02:00)

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

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

                    תגובה 1 תגובה אחרונה
                    0
                    • dovidD מחובר
                      dovidD מחובר
                      dovid ניהול
                      כתב ב נערך לאחרונה על ידי
                      #10

                      @רחמים

                      יפה, אז גם את זה כבר יש מוכן 🙂
                      ומה לגבי קשרי גומלין, זה יכול להיות מובנה בתוך המסד או רק בתוך הדטה-סט, והאם אפשר להציג את הרשימה מהטבלה המקושרת בתוך עמודת קומבו בלא להזדקק ל EF ?

                      התשובה חיובית על הכל.

                      פורסם במקור בפורום CODE613 ב09/01/2014 17:32 (+02:00)

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

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

                      תגובה 1 תגובה אחרונה
                      0
                      • רחמיםר מנותק
                        רחמיםר מנותק
                        רחמים מורחק
                        כתב ב נערך לאחרונה על ידי
                        #11

                        @דוד ל.ט.

                        @רחמים
                        אגב ראיתי דבר מאוד יפה שמאוד מקל על יצירת פקדים להצגת הנתונים וזה ממש כמו באקסס אפשר לגרור את הטבלה מתוך ה Data Sources window ולשחרר ב WPF Designer והוא כבר יצור לבד דטה-גריד או פקדים מסודרים יעויין כאן.

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

                        אז איך אתה מעצב טופס?
                        יש כל כך הרבה שדות בכל טבלה ולכל שדה צריך שני פקדים אחד טקסטבלוק כדי להציג את שם השדה ועוד פקד להזנת ערך השדה, חלק מהשדות זה תאריך וחלק תיבת סימון וכו' ולכל אחד להגדיר את בינדינג שלו וכו', וגם דטה-גריד לעשות כל כך הרבה עמודות
                        למה אתה לא משתמש בזה?

                        פורסם במקור בפורום CODE613 ב09/01/2014 17:36 (+02:00)

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

                          אני עובד קשה. אני גם לוקח מהלקוח על זה (אין לי לקוחות 🙂 :lol: ).
                          אבל התוצאה בהתאם.
                          זה כמו "עבודת יד" :)....

                          הסיבה למה לא, בגלל שהוא לא מספיק חכם. הוא לא מבין שכבר מילאתי את הDataTable במקום אחר ובכלל אני צריך שיפנה לDT קיים ועוד.
                          אפשר להשתמש ולמחוק את הקשקושים המיותרים אבל התרגלתי מאוד לזוית ראיה שבחלון אחד לא מופיעים יותר מ5 מאפיינים בערך. המשתמש בתוכנה שלי אין לו הרגשה של עריכת שורה. ממילא זה לא עבודה קשה כ"כ. אני עושה זאת במהירות רבה וזה לא שווה עזרה ממוחשבת...

                          פורסם במקור בפורום CODE613 ב09/01/2014 17:45 (+02:00)

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

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

                          תגובה 1 תגובה אחרונה
                          0

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

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

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