אקסס למתחילים: תגובות
-
@OdedDvir @בערל
שלום וברכה
לא קשור כל כך לנושא הספציפי של הפורום..
אבל מכיון שאני גם באמצע בניה של מסד הנתונים, תרומות... (לתת..)
עכשיו מנסה להפוך אותו לאוטומטי,(עד עכשיו שמנו כל שנה עמודה מחדש, אבל יש גבול לטלאים, וצריך אחד ולתמיד לשפץ את מסד הנתונים שהתחלנו אותו בגיל 17) ושמתי לב, שבמידה ומשתמשים בקישור של יותר מ2 טבלאות...
אי אפשר לערוך את הרשומה.מה הפיתרון, חוץ מלעשות SQL כדי לעדכן כל רשומה.... (וגם שם זה יהיה קצת בעיה, כי הפקד נעול...)
(ואל תבקשו ממני לעשות אותו בטופס משנה נפרד, ואופס לקשר את השדות,
כי אני צריך עדכון רציף בתצוגת גיליון נתונים (תחשבו על הבחור שיושב עכשיו ומכניס 2000 תרומות ברצף..., טוב, - גם זה לא חזות הכל, כי יש לנו עוד 2 טבלאות שניקח מהם רשומות, טבלת קבוצות, טבלת תלמידים, וגם שם אנחנו נרצה לדעת מי היה שם שנה שעברה, ולפני שנתיים, ואת מי נשבץ שם השנה...), ולא בטופס משנה שיקח משאילתא אחרת....)
מצרף את הSQL שעליו בנויה השאילתא, (לא שיעזור הרבה, כי זה פשוט מבוסס על שאילתא מפקדים - ואת הDlookup עשינו בהתחלה בשביל הדוחות...)
SELECT ktovot.Id, ktovot.family_name, ktovot.frist_name, ktovot.city, ktovot.area, ktovot.st, ktovot.number_blok, ktovot.namber_home, ktovot.phone_1, ktovot.phone_2, ktovot.yes_no, ktovot.Time, ktovot.comment, ktovot.status, ktovot.maagal, ktovot.group_2019, ktovot.group_2020, ktovot.number_go, ktovot.importance, DLookUp("[Donation_amount]","[Donation]","[year_]=" & (Year(Now())-2) & " and [Donor_ID]=" & [id]) AS Two_year_d, Last_year_d.Donation_amount AS [last], Two_year_d.Donation_amount FROM (ktovot LEFT JOIN Last_year_d ON ktovot.Id = Last_year_d.Donor_ID) LEFT JOIN Two_year_d ON ktovot.Id = Two_year_d.Donor_ID WHERE (((ktovot.Id) Like [forms]![כתובות]![מזהה] & "*") AND ((Nz([ktovot.comment],0)) Like [forms]![כתובות]![הערות] & "*") AND ((Nz([ktovot].[family_name],0)) Like [forms]![כתובות]![משפחה] & "*") AND ((Nz([ktovot.frist_name],0)) Like [forms]![כתובות]![פרטי] & "*") AND ((Nz([ktovot.city],0)) Like [forms]![כתובות]![עיר] & "*") AND ((Nz([ktovot.area],0)) Like [forms]![כתובות]![שכונה] & "*") AND ((Nz([ktovot.st],0)) Like [forms]![כתובות]![שם הרחוב] & "*") AND ((Nz([ktovot.maagal],0)) Like [forms]![כתובות]![מעגל] & "*") AND ((Nz([ktovot.number_blok],0)) Like [forms]![כתובות]![בית] & "*") AND ((Nz([ktovot.phone_1],0)) Like [forms]![כתובות]![טלפון] & "*") AND ((Nz([ktovot.phone_2],0)) Like [forms]![כתובות]![טלפון] & "*") AND ((Nz([ktovot.group_2020],0)) Like IIf(IsNull([forms]![כתובות]![קבוצה]),"*",[forms]![כתובות]![קבוצה])));
@felner
אם אתה צריך עזרה עם db לתרומות באקסס, ובפרט תת של פורים
יש לי נסיון עשיר בתחום, הן בפרקטיקה והן במתודולוגיה
מרפרוף מלמעלה מה שנתת שם זה עומס של פוקנציות מסובכות אחד על השני, צריך לעשות סדר..
צור קשר ampsoftware1@gmail.com -
@odeddvir אמר באקסס למתחילים: יצירת מערכת לניהול תורמים:
שיעורי בית:
כדי להתחמק מן הבעיה הראשונה שהזכרנו לעיל, נכריח את המשתמש להכניס נתון כלשהו בקבלה: אמצעי השליחה.- צרו טבלה חדשה בשם DeliveryMethod שתכיל שדה מזהה ID ושדה נוסף בשם Description.
טבלה זו תכיל את אפשרויות השליחה של הקבלה, כאשר 1 מציין שהקבלה תישלח בדואר רגיל, ו-2 מציין כי הקבלה תישלח בדואר אלקטרוני.
- הוסיפו שדה נוסף לטבלת הקבלות בשם DeliveryMethodID מטיפוס מספר ארוך. הערכים לשדה זה יילקחו מהטבלה בסעיף א, על ידי תיבה משולבת. קבעו את ערך ברירת המחדל של השדה ל-Null.
- הוסיפו פקד תיבה משולבת עבור השדה הנ"ל בטופס הקבלה.
- צרו טבלה חדשה בשם DeliveryMethod שתכיל שדה מזהה ID ושדה נוסף בשם Description.
-
@odeddvir אמר באקסס למתחילים: יצירת מערכת לניהול תורמים:
שיעורי בית:
כדי להתחמק מן הבעיה הראשונה שהזכרנו לעיל, נכריח את המשתמש להכניס נתון כלשהו בקבלה: אמצעי השליחה.- צרו טבלה חדשה בשם DeliveryMethod שתכיל שדה מזהה ID ושדה נוסף בשם Description.
טבלה זו תכיל את אפשרויות השליחה של הקבלה, כאשר 1 מציין שהקבלה תישלח בדואר רגיל, ו-2 מציין כי הקבלה תישלח בדואר אלקטרוני.
- הוסיפו שדה נוסף לטבלת הקבלות בשם DeliveryMethodID מטיפוס מספר ארוך. הערכים לשדה זה יילקחו מהטבלה בסעיף א, על ידי תיבה משולבת. קבעו את ערך ברירת המחדל של השדה ל-Null.
- הוסיפו פקד תיבה משולבת עבור השדה הנ"ל בטופס הקבלה.
@בערל יפה מאוד! לפעמים אני מרגיש שרק אתה עוקב אחרי ההדרכה...
ברשותך יש לי שתי הערות:- את השדה של ההודעה לא רציתי להפוך לנדרש, כי לפעמים אני מוציא קבלה ג'נרית בלי הודעה אישית.
אך הזכרת לי דבר חשוב ששכחתי: את שני השדות: שדה התאריך, ואופן השליחה - כן צריך להפוך לנדרשים (אני אוסיף זאת בשיעורי הבית) - את שם השדה ReceiptMethod בטבלת הקבלות, ראוי לשנות ל-ReceiptMethodID כי הוא מציין למזהה בטבלה אחרת.
- צרו טבלה חדשה בשם DeliveryMethod שתכיל שדה מזהה ID ושדה נוסף בשם Description.
-
@בערל יפה מאוד! לפעמים אני מרגיש שרק אתה עוקב אחרי ההדרכה...
ברשותך יש לי שתי הערות:- את השדה של ההודעה לא רציתי להפוך לנדרש, כי לפעמים אני מוציא קבלה ג'נרית בלי הודעה אישית.
אך הזכרת לי דבר חשוב ששכחתי: את שני השדות: שדה התאריך, ואופן השליחה - כן צריך להפוך לנדרשים (אני אוסיף זאת בשיעורי הבית) - את שם השדה ReceiptMethod בטבלת הקבלות, ראוי לשנות ל-ReceiptMethodID כי הוא מציין למזהה בטבלה אחרת.
- את השדה של ההודעה לא רציתי להפוך לנדרש, כי לפעמים אני מוציא קבלה ג'נרית בלי הודעה אישית.
-
@בערל יפה מאוד! לפעמים אני מרגיש שרק אתה עוקב אחרי ההדרכה...
ברשותך יש לי שתי הערות:- את השדה של ההודעה לא רציתי להפוך לנדרש, כי לפעמים אני מוציא קבלה ג'נרית בלי הודעה אישית.
אך הזכרת לי דבר חשוב ששכחתי: את שני השדות: שדה התאריך, ואופן השליחה - כן צריך להפוך לנדרשים (אני אוסיף זאת בשיעורי הבית) - את שם השדה ReceiptMethod בטבלת הקבלות, ראוי לשנות ל-ReceiptMethodID כי הוא מציין למזהה בטבלה אחרת.
@odeddvir אמר באקסס למתחילים: תגובות:
@בערל יפה מאוד! לפעמים אני מרגיש שרק אתה עוקב אחרי ההדרכה...
גם אני עוקב בהנאה רבה...
אני אמנם לא בונה את המערכת בפועל, אך לומד ומחכים על דרכי פתרון לבעיות, סדר ותכנון, וגם הרבה סדר בראש על העבודה עם אקסס.תודה רבה על כל ההשקעה!!
אני תמיד אוהב להביא קובץ דוגמא, אני כל פרק פשוט מתאפק מלבנות את המערכת ולעלות דוגמא לציבור....
- את השדה של ההודעה לא רציתי להפוך לנדרש, כי לפעמים אני מוציא קבלה ג'נרית בלי הודעה אישית.
-
@odeddvir אמר באקסס למתחילים: תגובות:
@בערל יפה מאוד! לפעמים אני מרגיש שרק אתה עוקב אחרי ההדרכה...
גם אני עוקב בהנאה רבה...
אני אמנם לא בונה את המערכת בפועל, אך לומד ומחכים על דרכי פתרון לבעיות, סדר ותכנון, וגם הרבה סדר בראש על העבודה עם אקסס.תודה רבה על כל ההשקעה!!
אני תמיד אוהב להביא קובץ דוגמא, אני כל פרק פשוט מתאפק מלבנות את המערכת ולעלות דוגמא לציבור....
-
@בערל יפה מאוד! לפעמים אני מרגיש שרק אתה עוקב אחרי ההדרכה...
ברשותך יש לי שתי הערות:- את השדה של ההודעה לא רציתי להפוך לנדרש, כי לפעמים אני מוציא קבלה ג'נרית בלי הודעה אישית.
אך הזכרת לי דבר חשוב ששכחתי: את שני השדות: שדה התאריך, ואופן השליחה - כן צריך להפוך לנדרשים (אני אוסיף זאת בשיעורי הבית) - את שם השדה ReceiptMethod בטבלת הקבלות, ראוי לשנות ל-ReceiptMethodID כי הוא מציין למזהה בטבלה אחרת.
@odeddvir אמר באקסס למתחילים: תגובות:
את השדה של ההודעה לא רציתי להפוך לנדרש, כי לפעמים אני מוציא קבלה ג'נרית בלי הודעה אישית.
לא היה לי רעיון אחר כיצד להכריח את המשתמש להזין משהו
אצטרך להמתין לפתרוןאת שם השדה ReceiptMethod בטבלת הקבלות, ראוי לשנות ל-ReceiptMethodID כי הוא מציין למזהה בטבלה אחרת.
אופססס.....
מתקן מיד - את השדה של ההודעה לא רציתי להפוך לנדרש, כי לפעמים אני מוציא קבלה ג'נרית בלי הודעה אישית.
-
@בערל יפה מאוד! לפעמים אני מרגיש שרק אתה עוקב אחרי ההדרכה...
ברשותך יש לי שתי הערות:- את השדה של ההודעה לא רציתי להפוך לנדרש, כי לפעמים אני מוציא קבלה ג'נרית בלי הודעה אישית.
אך הזכרת לי דבר חשוב ששכחתי: את שני השדות: שדה התאריך, ואופן השליחה - כן צריך להפוך לנדרשים (אני אוסיף זאת בשיעורי הבית) - את שם השדה ReceiptMethod בטבלת הקבלות, ראוי לשנות ל-ReceiptMethodID כי הוא מציין למזהה בטבלה אחרת.
- את השדה של ההודעה לא רציתי להפוך לנדרש, כי לפעמים אני מוציא קבלה ג'נרית בלי הודעה אישית.
-
בעניין נתינת שמות - הומלץ - בהדרכה זו - לתת שמות רק באנגלית ולא להתפתות לאפשרות של עברית.
שאלתי היא: הרי בעיצוב טבלה יש אפשרות "כיתוב" דהיינו שלמרות שהשם האמיתי של השדה הוא באנגלית, מ"מ למשתמש - בתצוגת "גיליון נתונים" יראה השם העברי.
האם יש מניעה להשתמש באפשרות זו ?
-
בעניין נתינת שמות - הומלץ - בהדרכה זו - לתת שמות רק באנגלית ולא להתפתות לאפשרות של עברית.
שאלתי היא: הרי בעיצוב טבלה יש אפשרות "כיתוב" דהיינו שלמרות שהשם האמיתי של השדה הוא באנגלית, מ"מ למשתמש - בתצוגת "גיליון נתונים" יראה השם העברי.
האם יש מניעה להשתמש באפשרות זו ?
@שואף-לדעת אין מניעה, להיפך, דווקא עבור כך נוצר המאפיין.
-
@odeddvir אמר באקסס למתחילים: יצירת מערכת לניהול תורמים:
Private Sub Form_Current() If Me.frmReceipt.Form.Recordset.RecordCount = 0 Then Me.frmReceipt.Form.AllowAdditions = True Else Me.frmReceipt.Form.AllowAdditions = False End If End Sub
אני אוהב 'לקצר' בקוד שמגדיר מאפיין ל TRUE או FALSE
על ידי השמה של תוצאת התנאי ישירות,
ככה:Me.frmReceipt.Form.AllowAdditions = Me.frmReceipt.Form.Recordset.RecordCount = 0
זה נכון?
-
@odeddvir אמר באקסס למתחילים: יצירת מערכת לניהול תורמים:
Private Sub Form_Current() If Me.frmReceipt.Form.Recordset.RecordCount = 0 Then Me.frmReceipt.Form.AllowAdditions = True Else Me.frmReceipt.Form.AllowAdditions = False End If End Sub
אני אוהב 'לקצר' בקוד שמגדיר מאפיין ל TRUE או FALSE
על ידי השמה של תוצאת התנאי ישירות,
ככה:Me.frmReceipt.Form.AllowAdditions = Me.frmReceipt.Form.Recordset.RecordCount = 0
זה נכון?
@מומחה-באקסס זה בהחלט אפשרי, אך פחות קריא.
בחרתי באפשרות הארוכה, כי הקוד יותר מובן כך. -
@odeddvir אמר באקסס למתחילים: יצירת מערכת לניהול תורמים:
אז יופי, בואו ונוסיף גם את השאילתה למשטח העבודה, והופ – נראה שהפעם אקסס לא הייתה כל כך מבריקה, והחליטה לצרף את השדה ID מטבלת התרומות לשדה ID בשאילתה, כפי שמוצג בדרמטיות בתמונה הבאה:
מדוע זה קרה?
אקסס זיהתה את שם השדה ID הזהה בשתי מקורות הנתונים, והחליטה "לעזור לנו" על ידי יצירת הצירוף עבורנו. אבל זה כמובן לא נכון!אם היינו קוראים לשדה המפתח בכל טבלה בשם מלא, כפי שנהגנו במפתח הזר, למשל DonationID במקום ID בטבלת התרומות, או DonorID במקום ID בטבלת התורמים וכו', המנגנון של אקסס אכן היה עוזר לנו.
זו אכן סכמה נפוצה, ובאמת בתחילת דרכי כך נהגתי, אבל היא פחות מקובלת, ובקוד היא נעשית מסורבלת עוד יותר, כי ניגשים לשדה המזהה כך: Donor.DonorID במקום כך: Donor.ID.
לכן אני מעדיף לוותר על העזרה של אקסס כאן, וליצור ידנית את הצירוף, תמורת הרווח של קוד ושאילתות יותר קריאים.בואו נתקן את הצירוף:
נבחר את החץ ונמחק אותו על ידי הקשה על מקש Delete, ובמקום, נגרור את שדה ID מטבלת התורמים לשדה ID בשאילתת השם המלא, כך:
אני כעת מבצע את שני השיעורים האחרונים ואוחז בקטע המצוטט
אצלי משום מה הוא לא טעה וקישר לטבלת התרומות אלא הצליח לנחש נכון וקישר לטבלת התורם?
איך זה? למה?
למה הם מפלים אותך לרעה? נראה לי אתה לקוח יותר ותיק ממני.... -
@odeddvir אמר באקסס למתחילים: יצירת מערכת לניהול תורמים:
אז יופי, בואו ונוסיף גם את השאילתה למשטח העבודה, והופ – נראה שהפעם אקסס לא הייתה כל כך מבריקה, והחליטה לצרף את השדה ID מטבלת התרומות לשדה ID בשאילתה, כפי שמוצג בדרמטיות בתמונה הבאה:
מדוע זה קרה?
אקסס זיהתה את שם השדה ID הזהה בשתי מקורות הנתונים, והחליטה "לעזור לנו" על ידי יצירת הצירוף עבורנו. אבל זה כמובן לא נכון!אם היינו קוראים לשדה המפתח בכל טבלה בשם מלא, כפי שנהגנו במפתח הזר, למשל DonationID במקום ID בטבלת התרומות, או DonorID במקום ID בטבלת התורמים וכו', המנגנון של אקסס אכן היה עוזר לנו.
זו אכן סכמה נפוצה, ובאמת בתחילת דרכי כך נהגתי, אבל היא פחות מקובלת, ובקוד היא נעשית מסורבלת עוד יותר, כי ניגשים לשדה המזהה כך: Donor.DonorID במקום כך: Donor.ID.
לכן אני מעדיף לוותר על העזרה של אקסס כאן, וליצור ידנית את הצירוף, תמורת הרווח של קוד ושאילתות יותר קריאים.בואו נתקן את הצירוף:
נבחר את החץ ונמחק אותו על ידי הקשה על מקש Delete, ובמקום, נגרור את שדה ID מטבלת התורמים לשדה ID בשאילתת השם המלא, כך:
אני כעת מבצע את שני השיעורים האחרונים ואוחז בקטע המצוטט
אצלי משום מה הוא לא טעה וקישר לטבלת התרומות אלא הצליח לנחש נכון וקישר לטבלת התורם?
איך זה? למה?
למה הם מפלים אותך לרעה? נראה לי אתה לקוח יותר ותיק ממני....@בערל התופעה תלויה בסדר שבו אתה מוסיף את הטבלאות למשטח העבודה.
אם הוספת בסדר הזה:- טבלת התורמים Donor
- שאילתת שמות התורמים qryDonor_FullName
כיון שבשניהם קיים שדה ID, אקסס תצרף נכון את הטבלאות
אבל נסה להוסיף בסדר הזה:
- טבלת התרומות Donation
- שאילתת שמות התורמים qryDonor_FullName
כיון שגם בשניהם קיים שדה ID, אקסס תצרף את הטבלאות באופן שגוי
-
@בערל התופעה תלויה בסדר שבו אתה מוסיף את הטבלאות למשטח העבודה.
אם הוספת בסדר הזה:- טבלת התורמים Donor
- שאילתת שמות התורמים qryDonor_FullName
כיון שבשניהם קיים שדה ID, אקסס תצרף נכון את הטבלאות
אבל נסה להוסיף בסדר הזה:
- טבלת התרומות Donation
- שאילתת שמות התורמים qryDonor_FullName
כיון שגם בשניהם קיים שדה ID, אקסס תצרף את הטבלאות באופן שגוי
-
@odeddvir נשמח אם יהיה הסבר איך לבנות באקסס ניהול רשימת טלפונים ושמות בית ספר/תלמידים. תודה.
-
שלום לכולם!
לשאלות או תגובות, אשמח אם תגיבו כאן.(לינק למדריך אקסס למתחילים: יצירת מערכת לניהול תורמים ).
-
@odeddvir אני חוזר על השיעורים ובשיעור מס' 20 אחרי כתיבת הקוד שאמור לתת הודעה על מס' תרומות לעדכון.
כשאני סוגר את הטופס אני מקבל מסך כזה:
מה זה ?@שואף-לדעת זו כנראה שגיאת הקלדה, תעלה צילום של הקוד, בצילום שהעלת חלק ממנו מוסתר.
-
סליחה על האיחור בשיעורים...
@odeddvir אמר באקסס למתחילים: יצירת מערכת לניהול תורמים:
אני משאיר כמה שיעורי בית, בעיקר בעיצוב (מהקל למאתגר):
- הסירו את המסגרות מסביב לתיבות הטקסט בדוח.
- הוסיפו בכותרת התחתונה של העמוד את הכיתוב: "הודפס על ידי מערכת לניהול תורמים גירסא 0.01"
- הוסיפו את שעת ההדפסה המדוייקת בכותרת העליונה.
- הצמידו את ראשי התיבות נ"י לשם התורם כך שיופיעו מיד לאחריו בצורה יפה בלי רווח גדול.
בזה קצת הסתבכתי...
ניסיתי לערוך את הפקד ולהוסיף לו טקסט, משהו כמו:
אבל זה זה מחזיר לי ככה:
אז להוסיף עמודה של תואר בטבלת התורמים? ישירות בשאילתת נתוני הטופס?
או שאתה מתכווין לפתרון אחר לגמרי?- הסירו את השעה מתאריך החשבונית ומתאריך התרומה.
שיניתי את פורמט התא לתאריך קצר שמציג את התאריך בלבד.
ראיתי גם שיש אפשרות להוסיף מסכה בלשונית Data
מה עדיף למקרה שלנו?
-
סליחה על האיחור בשיעורים...
@odeddvir אמר באקסס למתחילים: יצירת מערכת לניהול תורמים:
אני משאיר כמה שיעורי בית, בעיקר בעיצוב (מהקל למאתגר):
- הסירו את המסגרות מסביב לתיבות הטקסט בדוח.
- הוסיפו בכותרת התחתונה של העמוד את הכיתוב: "הודפס על ידי מערכת לניהול תורמים גירסא 0.01"
- הוסיפו את שעת ההדפסה המדוייקת בכותרת העליונה.
- הצמידו את ראשי התיבות נ"י לשם התורם כך שיופיעו מיד לאחריו בצורה יפה בלי רווח גדול.
בזה קצת הסתבכתי...
ניסיתי לערוך את הפקד ולהוסיף לו טקסט, משהו כמו:
אבל זה זה מחזיר לי ככה:
אז להוסיף עמודה של תואר בטבלת התורמים? ישירות בשאילתת נתוני הטופס?
או שאתה מתכווין לפתרון אחר לגמרי?- הסירו את השעה מתאריך החשבונית ומתאריך התרומה.
שיניתי את פורמט התא לתאריך קצר שמציג את התאריך בלבד.
ראיתי גם שיש אפשרות להוסיף מסכה בלשונית Data
מה עדיף למקרה שלנו?
@בערל אמר באקסס למתחילים: תגובות:
סליחה על האיחור בשיעורים...
כמובן שלא צריך לבקש סליחה...
בלאו הכי אני עוקב אחרי השאלות בפורום וניכר שאתה מתקדם יפה.
חוץ מזה, עיצוב יכול באמת למשוך המון זמן, זו הסיבה שאני משתדל להמנע מלהכנס אליו במדריך. כאן בדוח זה פשוט הרגיש ממש הכרחי.ניסיתי לערוך את הפקד ולהוסיף לו טקסט, משהו כמו:
זה באמת הפתרון הכי פשוט.
אבל זה זה מחזיר לי ככה:
שמא שכחת לשנות את שם הפקד של תיבת הטקסט ל-txtFullName לפני כן?
זה יוצר חוסר ודאות בנוסחא או הפניה מעגלית. לזה נתכוונתי בהרגל המגונה של אקסס (בפרק כב).ראיתי גם שיש אפשרות להוסיף מסכה בלשונית Data
מה עדיף למקרה שלנו?המסכה הנ"ל משמשת לקלט של נתונים, למשל בטופס, כדי לפרמט או להגביל את הקלט.
במקרה שלנו הלא מדובר בדוח, שמשמש לתצוגת פלט בלבד, ולכן הדרך הראשונה היא הנכונה.