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

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

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

התייעצות | בניית מסד נתונים לתכנת "הדרן עלך" | אקסל

מתוזמן נעוץ נעול הועבר תכנות
74 פוסטים 4 כותבים 3.3k צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • OdedDvirO מנותק
    OdedDvirO מנותק
    OdedDvir
    השיב לפלורידה ב נערך לאחרונה על ידי OdedDvir
    #32

    @פלורידה אמר בהתייעצות | בניית מסד נתונים לתכנת "הדרן עלך" | אקסל:

    האפס שלפני המליון, חובה?

    לא. הוספתי אותו ליתר ביאור.

    המשתנה של העמוד, מה הסבירות שהוא יוכל להועיל לנו? (פשוט בשביל למלאות אותו לא ממש מועיל למשוך בידית המילוי, אין לו סדר רציונלי כלשהו כדי שהוא יהיה סידרה, אצטרך לכתוב סידרה בדרך כלשהי של 350 תאים )

    אני חושב שהוא יקל על פיענוח מספר הדף, כי לא צריך לחלק את הערך ב-2 וכו'.

    אפשר ליצור את הסדרה ממש בקלות יחסית, על ידי עמודות עזר.
    עמודה א: מספר הדף - מספר רץ
    עמודה ב: מספר עמוד - מתחלף בין 1 ל-2 כל הזמן.
    עמודה ג: צירוף של עמודות א+ב.

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

      @odeddvir אמר בהתייעצות | בניית מסד נתונים לתכנת "הדרן עלך" | אקסל:

      @פלורידה זה הכיוון שחשבתי, להקצות מספר תווים קבוע לכל משתנה. הייתי מציין אפילו את העמוד.
      ובאופן כללי AABBCCCD
      AA מציין את המסכת
      BB את הפרק
      CC את הדף
      D את העמוד

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

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

      OdedDvirO תגובה 1 תגובה אחרונה
      0
      • OdedDvirO מנותק
        OdedDvirO מנותק
        OdedDvir
        השיב לפלורידה ב נערך לאחרונה על ידי
        #34

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

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

          @odeddvir אמר בהתייעצות | בניית מסד נתונים לתכנת "הדרן עלך" | אקסל:

          @פלורידה זה הכיוון שחשבתי, להקצות מספר תווים קבוע לכל משתנה. הייתי מציין אפילו את העמוד.
          ובאופן כללי AABBCCCD
          AA מציין את המסכת
          BB את הפרק
          CC את הדף
          D את העמוד
          לדוגמא:
          01010022 מציין את מסכת ברכות, פרק א, דף ב עמוד ב

          הכנתי דבר שכזה.
          abbccddde
          חילקתי את זה לפי סדרי משנה (ערך המאה מליון)
          המסכתות קיבלו את ערך המליון, לפי מיקומם בסדר המשנה. (לכן יש מקומות שיש דילוג כי ישנם מסכתות שאין עליהם בבלי,)
          הדפים קיבלו ערך העשרות החל ב21 לדף ב. (משום נוחות, לדוג' נא:=512)

          אשמח אם תראה אם נעשה כדת.

          מספרי קטגוריה.xlsm

          הגליון של הטבלאות המדוברות נמצאים במק"ט.
          הכנה הוא הגליון שדרכו הכנתי את זה.

          OdedDvirO תגובה 1 תגובה אחרונה
          0
          • OdedDvirO מנותק
            OdedDvirO מנותק
            OdedDvir
            השיב לפלורידה ב נערך לאחרונה על ידי OdedDvir
            #36

            @פלורידה נראה לי מצויין, בפרט שקל לפענח באיזה דף ועמוד מדובר בלי נוסחא \ טבלת עזר.

            המסכתות קיבלו את ערך המליון, לפי מיקומם בסדר המשנה. (לכן יש מקומות שיש דילוג כי ישנם מסכתות שאין עליהם בבלי,)

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

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

              @odeddvir אמר בהתייעצות | בניית מסד נתונים לתכנת "הדרן עלך" | אקסל:

              כמדומני שיש שיטות שונות בסדר המסכתות.

              לדעתי ההבדל בין השיטות, שבתלמוד בבלי יש סדר שונה מסדר המשניות.
              וכן בתלמוד בבלי, בדף היומי יש שינוי מסדר המסכתות המקובל, (מטעמים של מועדי השנה)

              שוב מצאתי:
              https://tora-forum.co.il/viewtopic.php?t=18817
              https://tora-forum.co.il/viewtopic.php?style=8&t=19193

              רק שים לב שאתה נצמד בהתמדה לשיטה קבועה (למקרה שבעז"ה תצא גירסת "הדרן עלך" לשינון משניות בלבד)

              נצמדתי לתבנית המופיעה כאן.

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

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

                בעיקרון הייתי פותח לכך נושא חדש בסגנון: "אקסל | יצירת ... .... לפי פרמטרים abbccddde כיצד, ולמה זה משמש, מעלות וחסרונות". או לחילופין: "הכנסת נתונים למסד לפי פרמטרים של גליון, טבלה, שורה". אבל עדיין לא ממש נכנסתי לראש של המסד

                OdedDvirO תגובה 1 תגובה אחרונה
                0
                • OdedDvirO מנותק
                  OdedDvirO מנותק
                  OdedDvir
                  השיב לפלורידה ב נערך לאחרונה על ידי
                  #39

                  @פלורידה הכי קל להסביר על ידי דוגמא.
                  רק בוא נקבע שקוראים למחרוזת הזו abbccddde מעכשיו בשם: מפתח.
                  פיענוח המפתח הוא כך:
                  A = סדר
                  BB = מסכת
                  CC = פרק
                  DDD = דף
                  E = עמוד

                  כדי לשמור את נתוני החזרות, אני צריך שהתוכנה תייצר לי טבלת חזרות.
                  מבנה הטבלה הוא של זוגות:

                  מפתח תאריך
                  מפתח תאריך
                  מפתח תאריך
                  מפתח תאריך

                  זו הטבלה היחידה שאני צריך לגבות \ לשחזר.

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

                  1. אם כן אני מעדכן את השורה המתאימה בטבלה. את הלוגיקה אתה צריך לקבוע, האם למחוק את השורה, לעדכן תאריך וכו'.
                  2. אם לא, אני מוסיף שורה חדשה עם התאריך הנוכחי.

                  אין לי כעת זמן להמשיך, אבל זו ההתחלה.

                  פ 2 תגובות תגובה אחרונה
                  2
                  • פ מנותק
                    פ מנותק
                    פלורידה
                    השיב לOdedDvir ב נערך לאחרונה על ידי
                    #40

                    @odeddvir

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

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

                    OdedDvirO תגובה 1 תגובה אחרונה
                    0
                    • OdedDvirO מנותק
                      OdedDvirO מנותק
                      OdedDvir
                      השיב לפלורידה ב נערך לאחרונה על ידי
                      #41

                      @פלורידה אין שום בעיה לדעת כמה פעמים מופיע דף מסויים בטבלת החזרות, סופרים את מספר השורות שבהם המפתח לדף פלוני מופיע. אפשר על ידי CountIf פשוט, או שאפשר להתקדם לטבלאות ציר, ואם בא לך לצלול פנימה, אפשר ליצור שאילתות קיבוץ ב-PowerQuery...

                      השאלה איך לעצב את ממשק המשתמש לפי זה, כגון:

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

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

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

                        @odeddvir

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

                        אם נפעל כך המפתח צריך להיות לפי פרמטרים שיופיעו בגוף הגליון עצמו שנוצר בשעת הבניה.

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

                        למשל: יהיה גליון מוכן של המבנה הבסיסי של התוכנה כפי שמופיע בתמונה, ובעת לחיצה על שם מסכת מסויים, יוצר גיליון (זמני) שאליו מועתקים המבנה הבסיסי, ויצירה של טבלאות לפי הצורך עם שמות טבלה וכדו'. והפרמטרים יהיו שמות הטבלה, וכדו'.
                        7a86804e-42e1-4cb1-bf90-683d94dd44b8-תמונה.png

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

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

                          1. החלק בטבלת המק"ט (שהבאת בעבר) שנוגע למסכת שנבחרה, כלומר על סמך רשימת כל הפרקים במסכת נתונה.
                          2. החלק בטבלת החזרות שנוגע למסכת שנבחרה, כלומר רשימת כל החזרות שנעשו במסכת הזו.

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

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

                            @odeddvir אמר בהתייעצות | בניית מסד נתונים לתכנת "הדרן עלך" | אקסל:

                            גם אני חשבתי על בנייה דינמית של גליון לפי הצורך

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

                            OdedDvirO תגובה 1 תגובה אחרונה
                            0
                            • OdedDvirO מנותק
                              OdedDvirO מנותק
                              OdedDvir
                              השיב לפלורידה ב נערך לאחרונה על ידי OdedDvir
                              #45

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

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

                                @odeddvir אמר בהתייעצות | בניית מסד נתונים לתכנת "הדרן עלך" | אקסל:

                                (יתכן מאד וזו הנאה מפוקפקת עבורך...)

                                חסר לי יותר מידי ידע בשביל לממש הנאה זו בלי פקפוקים :smile:

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

                                  @odeddvir אמר בהתייעצות | בניית מסד נתונים לתכנת "הדרן עלך" | אקסל:

                                  הכי קל להסביר על ידי דוגמא.
                                  רק בוא נקבע שקוראים למחרוזת הזו abbccddde מעכשיו בשם: מפתח.
                                  פיענוח המפתח הוא כך:
                                  A = סדר
                                  BB = מסכת
                                  CC = פרק
                                  DDD = דף
                                  E = עמוד

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

                                  OdedDvirO תגובה 1 תגובה אחרונה
                                  0
                                  • OdedDvirO מנותק
                                    OdedDvirO מנותק
                                    OdedDvir
                                    השיב לפלורידה ב נערך לאחרונה על ידי OdedDvir
                                    #48

                                    @פלורידה אמר בהתייעצות | בניית מסד נתונים לתכנת "הדרן עלך" | אקסל:

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

                                    אני מפנה אותך לעצמך...
                                    כבר יצרת רשימת מפתחות עבור כל הש"ס, וצירפת אותה לעיל:

                                    מספרי קטגוריה.xlsm

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

                                      @odeddvir 🙂

                                      אני רואה שאני ממש שאינו יודע לשאול.

                                      אז אנסה כך:

                                      האם הצורה הנכונה הוא לתת לו רשימה של שלושים ותשעה תנאים כמניין המסכתות, שאם תנאי ברכות מתקיים, הוא יעשה בחר לאיזור במפתח ששם נמצא המידע על המסכת ברכות , ואז "חיפוש" הדף באיזור הזה, ואז לבדוק מה המפתח שלו?

                                      עריכה: אולי יותר נכון לשאול כך:
                                      האם יש אפשרות ליצור פונקצייה באקסל שלפי:

                                      1. גליון
                                      2. שם הדף בעמודה הראשונה בטבלה

                                      הוא יידע איך מאיזה תא לשלוף את המפתח?

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

                                      OdedDvirO תגובה 1 תגובה אחרונה
                                      0
                                      • OdedDvirO מנותק
                                        OdedDvirO מנותק
                                        OdedDvir
                                        השיב לפלורידה ב נערך לאחרונה על ידי OdedDvir
                                        #50

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

                                        שימוש:
                                        כשהמשתמש ילחץ על משבצת כלשהיא, נדע לאיזה דף הוא התכוון, וכך נוכל לעדכן את הערך המתאים בטבלת החזרות.

                                        2. המרת מחרוזת מפתח למיקום בגליון
                                        בהנתן מפתח כלשהו, הפונקציה תתרגם את מחרוזת המפתח למיקום המתאים בגליון המתאים.

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

                                        עריכה:
                                        המימוש בפועל של הפונקציות (כלומר כתיבת הקוד עבורן) תלוי מאוד בשיטת העיצוב של הגליון.

                                        דוגמא למימוש הפונקציה השניה:

                                        חישוב מספר המסכת:

                                        חיפוש של שם הגליון בטבלת המסכתות.

                                        חישוב מספר הדף:

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

                                        חישוב מספר הפרק:

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

                                        חישוב מספר החזרה:

                                        נגזר מחישוב מספר הפרק + חישוב היסט העמודות שמאלה.

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

                                          אני עומד לפני סיום השלב הראשון בס"ד

                                          יצרתי טבלה שבכותרות ישנם ברכות, שבת, וכו' ובעמודה הראשונה, ב., ב:, ג., וכו'.

                                          f2cf9da4-6a1b-4ca4-abae-ad32ff9a8802-image.png

                                          הצורה לשלוף את המפתח היא על ידי index + matsh.

                                          הדרך לקבל את המידע היא לפי נתוני המסכת, והדף בטבלה שמקבלת את הדבל קליק, היא על ידי VLookUp עם הסיט שלילי.

                                          כל הקוד יחד:

                                          Public Function m_kata(wordText As String) As Variant
                                          masecet = ActiveSheet.Range("A6")
                                          ActiveColumn = ActiveCell.Column - ActiveCell.ListObject.DataBodyRange.Column + 1
                                          tanivchar = Selection
                                          ActiveTable = ActiveCell.ListObject
                                          amuda1 = ActiveSheet.ListObjects(ActiveTable).ListColumns(1).DataBodyRange
                                          amudanivchar = ActiveSheet.ListObjects(ActiveTable).ListColumns(ActiveColumn).DataBodyRange
                                          
                                          daf = Application.VLookup(tanivchar, Application.Choose(Array(1, 2), amudanivchar, amuda1), 2, 0)
                                          
                                          m_kata = Application.Index(Sheets("מקט").Range("T6:BF356"), Application.Match(daf, Sheets("מקט").Range("S6: S356"), 0), Application.Match(masecet, Sheets("מקט").Range("T6:BF6"), 0))
                                          
                                          End Function
                                          

                                          כעת נותר להחליט, האם כדאי ליצור את המסד בחוברת עבודה נפרדת, או באותה חוברת עבודה.

                                          @odeddvir אמר בהתייעצות | בניית מסד נתונים לתכנת "הדרן עלך" | אקסל:

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

                                          אני אישית יותר מתחבר למסד נתונים נפרד. השאלה האם ניתן להשתמש בחוברת עבודה נפרדת לגמרי והיא לא תקפוץ בכל הפעלה של החוברת של התצוגה.

                                          כמו כן אשמח לשמוע על החסרונות של השיטה הזאת (אם יש...)

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

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

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

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