בניית מסך שיבוצי נסיעות

פורומים אפיון ופיתוח פריוריטי בניית מסך שיבוצי נסיעות

  • Post
    שרית
    משתתף
    אני רוצה לבנות טבלת שיבוץ נסיעות ללקוחות –
    בטבלה יש לי :

    מפתח U –
    מס שיבוץ

    מפתח U נוסף שמורכב מהעמודות –
    רכב
    נהג
    יום תחילת נסיעה
    שעת תחילת נסיעה
    יום סיום נסיעה
    שעת סיום נסיעה

    איך אני נמנעת ממצב שמשתמש יוכל לשבץ בטבלה את אותו נהג + רכב בשעות חופפות?

    למשל: ברגע ששיבצתי אותו רכב+נהג דקה אחרי המערכת מאפשרת…

    מס שיבוץ רכב נהג תאריך תחילת נסיעה שעת תחילת נסיעה תאריך סיום נסיעה שעת סיום נסיעה
    1 123 500 23.07.2017 08:00 23.07.2017 09:00
    2 123 500 23.07.2017 08:01 23.07.2017 09:00

מוצגות 5 תגובות – 1 עד 5 (מתוך 5 סה״כ)
  • Replies
    אלמוני
    אורח
    את יכולה לבדוק שיבוץ באמצעות הפעלת CHECK-FIELD על השדה "שם נהג", וגם בשדה "רכש". הבדיקות תהיינה דומות אך שונות. כיון שאת רושמת רק את תחילת השיבוץ ואת סיומו, צריך לבדוק בתוך לולאה. משהו כמו

    :START = :$.STARTHOUR – 1:00;
    LABEL 10:
    :START = :START + 1:00;
    ERRMSG 5000 FROM YOURTABLE
    WHERE DRIVER = :$.DRIVER
    AND :START BETWEEN STARTHOUR AND FINISHHOUR
    AND CURDATE = :$.DATE;
    LOOP 10 WHERE :START < :$.FINISHHOUR;
    yitzchok
    משתתף
    IL
    אגבה את נעם ואוסיף שזה לא דבר שאפשר לעשות ברמת הטבלה בעזרת מפתחות.

    גם בדטהבייסים יותר גמישים כמו SQL Server (ולא רלוונטי אם הפריוריטי שלך על SQL Server כי אי אפשר להשתמש בכל היכולות) קשה עד בלתי אפשרי ליצור חוקיות כזו ברמת הטבלה בלבד.

    אני לא בטוח שצריכים לולאה כזאת.
    מספיק לחפש שיבוצים קיימים שההתחלתה של החדש או הסיום של החדש בתוכם, וגם שההתלחה שלהם או הסיום שלהם בתוך השיבוץ החדש המבוקש. כשיש חפיפה חייב להיות שלכל הפחות קצה אחת של משהו שווה לקצה של השני או בתוך התחום שלו.

      [ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
    אלמוני
    אורח
    כתבתי אפיון לפני שבוע עבור בית מלון, מתי חדר פנוי, והקוד שלי מבוסס על זה. אבל כאן זה ההיפך, מתי חדר (או נהג) תפוס.
    צריך לבדוק ש-FINISHHOUR במסך קטן ממינימום (STARTHOUR) בטבלה, או STARTHOUR במסך גדול ממקס (FINISHHOUR) בטבלה
    שרית
    משתתף
    תודה רבה לכם, ממש מעריכה את העזרה 🙂

    בסוף בניתי טריגר CHECK-FIELD על שדה שעת התחלה שבודק –
    תנאי מספיק – שנהג תפוס בטווח הזמן
    תנאי מספקי – שרכב תפוס בטווח הזמן

    ERRMSG 500 WHERE DRIVER = $.DRIVER
    AND $.SDATE BETWEEN SDATE AND EDATE
    AND $.STIME BETWEEN STIME AND ETIME

    ERRMSG 501 WHERE CAR = $.CAR
    AND $.SDATE BETWEEN SDATE AND EDATE
    AND $.STIME BETWEEN STIME AND ETIME

    yitzchok
    משתתף
    IL
    STIME זה השעה ב-SDATE, ו-ETIME זה השעה ב-EDATE?
    ה-SDATE וה-EDATE הם DATE אורך 8?

    אם הבנתי נכון זה לא רעיון טוב ויביא לדברים כמו מה שעשית שלא יביא לתוצאות נכונות.
    בלי ממש להוכיח את זה כל החושים שלי אומרים שהטריגר הזה לא יעשה מה שאת רוצה (מעבר לזה שאין בפדוקות אלה FROM אבל אולי את זה דילגת בכוונה)

      [ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
מוצגות 5 תגובות – 1 עד 5 (מתוך 5 סה״כ)
  • יש להתחבר למערכת על מנת להגיב.