-
@odeddvir אמר בהתייעצות | בניית מסד נתונים לתכנת "הדרן עלך" | אקסל:
אפשרי לבנות רק את בסיס הנתונים באקסס, ולקשר את האקסל אליו.
והאמת שבשביל פרוייקט כזה, בסדר גודל קטן יחסית - יתכן וזו סתם מעמסה מיותרת. בפרט שבאקסל יש כיום את היכולת ליצור שאילתות מורכבות על ידי PowerQuery.
אפשר באותה המידה להשאר לגמרי באקסל, ולהפריד לשני אקסלים, אחד לנתונים ואחד לתצוגה.בכל אלו יש בכדי לפתור את בעיות 1, 2, ו-4?
אם בהמשך זה יגדל בעז"ה גם לשו"ע ועוד - באמת צריך לשקול להשתמש כאן בבסיס נתונים.
כבר יש מי שבתהליך בניה של "הדרן עלך" לשולחן ערוך
-
@odeddvir אמר בהתייעצות | בניית מסד נתונים לתכנת "הדרן עלך" | אקסל:
המזהה הנ"ל אמור להיות ייחודי, דהיינו לכל עמוד יש מזהה שלו.
מותר שלא יהיה סדר רציף?
(כגון: פרק ב' ממסכת שבת יהיה 202 כאשר המספר הראשון בא לומר את המסכת והמספר השני את הפרק. וכמו כן לגבי הדפים דף ל ממסכת יומא יהיה 703005 מסכת 7 פרק 03 דף 005)
מה המטרה שלי? פשוט אני חושש שנגלה שחסרים דפים...
למשל כעת גיליתי שחסר כאלו בפרק הראשון מסדר זרעים -
@פלורידה אמר בהתייעצות | בניית מסד נתונים לתכנת "הדרן עלך" | אקסל:
(כגון: פרק ב' ממסכת שבת יהיה 202 כאשר המספר הראשון בא לומר את המסכת והמספר השני את הפרק. וכמו כן לגבי הדפים דף ל ממסכת יומא יהיה 703005 מסכת 7 פרק 03 דף 005)
או שאולי עדיף באופן אחר שהמסכתות יהיו מיוצגות במאות אלפים כגון מסכת ברכות 100000 ומסכת נדה 2400000.
הפרקים יהיו מיוצגים באלפים כגון פרק א: 1000 ופרק 24: 24000
והדפים יהיו מיוצגים ביחידות כגון: דף ב. 1 דף קנז: 356.כך שדף סד: שנמצא בפרק עשירי ממסכת נדה יהיה 2410122 כלומר 24000000+10000+122.
בשיטה הזו לא יהיה בכלל מזהים כפולים לא בפרקים ולא במסכתות וכן יקל ההכנה (משום שלדעת את מזהה הדף, צריך לעשות את מספר הדף בפרק+מספר הפרק+מספר המסכת)
ייתכן וזה יחסוך גם בפונקציות בהמשך, כי לפי מאות האלפים כך ברור איזו מסכת מדובר (כמובן אם יהיה לאקסל מודול שמסביר)
-
-
@פלורידה אמר בהתייעצות | בניית מסד נתונים לתכנת "הדרן עלך" | אקסל:
האפס שלפני המליון, חובה?
לא. הוספתי אותו ליתר ביאור.
המשתנה של העמוד, מה הסבירות שהוא יוכל להועיל לנו? (פשוט בשביל למלאות אותו לא ממש מועיל למשוך בידית המילוי, אין לו סדר רציונלי כלשהו כדי שהוא יהיה סידרה, אצטרך לכתוב סידרה בדרך כלשהי של 350 תאים )
אני חושב שהוא יקל על פיענוח מספר הדף, כי לא צריך לחלק את הערך ב-2 וכו'.
אפשר ליצור את הסדרה ממש בקלות יחסית, על ידי עמודות עזר.
עמודה א: מספר הדף - מספר רץ
עמודה ב: מספר עמוד - מתחלף בין 1 ל-2 כל הזמן.
עמודה ג: צירוף של עמודות א+ב. -
@odeddvir אמר בהתייעצות | בניית מסד נתונים לתכנת "הדרן עלך" | אקסל:
@פלורידה זה הכיוון שחשבתי, להקצות מספר תווים קבוע לכל משתנה. הייתי מציין אפילו את העמוד.
ובאופן כללי AABBCCCD
AA מציין את המסכת
BB את הפרק
CC את הדף
D את העמודבהנחה, והתוכנה ניבנית גם בעבור עניינים אחרים, כגון שולחן ערוך וכדו', צריך להוסיף גם מזהה בטווח המיליארד?
או שכבר יהיה עדיף לבנות פונקציה מתאימה לכל נושא?
-
@odeddvir אמר בהתייעצות | בניית מסד נתונים לתכנת "הדרן עלך" | אקסל:
@פלורידה זה הכיוון שחשבתי, להקצות מספר תווים קבוע לכל משתנה. הייתי מציין אפילו את העמוד.
ובאופן כלליAABBCCCD
AA
מציין את המסכת
BB
את הפרק
CC
את הדף
D
את העמוד
לדוגמא:
01010022 מציין את מסכת ברכות, פרק א, דף ב עמוד בהכנתי דבר שכזה.
abbccddde
חילקתי את זה לפי סדרי משנה (ערך המאה מליון)
המסכתות קיבלו את ערך המליון, לפי מיקומם בסדר המשנה. (לכן יש מקומות שיש דילוג כי ישנם מסכתות שאין עליהם בבלי,)
הדפים קיבלו ערך העשרות החל ב21
לדף ב. (משום נוחות, לדוג'נא:=512
)אשמח אם תראה אם נעשה כדת.
הגליון של הטבלאות המדוברות נמצאים ב
מק"ט
.
הכנה
הוא הגליון שדרכו הכנתי את זה. -
@פלורידה נראה לי מצויין, בפרט שקל לפענח באיזה דף ועמוד מדובר בלי נוסחא \ טבלת עזר.
המסכתות קיבלו את ערך המליון, לפי מיקומם בסדר המשנה. (לכן יש מקומות שיש דילוג כי ישנם מסכתות שאין עליהם בבלי,)
כמדומני שיש שיטות שונות בסדר המסכתות, רק שים לב שאתה נצמד בהתמדה לשיטה קבועה (למקרה שבעז"ה תצא גירסת "הדרן עלך" לשינון משניות בלבד)
-
@odeddvir אמר בהתייעצות | בניית מסד נתונים לתכנת "הדרן עלך" | אקסל:
כמדומני שיש שיטות שונות בסדר המסכתות.
לדעתי ההבדל בין השיטות, שבתלמוד בבלי יש סדר שונה מסדר המשניות.
וכן בתלמוד בבלי, בדף היומי יש שינוי מסדר המסכתות המקובל, (מטעמים של מועדי השנה)שוב מצאתי:
https://tora-forum.co.il/viewtopic.php?t=18817
https://tora-forum.co.il/viewtopic.php?style=8&t=19193רק שים לב שאתה נצמד בהתמדה לשיטה קבועה (למקרה שבעז"ה תצא גירסת "הדרן עלך" לשינון משניות בלבד)
נצמדתי לתבנית המופיעה כאן.
-
לגופו של עניין. אשמח לקבל עצה כיצד להמשיך את השלב הבא בפרוייקט
בעיקרון הייתי פותח לכך נושא חדש בסגנון: "אקסל | יצירת ... .... לפי פרמטרים
abbccddde
כיצד, ולמה זה משמש, מעלות וחסרונות". או לחילופין: "הכנסת נתונים למסד לפי פרמטרים של גליון, טבלה, שורה". אבל עדיין לא ממש נכנסתי לראש של המסד -
@פלורידה הכי קל להסביר על ידי דוגמא.
רק בוא נקבע שקוראים למחרוזת הזוabbccddde
מעכשיו בשם: מפתח.
פיענוח המפתח הוא כך:
A
= סדר
BB
= מסכת
CC
= פרק
DDD
= דף
E
= עמודכדי לשמור את נתוני החזרות, אני צריך שהתוכנה תייצר לי טבלת חזרות.
מבנה הטבלה הוא של זוגות:מפתח תאריך מפתח תאריך מפתח תאריך מפתח תאריך זו הטבלה היחידה שאני צריך לגבות \ לשחזר.
בכל הקלקה על תא, אני צריך פונקציה שתייצר את המפתח המתאים לתא, לפי המיקום שבו לחצתי.
לאחר מכן אני בודק אם המפתח כבר קיים בטבלה:- אם כן אני מעדכן את השורה המתאימה בטבלה. את הלוגיקה אתה צריך לקבוע, האם למחוק את השורה, לעדכן תאריך וכו'.
- אם לא, אני מוסיף שורה חדשה עם התאריך הנוכחי.
אין לי כעת זמן להמשיך, אבל זו ההתחלה.
-
אני רואה שיש דבר נוסף בבסיס של הרעיון שלך שטרם קלטתי, ייתכן שהוא ישפיע על אופן היצירה.
כיצד על פי המסד, התכנה תדע כמה עמודות סימון יהיה לכל שורה? לדוג', אם למדתי את דף ב' במסכת ברכות 6 פעמים, אזי צריך שהתכנה תציג לי 7 עמודות בפרק ראשון מסכת ברכות, שש מהם מסומנות והשביעית מוכנה לסימון.
-
@פלורידה אין שום בעיה לדעת כמה פעמים מופיע דף מסויים בטבלת החזרות, סופרים את מספר השורות שבהם המפתח לדף פלוני מופיע. אפשר על ידי CountIf פשוט, או שאפשר להתקדם לטבלאות ציר, ואם בא לך לצלול פנימה, אפשר ליצור שאילתות קיבוץ ב-PowerQuery...
השאלה איך לעצב את ממשק המשתמש לפי זה, כגון:
- להציג עוד ועוד עמודות לפרק מסויים, כמו השיטה הקיימת. כאן צריך לברר את המספר המקסימלי של חזרות לפי פרק, וליצור טבלה עם מספר העמודות המתאים, כפי שציינת.
- אולי להציג תיבה עם מספר החזרות שבוצעו, עם כפתור + להוספת חזרה, ובריחוף תציג את פירוט התאריכים של החזרות, וכו'
כל העניין של התצוגה למשתמש הוא דבר שדורש מחשבה ותכנון מצדך, והוא קצת חורג מהנושא של עיצוב בסיס הנתונים, למרות שבמערכת טובה אמור להיות קשר בין התכנון של ה-db לתכנון של ממשק המשתמש.
-
כעת שהבנתי את העיקרון, אני מבין שלא יהיה נצרך כל כך הרבה גליונות בכל זמן נתון (מה שלדעתי יחסוך הרבה משאבים), אלא בניית הגיליון תוכל להתבצע על בחירת המסכת (בהקלקה, או בהקלדה וכדו')
אם נפעל כך המפתח צריך להיות לפי פרמטרים שיופיעו בגוף הגליון עצמו שנוצר בשעת הבניה.
כלומר צריך להגדיר קודם איך ייבנה הממשק ועל פי זה להגדיר את הפרמטרים שיקבעו את המפתח.
למשל: יהיה גליון מוכן של המבנה הבסיסי של התוכנה כפי שמופיע בתמונה, ובעת לחיצה על שם מסכת מסויים, יוצר גיליון (זמני) שאליו מועתקים המבנה הבסיסי, ויצירה של טבלאות לפי הצורך עם שמות טבלה וכדו'. והפרמטרים יהיו שמות הטבלה, וכדו'.
-
@פלורידה יפה מאוד, גם אני חשבתי על בנייה דינמית של גליון לפי הצורך.
רק לדייק את העניין.
את מבנה הגליון הבסיסי אתה יוצר על סמך שני גורמים:- החלק בטבלת המק"ט (שהבאת בעבר) שנוגע למסכת שנבחרה, כלומר על סמך רשימת כל הפרקים במסכת נתונה.
- החלק בטבלת החזרות שנוגע למסכת שנבחרה, כלומר רשימת כל החזרות שנעשו במסכת הזו.
אפשר בהחלט ליצור גליון תבנית ולערוך אותו לפי הצורך.
זה מסתמא גם יפתור את הבעיה של טעינה איטית של החוברת, אבל יתכן מאוד שיאט את הטעינה של מסכת מסויימת. אפשר לעשות פשרה, כך שגליון למסכת מסויימת שכבר נוצר - יישמר ולא יימחק. -
@odeddvir אמר בהתייעצות | בניית מסד נתונים לתכנת "הדרן עלך" | אקסל:
גם אני חשבתי על בנייה דינמית של גליון לפי הצורך
לא יותר מהר (ופשוט) יהיה להכין קובץ עזר של גליונות מוכנים עם טבלטות, ולשלוף משם את הגליון הנצרך? כמובן בצירוף הפשרה שבסוף הפוסט... (או אולי עדיף קבצי עזר רבים...)