-
הקובץ מיועד לרישום תלמידים ומבחנים על פרקי משניות
המטרה היא שלא יוכלו להיבחן על אותו דבר לפני 3 חודשים
הטבלה שבו אני רוצה לשים את הכלל אימות הנ"ל מורכב מ4 עמודות
מזהה,שם תלמיד,פרק,ותאריך
אני מחפש נוסחה שתיתן לי במידה והתלמיד 1 נבחן על פרק מספר1 בתאריך שהוא פחות מ3 חודשים
המערכתת לא תיתן להוסיף את הבחינה הזאת
תודה מראש -
אפשרי, אבל קצת גדול מדי לאקסל
-
@upsilon01
אני מדבר על אקסס -
upsilon01השיב לשלומ ב 8 בספט׳ 2019, 19:29 נערך לאחרונה על ידי upsilon01 9 באוג׳ 2019, 19:29
@שלומ אופס, לא שמתי לב
אתה צריך להוסיף אילוץ למסד נתונים משהו כזה:create table exams( id int identity, exam_date date, student varchar(20) perek varchar(20), check(perek not in (select perek from exams where exam_date where >=DATEADD(m, -3, GETDATE()))) ) תסביר איך נראה האקסס שלך
ואולי יוכלו לעזור לך יותר -
@upsilon01
זה לא הולך לי
הטבלה שבו אני רוצה את הנוסחה הנ"ל מורכבת מ3 עמודות
1 שם תלמיד - שנלקח מטבלת תלמידים
2 פרק - שנלקח מטבלת פרקים
3 תאריך
בטבלה הזאת נשמרים כל הנתונים
בעצם מה שאני צריך שלא יהיה אופציה לרשום שם תלמיד ופרק בתאריך שהוא פחות מ3 חודשים -
clickoneהשיב לשלומ ב 8 בספט׳ 2019, 20:39 נערך לאחרונה על ידי clickone 9 באוג׳ 2019, 20:41
@שלומ
יש כמה דרכים.
אפשר עם DLookUp או עדיף יותר DCount
ואז לסנן לפיו.אבל יותר הייתי הולך על סינון של Not In - ולא ככלל אימות, אלא בתוך הלוגיקה של ההכנסה
משהו בסגנון שלselect id, studentID, part, testDate from table where studentID Not In (select studentID From TblTests WHERE StudentID = table.studentID And part=table.part And testDate<(Date()-90) ) כתבתי את הSQL הזה בשליפה ישר כאן ולא באקסס, אז יכול להיות שפיספסתי משהו. אבל זה הכיוון הנכון לדעתי.
שים לב שלקחתי 90 יום ולא 3 חודשים, זה לפישוט העניין, כי הנושא של סינון תאריכים קצת בעייתי בסינון בDB במיוחד עם התצוגות תאריך באקסס - ואם עושים עדיף לעשות את זה עם פונקצייה תומכת כמו DateSerial + BuildCriteriaאם תעלה דוגמא, אז זה יכול להיות יותר ממוקד.
בהצלחהעריכה: אני רואה ש @upsilon01 הקדים אותי עם הNot In....
אגב הסיבה שאני לא אוהב את הכלל אימות, כי בסוף תמיד יש חריגים
@ארכיטקט לזכרוני חסיד שככל הלוגיקה תשב בDB ורק שם. -
מה השם של הטבלה?
ומה שמות העמודות(במדויק)? -
@upsilon01 אמר במחפש נוסחה לכלל אימות באקסס:
מה השם של הטבלה?
ומה שמות העמודות(במדויק)?הטבלה היא [בחינות]
עמודה 1 [שם תלמיד]
עמודה 2 [פרק]
עמודה 3 [תאריך]
@clickone
מוצ"ב הקובץ
מסד נתונים.accdb
@upsilon01 @clickone יכול להיות שאם הייתי בונה את המסד בצורה אחרת היה יותר קל?
למשל לפתוח לכל תלמיד טבלת בחינות ששם יישמרו הנתונים ולהגדיר שיהיה ללא כפילויות ולשים הגדרה שאפשר לעדכן רק אם עבר 90 יום
מה אתם אומרים?
אבל אני לא יודע אם יש אופציה כזאת באקסס שכשאתה מוסיף רשומה נפתחת אוטומטית טבלה מקושרת בעיצוב מסוים
אולי במאקרו אפשר לעשות את זה ?
תודה -
upsilon01השיב לשלומ ב 9 בספט׳ 2019, 11:39 נערך לאחרונה על ידי upsilon01 9 בספט׳ 2019, 11:42
@שלומ
בגדול אתה צריך להחזיק שני טבלאות
אחד לתלמידים
ואחד למבחנים
לדוגמא:תלמידים +----+--------------+-------+ | id | student_name | class | +----+--------------+-------+ | 1 | name 1 | א | +----+--------------+-------+ | 2 | name 2 | ב | +----+--------------+-------+ מבחנים: +---------+------------+-------+-----------+ | exam_id | student_id | perek | exam_date | +---------+------------+-------+-----------+ | 1 | 1 | 5 | 1/2/2019 | +---------+------------+-------+-----------+ | 2 | 2 | 6 | 1/5/2019 | +---------+------------+-------+-----------+ לדוגמא תלמיד 1 נבחן על פרק 5
ותלמיד 2 נבחן על פרק 6ה {1} זה באג של nodbb
-
@upsilon01
זה מה שיש לי בעצם
העמודה תלמידים נלקח מטבלת תלמידים
והעמודה פרק נלקח מטבלת פרקים -
@upsilon01
אבל אני צריך להגדיר כלל אימות שלא יאפשר לי להכניס מבחן למשתמש ופרק שלא עבר 3 חודשים
הוי אומר: שצריך משהוא שיחפש אם קיים אותו משתמש באותו פרק ואח"כ לבדוק אם עבר 3 חודשים -
@upsilon01 שים לב שזה בסה"כ Access. ולא SqlServer ודומיו.
האילוצים שכתבת, אני לא מאמין שקיימים שם. -
@שלומ
בכלל אימות יש ליצור את הכלל שרוצים בדוגמא הנ"ל כאשר יוכנס בשדה DATE תאריך גדול משלושה חודשים מהיום תופיע הודעת שגיאה ולא יהיה ניתן להמשיך הלאה עד לתיקון התאריך ע"פ הכלל
אולי אם אני יבין בדיוק איזה כלל אתה רוצה עם החודשים אני יוכל לנסח כלל ספציפי למקרה שלך -
לדעתי האישית אל תשים את זה בכלל אימות, אלא בקוד. (אא"כ לא הבנתי את הסיטואציה לגמרי.....)
-
תבדוק אם זה מתאים לך (קוד)
1568017048437-מסד-נתונים.zip -
9/18