-
@שלומ אופס, לא שמתי לב
אתה צריך להוסיף אילוץ למסד נתונים משהו כזה: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 חודשים -
@שלומ
יש כמה דרכים.
אפשר עם 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 יום
מה אתם אומרים?
אבל אני לא יודע אם יש אופציה כזאת באקסס שכשאתה מוסיף רשומה נפתחת אוטומטית טבלה מקושרת בעיצוב מסוים
אולי במאקרו אפשר לעשות את זה ?
תודה -
@שלומ
בגדול אתה צריך להחזיק שני טבלאות
אחד לתלמידים
ואחד למבחנים
לדוגמא:תלמידים +----+--------------+-------+ | 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
-
@שלומ
בכלל אימות יש ליצור את הכלל שרוצים בדוגמא הנ"ל כאשר יוכנס בשדה DATE תאריך גדול משלושה חודשים מהיום תופיע הודעת שגיאה ולא יהיה ניתן להמשיך הלאה עד לתיקון התאריך ע"פ הכלל
אולי אם אני יבין בדיוק איזה כלל אתה רוצה עם החודשים אני יוכל לנסח כלל ספציפי למקרה שלך -
תבדוק אם זה מתאים לך (קוד)
1568017048437-מסד-נתונים.zip -