אקסס למתחילים: תגובות
-
@odeddvir אמר באקסס למתחילים: יצירת מערכת לניהול תורמים:
הערה: החלק הזה במדריך לכאורה חורג מעט מההדרכה, ומנסה לתאר מצב שאליו אנו עלולים להגיע כמפתחים. הוא נולד כתוצאה משיחה שהיתה לי אמש עם מפתח אחר, עם זאת, אני רואה בו חלק חשוב מהמדריך, וחושב שהתועלת ממנו רבה למפתחים בכלל, לא רק באקסס.
אז אם אתם מחכים רק לפתרון של החלק הקודם, תמחלו לי.
אני מרגיש נוח באכסניה הזו להשתמש לפעמים בסגנון בלוגי משהו...(...)
כל השקלא וטריא הזו מעלה נקודה מאוד חשובה.סוף מעשה במחשבה תחילה
השאלות האלו היו אמורות לצוץ כבר בשלב התכנון.
את ההדרכה פתחתי במשפט מעין: השלב הראשון, והחשוב ביותר ביצירת מערכת הוא התכנון.
אבל לא שמעתי לעצתי, התחלתי מיד ליצור טבלאות, טפסים, שאילתות, וכו' וכו'.
למה?
כי לדעתי זו דרך מצויינת ללמוד. ליגרס איניש והדר ליסבר.
אבל זו דרך גרועה מאוד ליישם למעשה את מה שלמדתי.
באופן אישי, הדחף הראשוני שלי כמתכנת, הוא ישר להתחיל ליצור. אני כבר רוצה לראות את הכל עובד, בלי להיכנס לדקדוקי עניות איך בדיוק כל פיפס ייושם. אבל, אם אני מתפתה לזה, אני מזמין לעצמי צרות.
כי להכניס שינויים במערכת קיימת זה כמעט תמיד הרבה יותר מסובך מאשר לבנות אותה כך מעיקרא.
אמת היא, כי יש גם צד שני למטבע, והוא להיתקע עד אין סוף בשלב התכנון, מבלי להוריד את הרעיון מעולם האצילות לעולם המעשה.
אבל הניסיון מוכיח שהאופציה הראשונה היא הכי גרועה, ושתכנון טוב ואפיון מדוקדק מחזיר את ההשקעה בכפלי כפליים.תשבו ותתכננו עם דף ועפרון:
- מה המטרות של המערכת
- אילו ישויות קיימות בה (תורמים, משפחות, נציגים, מנהלים, וכו' וכו')
- סרטטו על דף סקיצה כללית של המסכים השונים
- מה הפונקציונאליות שתתאפשר למשתמש בכל מסך
כשהכל על הנייר, אין בעיה לשנות, למחוק, ולהתחיל דף חדש בלי נקיפות מצפון.
אם עברתם את השלב הזה, אתם על דרך המלך.
זהו לבינתיים.ולעניין עצם ההדרכה והפתרון, בפוסט הבא (בקרוב בלי נדר) אני אציג פתרון שאפשר ליישם בלי VBA. הוא לא מושלם, אבל נוכל ללמוד ממנו עוד על אקסס, וזו המטרה העיקרית של המדריך הזה.
ממש צודק בכל מילה
וגם צדקת שזה לא קשור רק לאקסס, אבל גם לא רק לתכנות, אלא לכל עולם היצירה, ובעצם לכל דבר בכלל.כבר מהתחלת המדריך אני יושב וחושב, ומנסה לתכנן את המערכת שלי.
את שלבים 1 ו2 (של התכנון) כבר בצעתי
אבל שם אני אוחז, וזה בגלל שאני עוד לא מודע לכל האופציות הקיימות.אבל בכל פרק נוסף אני לומד עוד המון. זה פשוט מדהים איך שאתה מצליח לשלב בין ההתקדמות בפרוייקט הבניה לבין לימוד של חומר חדש.
אני בספק לגבי מה שכתבת בהתחלה שהמדריך לא מתוכנן ואין סילבוס.
יישר כח!
-
@odeddvir אמר באקסס למתחילים: יצירת מערכת לניהול תורמים:
הערה: החלק הזה במדריך לכאורה חורג מעט מההדרכה, ומנסה לתאר מצב שאליו אנו עלולים להגיע כמפתחים. הוא נולד כתוצאה משיחה שהיתה לי אמש עם מפתח אחר, עם זאת, אני רואה בו חלק חשוב מהמדריך, וחושב שהתועלת ממנו רבה למפתחים בכלל, לא רק באקסס.
אז אם אתם מחכים רק לפתרון של החלק הקודם, תמחלו לי.
אני מרגיש נוח באכסניה הזו להשתמש לפעמים בסגנון בלוגי משהו...(...)
כל השקלא וטריא הזו מעלה נקודה מאוד חשובה.סוף מעשה במחשבה תחילה
השאלות האלו היו אמורות לצוץ כבר בשלב התכנון.
את ההדרכה פתחתי במשפט מעין: השלב הראשון, והחשוב ביותר ביצירת מערכת הוא התכנון.
אבל לא שמעתי לעצתי, התחלתי מיד ליצור טבלאות, טפסים, שאילתות, וכו' וכו'.
למה?
כי לדעתי זו דרך מצויינת ללמוד. ליגרס איניש והדר ליסבר.
אבל זו דרך גרועה מאוד ליישם למעשה את מה שלמדתי.
באופן אישי, הדחף הראשוני שלי כמתכנת, הוא ישר להתחיל ליצור. אני כבר רוצה לראות את הכל עובד, בלי להיכנס לדקדוקי עניות איך בדיוק כל פיפס ייושם. אבל, אם אני מתפתה לזה, אני מזמין לעצמי צרות.
כי להכניס שינויים במערכת קיימת זה כמעט תמיד הרבה יותר מסובך מאשר לבנות אותה כך מעיקרא.
אמת היא, כי יש גם צד שני למטבע, והוא להיתקע עד אין סוף בשלב התכנון, מבלי להוריד את הרעיון מעולם האצילות לעולם המעשה.
אבל הניסיון מוכיח שהאופציה הראשונה היא הכי גרועה, ושתכנון טוב ואפיון מדוקדק מחזיר את ההשקעה בכפלי כפליים.תשבו ותתכננו עם דף ועפרון:
- מה המטרות של המערכת
- אילו ישויות קיימות בה (תורמים, משפחות, נציגים, מנהלים, וכו' וכו')
- סרטטו על דף סקיצה כללית של המסכים השונים
- מה הפונקציונאליות שתתאפשר למשתמש בכל מסך
כשהכל על הנייר, אין בעיה לשנות, למחוק, ולהתחיל דף חדש בלי נקיפות מצפון.
אם עברתם את השלב הזה, אתם על דרך המלך.
זהו לבינתיים.ולעניין עצם ההדרכה והפתרון, בפוסט הבא (בקרוב בלי נדר) אני אציג פתרון שאפשר ליישם בלי VBA. הוא לא מושלם, אבל נוכל ללמוד ממנו עוד על אקסס, וזו המטרה העיקרית של המדריך הזה.
ממש צודק בכל מילה
וגם צדקת שזה לא קשור רק לאקסס, אבל גם לא רק לתכנות, אלא לכל עולם היצירה, ובעצם לכל דבר בכלל.כבר מהתחלת המדריך אני יושב וחושב, ומנסה לתכנן את המערכת שלי.
את שלבים 1 ו2 (של התכנון) כבר בצעתי
אבל שם אני אוחז, וזה בגלל שאני עוד לא מודע לכל האופציות הקיימות.אבל בכל פרק נוסף אני לומד עוד המון. זה פשוט מדהים איך שאתה מצליח לשלב בין ההתקדמות בפרוייקט הבניה לבין לימוד של חומר חדש.
אני בספק לגבי מה שכתבת בהתחלה שהמדריך לא מתוכנן ואין סילבוס.
יישר כח!
@בערל אמר באקסס למתחילים: תגובות:
זה פשוט מדהים איך שאתה מצליח לשלב בין ההתקדמות בפרוייקט הבניה לבין לימוד של חומר חדש.
והנה דוגמה חיה לכך, הפרק של היום:
@odeddvir אמר באקסס למתחילים: יצירת מערכת לניהול תורמים:
חלק י"ז: פתרון (חלקי) לבעיית שיוך התרומות
נתחיל דווקא מהבעיה השניה:
האם בכלל אפשר להעביר תרומה ממשפחה אחת לאחרת?
וניישם את הכלל שחשבנו עליו:
כל זמן שהתרומה לא בוצעה בפועל, כלומר שהתורם העביר למערכת את הכסף, אך אנחנו עדיין לא העברנו אותו למשפחה – ייתכן ונרצה לאפשר לשנות את הייעוד. אבל אם התרומה כבר הועברה למשפחה, אסור שתהיה אפשרות לשנות את הייעד.לשם כך אנו צריכים שדה נוסף שמציין את הסטטוס של התרומה.
לאחר מחשבה, החלטתי שאני מעוניין בשלוש אפשרויות לשדה הסטטוס:- זמינה התרומה נכנסה למערכת, אך עדיין לא מיועדת עדיין לשום משפחה. בידינו ליעדה למי שנרצה.
- מיועדת התרומה כבר מיועדת לאחת המשפחות, אך עדיין לא הועברה אליה בפועל. כעת רק מנהל יוכל לשנות את ייעוד התרומה.
- בוצעה התרומה הועברה כבר למשפחה, ואין לשנות בה שום דבר.
(.............
...........)
לסיום
הסרת האפשרות לשינוי הסטטוס על ידי המשתמש היא צעד חשוב. אך עדיין יש עוד מה לעשות:- להריץ את שאילתת העדכון כשהדבר מתבקש, למשל עם סגירת הטופס. (ככל הנראה לא יהיה מנוס משימוש ב-VBA למרות הכל...)
- לאפשר שינוי הסטטוס ל"בוצעה" במקרה שאכן התרומה הועברה למשפחה.
נשאיר זאת לפעם הבאה.
הפתרון פשוט גאוני
ועל הדרך שילבת המון מידע חשוב ומרתק.ממש מדהים.
אגב, למה החשש הגדול להכניס קצת VBA ?
אני לא מתנגד לכך... -
@בערל אמר באקסס למתחילים: תגובות:
זה פשוט מדהים איך שאתה מצליח לשלב בין ההתקדמות בפרוייקט הבניה לבין לימוד של חומר חדש.
והנה דוגמה חיה לכך, הפרק של היום:
@odeddvir אמר באקסס למתחילים: יצירת מערכת לניהול תורמים:
חלק י"ז: פתרון (חלקי) לבעיית שיוך התרומות
נתחיל דווקא מהבעיה השניה:
האם בכלל אפשר להעביר תרומה ממשפחה אחת לאחרת?
וניישם את הכלל שחשבנו עליו:
כל זמן שהתרומה לא בוצעה בפועל, כלומר שהתורם העביר למערכת את הכסף, אך אנחנו עדיין לא העברנו אותו למשפחה – ייתכן ונרצה לאפשר לשנות את הייעוד. אבל אם התרומה כבר הועברה למשפחה, אסור שתהיה אפשרות לשנות את הייעד.לשם כך אנו צריכים שדה נוסף שמציין את הסטטוס של התרומה.
לאחר מחשבה, החלטתי שאני מעוניין בשלוש אפשרויות לשדה הסטטוס:- זמינה התרומה נכנסה למערכת, אך עדיין לא מיועדת עדיין לשום משפחה. בידינו ליעדה למי שנרצה.
- מיועדת התרומה כבר מיועדת לאחת המשפחות, אך עדיין לא הועברה אליה בפועל. כעת רק מנהל יוכל לשנות את ייעוד התרומה.
- בוצעה התרומה הועברה כבר למשפחה, ואין לשנות בה שום דבר.
(.............
...........)
לסיום
הסרת האפשרות לשינוי הסטטוס על ידי המשתמש היא צעד חשוב. אך עדיין יש עוד מה לעשות:- להריץ את שאילתת העדכון כשהדבר מתבקש, למשל עם סגירת הטופס. (ככל הנראה לא יהיה מנוס משימוש ב-VBA למרות הכל...)
- לאפשר שינוי הסטטוס ל"בוצעה" במקרה שאכן התרומה הועברה למשפחה.
נשאיר זאת לפעם הבאה.
הפתרון פשוט גאוני
ועל הדרך שילבת המון מידע חשוב ומרתק.ממש מדהים.
אגב, למה החשש הגדול להכניס קצת VBA ?
אני לא מתנגד לכך...@בערל אמר באקסס למתחילים: תגובות:
אגב, למה החשש הגדול להכניס קצת VBA ?
אני פשוט משתדל להצטמצם לידע בסיסי. VBA זה עולם שלם בפני עצמו.
וככלל, אם אפשר לפתור את הבעיה על ידי שאילתא, זה עדיף מבחינת יעילות ותאימות הלאה, דהיינו, כשנרצה בעז"ה לשדרג את המערכת לבסיס נתונים אחר, או ממשק אחר.
אבל כנראה שנטעם קצת משם, כי אני רואה שנדחקתי לפינה עם בעיית שיוך התרומות, והפתרון של הרצת השאילתה באופן ידני בכל פעם לא מתאים למערכת אמיתית.@בערל אמר:
איך שאתה מצליח לשלב בין ההתקדמות בפרוייקט הבניה לבין לימוד של חומר חדש.
אני בספק לגבי מה שכתבת בהתחלה שהמדריך לא מתוכנן ואין סילבוס.באמת? אני חושב לפעמים שהשילוב הזה הופך את המדריך למבולגן למדי. הוא מלא טעימות מפה ומשם. אבל מנחם את עצמי בעובדה שהתרעתי על כך מראש. מי שלא מרוצה יכול לקבל את התשלום בחזרה...
-
@בערל אמר באקסס למתחילים: תגובות:
אגב, למה החשש הגדול להכניס קצת VBA ?
אני פשוט משתדל להצטמצם לידע בסיסי. VBA זה עולם שלם בפני עצמו.
וככלל, אם אפשר לפתור את הבעיה על ידי שאילתא, זה עדיף מבחינת יעילות ותאימות הלאה, דהיינו, כשנרצה בעז"ה לשדרג את המערכת לבסיס נתונים אחר, או ממשק אחר.
אבל כנראה שנטעם קצת משם, כי אני רואה שנדחקתי לפינה עם בעיית שיוך התרומות, והפתרון של הרצת השאילתה באופן ידני בכל פעם לא מתאים למערכת אמיתית.@בערל אמר:
איך שאתה מצליח לשלב בין ההתקדמות בפרוייקט הבניה לבין לימוד של חומר חדש.
אני בספק לגבי מה שכתבת בהתחלה שהמדריך לא מתוכנן ואין סילבוס.באמת? אני חושב לפעמים שהשילוב הזה הופך את המדריך למבולגן למדי. הוא מלא טעימות מפה ומשם. אבל מנחם את עצמי בעובדה שהתרעתי על כך מראש. מי שלא מרוצה יכול לקבל את התשלום בחזרה...
@odeddvir אמר באקסס למתחילים: תגובות:
אני חושב לפעמים שהשילוב הזה הופך את המדריך למבולגן למדי
מה פתאום?
לא עקבתי אחרי כל מילה של המדריך (כי לא נראה לי שאני הולך להשתמש באקסס) אבל קראתי את הרוב, וזה נראה ממש מסודר. אין לי מושג מאיפה יש לך זמן/כח להשקיע כל כך במדריך כזה. או שזה פשוט יוצא מאיליו?אגב, חשוב להבהיר שחלק גדול מהתוכן שימושי לא רק באקסס אלא בכל מערכת שמבוססת על מסד נתונים SQL-י.
(מה שלא יהיה נכון אם תתמקד יותר ב-VBA ועוד דברים שקשורים יותר לאקסס ספציפית, אולי זה עוד שיקול לא ליכנס לתחומים אלו) -
חלק י"ז: פתרון (חלקי) לבעיית שיוך התרומות
נתחיל דווקא מהבעיה השניה:
האם בכלל אפשר להעביר תרומה ממשפחה אחת לאחרת?
וניישם את הכלל שחשבנו עליו:
כל זמן שהתרומה לא בוצעה בפועל, כלומר שהתורם העביר למערכת את הכסף, אך אנחנו עדיין לא העברנו אותו למשפחה – ייתכן ונרצה לאפשר לשנות את הייעוד. אבל אם התרומה כבר הועברה למשפחה, אסור שתהיה אפשרות לשנות את הייעד.לשם כך אנו צריכים שדה נוסף שמציין את הסטטוס של התרומה.
לאחר מחשבה, החלטתי שאני מעוניין בשלוש אפשרויות לשדה הסטטוס:- זמינה התרומה נכנסה למערכת, אך עדיין לא מיועדת עדיין לשום משפחה. בידינו ליעדה למי שנרצה.
- מיועדת התרומה כבר מיועדת לאחת המשפחות, אך עדיין לא הועברה אליה בפועל. כעת רק מנהל יוכל לשנות את ייעוד התרומה.
- בוצעה התרומה הועברה כבר למשפחה, ואין לשנות בה שום דבר.
יתר על כן,
אני רוצה שהסטטוס ייקבע על ידי התוכנה, ולא באופן ידני, כדי למנוע את כל הטעויות שהזכרנו. לשם כך ניצור מנגנון האחראי לעדכון שדה הסטטוס, ולא נאפשר שינוי ישיר שלו.שלב א: הוספת שדה סטטוס תרומה
ניצור טבלה חדשה בשם DonationStatus עם השדות הבאים:
ID
מטיפוס מספור אוטומטי. זהו שדה המפתח כמובן.
StatusDesc
מטיפוס טקסט קצר, אורך מקסימלי 10:
עברו לתצוגת גליון נתונים והכניסו את השורות הבאות:
נפתח את הטבלה Donation ונוסיף שדה חדש StatusID מטיפוס מספר שלם ארוך. ונקצה לו ערך ברירת מחדל 1 (כלומר סטטוס=זמינה):
גם כאן, נעצב את התצוגה של השדה להראות תיבה משולבת, כך שיוצג התיאור של הסטטוס במילים ולא ע"י מספר:
נעבור לתצוגת קשרי גומלין ונקשר את הטבלה החדשה לשדה החדש:
יפה.בואו נפתח את טבלת התרומות בתצוגת גליון נתונים, ונראה כי השדה נוסף וברירת המחדל היא "זמינה":
אבל,שימו לב כי עבור התרומות שכבר קיימות במערכת, השדה ריק. מדוע? כי באקסס, כאשר מגדירים ערך ברירת מחדל לשדה, ההגדרה תקפה רק עבור רשומות חדשות שיתווספו מעתה, ולא מעדכנת עמודות ישנות.אבל ברור שהמצב הזה לא מקובל. אני מעוניין שלכל תרומה יהיה ערך תקין בשדה סטטוס. לכן אין לי ברירה אלא לטפל בעצמי בסטטוס של רשומות ישנות.
שלב ב: עדכון שדה הסטטוס עבור הרשומות הקיימות
דקה למחשבה:
לשלושת התרומות הראשונות אנו יכולים לבחור כל אחד משני הסטטוסים: "מיועדת" או "בוצעה", כי הן כבר מיועדות למשפחה. אבל הסטטוס של התרומה הרביעית יוכל להיות רק "זמינה", כי היא לא מיועדת עדיין לשום משפחה.
כרגע לא נסמן שום תרומה כ"בוצעה".בדוגמא שלנו יש רק 4 שורות, ונוכל לעבור שורה שורה באופן ידני ולשנות אותה.
אבל בדרך כלל, לא נעשה כן.
מה יקרה אם יש 40 שורות? ואם יש 4000? ואם בטעות נסמן סטטוס "בוצעה" לתרומה לא משוייכת? צריך מנגנון שיעשה זאת באופן אוטומטי ונטול טעויות. לשם כך נכיר סוג נוסף של שאילתא:שאילתת עדכון
יצירה > עיצוב שאילתא > הוסיפו את טבלת התרומות, ומתוכה את השדה StatusID לרשימת השדות למטה. כעת בחרו סוג שאילתה "עדכן" מהתפריט:
שימו לב שנוספה כותרת שורה: "עדכן ל:"
בשדה זה אנו אמורים לציין את הערך המעודכן של השדה StatusID. אבל כפי שציינתי, ערך זה תלוי:- אם התרומה לא משוייכת למשפחה, אנו רוצים שערך השדה יתעדכן למספר 1 (=זמינה)
- אחרת, השדה יתעדכן למספר 2 (=מיועדת)
יש יותר מאפשרות אחת לעשות כן. היום נשתמש בפונקצית התנאי הכפול IIF
פונקצית התנאי IIF מקבלת שניים או שלושה פרמטרים, ומחזירה ערך לפי ההגיון הבא:
אם ערך הפרמטר הראשון הוא אמת – יוחזר ערך הפרמטר השני. אם לא – יוחזר ערך הפרמטר השלישי (אם צייננו פרמטר שלישי. אחרת יוחזר NULL)
כנסו לשדה ופתחו את הבונה, ושם כתבו את הנוסחא הבאה:
IIf([TargetFamilyID] Is Null, 1, 2)
חשוב מאד: שימו לב להוסיף את הסוגריים המרובעות מסביב לשם השדה TargetFamilyID, אחרת אקסס תפרש אותו בתור מחרוזת, ותוסיף לו גרשיים, והתוצאות יהיו שגוייות, כי התנאי בפרמטר הראשון תמיד יחזיר שקר.
זהו.
כל מה שנדרש זה פשוט להריץ את השאילתה.
בחרו מהתפריט למעלה: "הפעל". אקסס תשאל האם אתם בטוחים שברצונכם לעדכן 4 שורות:
נבחר כן. ואקסס תעשה את העבודה בשבילנו.
כעת נסגור את השאילתא. אקסס תשאל אם ברצוננו לשמור:
נחשוב: האם אנו צריכים לשמור את השאילתה? כנראה שלא. אנו לא אמורים לשנות באופן גורף את ערך השדה בעתיד.
נבחר "לא".
נפתח את טבלת התרומות ונבדוק שכל הרשומות עודכנו בצורה נכונה:
נראה מצוין!
רבע שעה הפסקה ונמשיך.שלב ג: הגדרת שדה הסטטוס כשדה חובה
למרות שאקסס מספקת לנו ערך ברירת מחדל לסטטוס, עדיין המשתמש יכול למחוק לגמרי את ערך השדה, ולהשאירו על NULL. זה מצב שאנו רוצים לחסום. לכן נגדיר את הסטטוס כשדה נדרש.
שדה נדרש
אקסס מאפשרת לנו להגדיר כי שדה מסויים הוא נדרש, כלומר: מוכרח להכיל ערך. אם השדה הוגדר כנדרש, אקסס לא תאפשר לנו לשמור את הרשומה מבלי לספק ערך תקין לשדה.
כנסו לטבלת התרומות, בחרו את שדה הסטטוס, ושנו במאפיינים את המאפיין נדרש לערך "כן":
שמרו את הטבלה ביציאה ממעצב הטבלה. אקסס תציג את ההודעה הבאה:
הודעה זו מופיעה בכל פעם שמגדירים שדה כנדרש וכבר קיימות רשומות בטבלה.
אקסס שואלת האם ברצוננו לבדוק שהרשומות הקיימות מקיימות את ההגדרות החדשות, או במקרה שלנו, שהשדה StatusID מכיל ערך עבור כל רשומה ורשומה.נבחר "כן", ואקסס תבדוק שהרשומות תקינות. וכיוון שכבר דאגנו לכך מראש, לא תהיה שום בעיה, ואקסס תסגור את מעצב הטבלה.
אם הנתונים היו שגויים (כלומר, היה חסר ערך לשדה הסטטוס בחלק מהרשומות), אקסס הייתה שואלת מה ברצוננו לעשות: לבטל את ההגבלה על השדה, או להתעלם מחוסר התקינות של הנתונים הקיימים, ורק לדאוג לכך מכאן ולהבא (וכן, זה באמת נשמע רעיון מסוכן, ורק לעתים נדירות נבחר בו, לא ניכנס כעת לפרטים).
שלב ד: הוספת שדה הסטטוס לטופס רשימת התרומות ונעילתו
אנו רוצים להציג למשתמש את הסטטוס של כל תרומה. נפתח את הטופס frmDonationList בתצוגת עיצוב, ונבחר מהתפריט למעלה: "הוסף שדות קיימים":
אקסס תציג את כל השדות בטבלה שעליה מבוסס הטופס, דהיינו טבלת התרומות Donation. נגרור את השדה StatusID לתוך הטופס, לפני שדה משפחת הייעד:
כעת ננעל את השדה לשינויים:
נעבור לתצוגת המאפיינים של השדה על ידי מקש F4, ובלשונית נתונים נשנה את ערך המאפיין נעול ל-כן:
שלב ד: ביטול שדה משפחת היעד עבור רשומות עם סטטוס שונה מ"זמינה"
אנו רוצים שהמשתמש לא יוכל לשנות את היעד עבור משפחה שהסטטוס של שונה מ-"זמינה". לשם כך נשתמש בעיצוב מותנה על שדה TargetFamilyID:
סמנו את השדה ובחרו בתפריט "עיצוב" את האפשרות "עיצוב מותנה":
בחרו כלל חדש ובעצב רק תאים שבהם: את האפשרות הביטוי הינו
ובתיבת הביטוי הקלידו
[StatusID] <> 1
נסמן את האפשרות הפוך לזמין, ונשים לב כי התצוגה המקדימה מראה פקד אפור (=לא זמין)
נבחר אישור פעמיים כדי להחיל את כלל העיצוב שיצרנו.
נסגור את הטופס ונשמור. כעת נפתח את טופס כרטיס התורם, ונראה שהשדה החדש מופיע, וכן נראה שכעת יש אינדיקציה על תרומה המיועדת למשפחה שאינה משוייכת לתורם הנוכחי:
נסו לשנות את הסטטוס עבור משפחה כלשהי. שימו לב שאין אפשרות כי השדה נעול.
הוסיפו כעת עוד תרומה לתורם הנדיב כהן אברהם, ייעדו את התרומה עבור "ראובני אברהם ושרה".
שימו לב כי למרות שהתרומה מיועדת, הסטטוס עדיין נמצא על "זמינה":
שלב ה: שאילתה לעדכון הסטטוס
נצטרך ליצור מנגנון שמשנה את הסטטוס עבור כל תרומה כזו. הטוב ביותר הוא לשנות את ערך הסטטוס ברגע שמעדכנים את המשפחה בשדה היעד, אך לצורך זה אנו צריכים להשתמש בקוד VBA. כיוון שמדריך זה באופן עקרוני לא אמור לכלול קוד VBA, נשתמש בשאילתת עדכון.
השאילתה תהפוך את שדה הסטטוס למיועדת עבור כל תרומה שיש לה משפחה בשדה הייעד, אך הסטטוס שלה עדיין נמצא על ברירת המחדל "זמינה".צרו שאילתת עדכון חדשה, והוסיפו למשטח העבודה את טבלת התרומות.
הוסיפו לרשימת השדות למטה את שני השדות StatusID ו- TargetFamilyID.
כעת השלימו את הפרמטרים כפי שמופיע בתמונה:
הגדרה זו פירושה:
עדכן את השדה StatusID כאשר הוא מכיל את הערך 1 (=זמינה) וגם שדה משפחת היעד אינו ריק.
לשם שעשוע, עברו לתצוגת SQL וראו את תחביר השאילתה:
UPDATE Donation SET Donation.StatusID = 2 WHERE (((Donation.StatusID)=1) AND ((Donation.TargetFamilyID) Is Not Null));
המילה UPDATE מציינת כי ברצוננו לעדכן את הטבלה Donation. הפקודה SET… פירושה קבע את שדה Donation.StatusID לערך 2. המילה WHERE מציינת את התנאי לעדכון, והמילה AND מציינת כי שני חלקי התנאי צריכים להתקיים. פשוט, לא?שמרו את השאילתה בשם: qryUpdate_SetDonationStatusToTargeted.
שימו לב, כי אקסס מקצה סמל מיוחד של עיפרון עם סימן קריאה עבור שאילתות עדכון:
כדי לציין שהשאילתה משנה ערכי שדות, ועלינו להשתמש בה בזהירות.
כדי להריץ את השאילתה, נלחץ עליה פעמיים. אקסס תשאל האם עשינו זאת בכוונה:
נבחר כן.
אקסס תבדוק כמה רשומות עתידות להיות מושפעות כתוצאה מהרצת השאילתה (במקרה שלנו רק הרשומה האחרונה שיצרנו), ותתריע על השינויים הצפויים:
שוב נבחר כן.
נפתח את טופס התורם ונראה כי הסטטוס לתרומה האחרונה השתנה למיועדת, ושדה משפחת היעד ננעל:
אנחנו מתקדמים.לסיום
הסרת האפשרות לשינוי הסטטוס על ידי המשתמש היא צעד חשוב. אך עדיין יש עוד מה לעשות:- להריץ את שאילתת העדכון כשהדבר מתבקש, למשל עם סגירת הטופס. (ככל הנראה לא יהיה מנוס משימוש ב-VBA למרות הכל...)
- לאפשר שינוי הסטטוס ל"בוצעה" במקרה שאכן התרומה הועברה למשפחה.
נשאיר זאת לפעם הבאה.
שיעורי בית: עריכת טופס כרטיס התרומה.
על פי התכנון, טופס כרטיס התרומה frmDonationCard מיועד למנהל המערכת בלבד. אבל בטופס הזה חסרים שני דברים חשובים:- לא מוצג שדה הסטטוס.
- אנו מעוניינים לאפשר למנהל לשנות רק תרומה זמינה, ולא שכבר מיועדת או בוצעה.
למעשה, זה בדיוק אותו תהליך כפי שעשינו עם הטופס של רשימת התרומות.
בהצלחה! -
שלום לכולם!
לשאלות או תגובות, אשמח אם תגיבו כאן.(לינק למדריך אקסס למתחילים: יצירת מערכת לניהול תורמים ).
-
@שיהיה אמר באקסס למתחילים: תגובות:
היי
אני לא מצליח לראות את המדריך..
איפה הוא אמור להיות?
בתגובה?לחץ כאן:
https://tchumim.com/topic/10491/אקסס-למתחילים-יצירת-מערכת-לניהול-תורמים/18 -
@שיהיה אמר באקסס למתחילים: תגובות:
היי
אני לא מצליח לראות את המדריך..
איפה הוא אמור להיות?
בתגובה?לחץ כאן:
https://tchumim.com/topic/10491/אקסס-למתחילים-יצירת-מערכת-לניהול-תורמים/18 -
@בערל אמר באקסס למתחילים: תגובות:
אגב, למה החשש הגדול להכניס קצת VBA ?
אני פשוט משתדל להצטמצם לידע בסיסי. VBA זה עולם שלם בפני עצמו.
וככלל, אם אפשר לפתור את הבעיה על ידי שאילתא, זה עדיף מבחינת יעילות ותאימות הלאה, דהיינו, כשנרצה בעז"ה לשדרג את המערכת לבסיס נתונים אחר, או ממשק אחר.
אבל כנראה שנטעם קצת משם, כי אני רואה שנדחקתי לפינה עם בעיית שיוך התרומות, והפתרון של הרצת השאילתה באופן ידני בכל פעם לא מתאים למערכת אמיתית.@בערל אמר:
איך שאתה מצליח לשלב בין ההתקדמות בפרוייקט הבניה לבין לימוד של חומר חדש.
אני בספק לגבי מה שכתבת בהתחלה שהמדריך לא מתוכנן ואין סילבוס.באמת? אני חושב לפעמים שהשילוב הזה הופך את המדריך למבולגן למדי. הוא מלא טעימות מפה ומשם. אבל מנחם את עצמי בעובדה שהתרעתי על כך מראש. מי שלא מרוצה יכול לקבל את התשלום בחזרה...
@odeddvir אמר באקסס למתחילים: תגובות:
באמת? אני חושב לפעמים שהשילוב הזה הופך את המדריך למבולגן למדי. הוא מלא טעימות מפה ומשם. אבל מנחם את עצמי בעובדה שהתרעתי על כך מראש. מי שלא מרוצה יכול לקבל את התשלום בחזרה...
השילוב הופך אותו למקצועי הרבה יותר מהרבה מדריכים ברשת
הקטע שבכל שיעור מתקדמים גם בלימוד וגם בבניית המוצר - מספק מאודאישית אני מאוד נהנה מדרך לימוד זו
התחלתי מדריכים שאמורים להיות מעולים ופשוט התעייפתי ועזבתי באמצע... וכאן אני מוצא עצמי מצפה במתח לפרק הבא...תודה רבה!
@odeddvir אמר באקסס למתחילים: יצירת מערכת לניהול תורמים:שיעורי בית: עריכת טופס כרטיס התרומה.
על פי התכנון, טופס כרטיס התרומה frmDonationCard מיועד למנהל המערכת בלבד. אבל בטופס הזה חסרים שני דברים חשובים:- לא מוצג שדה הסטטוס.
- אנו מעוניינים לאפשר למנהל לשנות רק תרומה זמינה, ולא שכבר מיועדת או בוצעה.
למעשה, זה בדיוק אותו תהליך כפי שעשינו עם הטופס של רשימת התרומות.
בהצלחה!בוצע!
-
@איש-פלוני מסתמא לחצת בטעות על הנקודות בשורה של מקור הפקד ולא במקור השורה. כך זה נראה מצילום המסך (אתה בלשונית "הכל" ולא "נתונים")
-
@איש-פלוני מסתמא לחצת בטעות על הנקודות בשורה של מקור הפקד ולא במקור השורה. כך זה נראה מצילום המסך (אתה בלשונית "הכל" ולא "נתונים")
@odeddvir אמר באקסס למתחילים: תגובות:
@איש-פלוני מסתמא לחצת בטעות על הנקודות בשורה של מקור הפקד ולא במקור השורה. כך זה נראה מצילום המסך (אתה בלשונית "הכל" ולא "נתונים")
נכון.
תודה רבה!!! -
שלום לכולם!
לשאלות או תגובות, אשמח אם תגיבו כאן.(לינק למדריך אקסס למתחילים: יצירת מערכת לניהול תורמים ).
@odeddvir
שלום. (אני לא יודע אם כאן המקום לשאלות...)
אני אוחז בפוסט מס' 12, ואני מסתבך.
כשאני גורר טופס משנה לתוך ראשי, ואח"כ חוזר לתצוגת "טופס" - אני רואה את טופס המשנה גדול בלי פרופורציה, וכשאני מנסה להקטין אותו (בתצוגת עיצוב כמובן) - אזי בתוצאה בתצוגת טופס - לא רואים את הכותרת ותוויות השדות. -
@odeddvir
שלום. (אני לא יודע אם כאן המקום לשאלות...)
אני אוחז בפוסט מס' 12, ואני מסתבך.
כשאני גורר טופס משנה לתוך ראשי, ואח"כ חוזר לתצוגת "טופס" - אני רואה את טופס המשנה גדול בלי פרופורציה, וכשאני מנסה להקטין אותו (בתצוגת עיצוב כמובן) - אזי בתוצאה בתצוגת טופס - לא רואים את הכותרת ותוויות השדות.@שואף-לדעת זה בגלל שאקסס מיישרת את הפקדים לכיוונים סותרים.
בתצוגת עיצוב, בחר את כל הפקדים Ctrl+A, ובמאפיינים בלשונית "תבנית" שנה את המאפיין עוגן אופקי ל: ימין:
-
להתענג!
כל מילה זהב
ועוד חשבתי שזה עוד תוכנה... -
@OdedDvir
מבקש סליחה שאני שואל על משהו מחוץ למה שנלמד בקורס.
ניסיתי להוסיף לטופס של התורמים תיבה משולבת שיהיה אפשר לבחור בה תורם מתוך טבלת התורמים וניסיתי לעשות שהנתונים בטופס יתעדכנו ויציגו לי את התורם לפי התורם שאני בוחר בתיבה המשולבת. אבל לא הצלחתי שהטופס יסונן לפי מה שאבחר בתיבה המשולבת.
איך אפשר לעשות את זה?
תודה רבה!
אין מילים על הקורס!! הייתי באמצע לבנות קטלוג לאוצר ספרים בישיבה (בלי ידע מוקדם באקסס, ניסוי וטעיה וכל מיני מדריכים שמצאתי באינטרנט), והקורס הזה הוא המדריך הכי ברור שראיתי! עזר לי בהרבה דברים!! -
@OdedDvir
מבקש סליחה שאני שואל על משהו מחוץ למה שנלמד בקורס.
ניסיתי להוסיף לטופס של התורמים תיבה משולבת שיהיה אפשר לבחור בה תורם מתוך טבלת התורמים וניסיתי לעשות שהנתונים בטופס יתעדכנו ויציגו לי את התורם לפי התורם שאני בוחר בתיבה המשולבת. אבל לא הצלחתי שהטופס יסונן לפי מה שאבחר בתיבה המשולבת.
איך אפשר לעשות את זה?
תודה רבה!
אין מילים על הקורס!! הייתי באמצע לבנות קטלוג לאוצר ספרים בישיבה (בלי ידע מוקדם באקסס, ניסוי וטעיה וכל מיני מדריכים שמצאתי באינטרנט), והקורס הזה הוא המדריך הכי ברור שראיתי! עזר לי בהרבה דברים!!@OdedDvir המדריך הזה, זה פשוט דבר מדהים!!
איזה כתיבה איזה הפשטת מושגים איזה כתיבה מקצועית וברורה!!
אני נהנה מכל רגע!!
תודה גם הכניסה ל VBA .
חבל שלא היית המורה שלי, ככה בטוח הציונים שלי היו יותר טובים....
תודה!