עדכון מקסימום תאריך אך עם תנאי נוסף

פורומים אפיון ופיתוח פריוריטי עדכון מקסימום תאריך אך עם תנאי נוסף

  • Post
    sayo
    משתתף
    היי,
    בניתי דו"ח שיש בו 2 תאריכים מטבלאות שונות
    בתאריך הראשון שמתי I (מינימום) בחישוב עמודה
    ובתאריך השני שמתי M (מקסימום) בחישוב העמודה
    אני רוצה להוסיף לתאריך השני תנאי >= (גדול או שווה) מהתאריך הראשון.
    איך אני יכולה להוסיף ביטוי כזה בלי שאקבל שגיאה?

    תודה

מוצגות 15 תגובות – 16 עד 30 (מתוך 48 סה״כ)
  • Replies
    yitzchok
    משתתף
    IL
    לא מצ"ב
    נסי שנית בבקשה
      [ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
    sayo
    משתתף
    עכשיו מצ"ב
    אלמוני
    אורח
    דווקא אני רואה את הדו"ח בפוסט קודם שלך ולא באחרון. עכשיו צריך לדעת מה הביטויים בשדות השונים כדי לשחזר את הדו"ח ולגלות מה הבעיה.
    תזכירי מה התנאי שאת רוצה – במילים (כמו "אני רוצה שתאריך התעודה לא יהיה גדול יותר מ…").
    אלמוני
    אורח
    כמה הערות על מה שאני רואה:
    1. אני חושש שתהיה בעיה בשדה 80 – גם חיבוב עמודה M וגם ביטוי.
    2. INVOICES.TYPE מופיע פעמיים – 807 ו-811.
    3. רצוי לחבר בין DOCUMENTS.TYPE לבין TRANSORDER.TYPE, גם עם ביטוי

    הערה 1 הכי חשובה.

    אלמוני
    אורח
    מוטב להוסיף TRANSORDER.ORDI = INVOICEITEMS.ORDI ולהסיר את החיבור בין TRANSORDER ל-PART. אחרת יהיו שורות שתופענה כמה פעמים.
    sayo
    משתתף
    1. את הביטוי הוספתי בהמלצתכם אבל עכשיו הורדתי אותו כי הוא גם ככה לא עוזר
    2. צודק, מחקתי
    3. חיברתי
    את TRANSORDER.ORDI = INVOICEITEMS.ORDI אני לא חושבת שאני צריכה להוסיף כי מה שאני מביאה זה תאריך מחשבונית אחרונה שנוצרה עם מוצר זה ללקוח זה, ז"א לתעודה זו לא מחוברת עדין חשבונית…

    הבקשה שלי בכל הנושא הזה הוא שתאריך החשבונית יהיה שווה או נמוך מתאריך תעודת ההחזרה.
    המטרה היא להציג את התאריך האחרון שבו נמכר ללקוח המוצר לבין התאריך בו הוא מחזיר אותו.

    שוב תודה על העזרה!

    sayo
    משתתף
    אני שמחה לבשר שמצאתי סופסוף את הפתרון.
    הורדתי את (MIN(TODOLIST.UDATE כביטוי וכך יכולתי לשים F בחישוב עמודה.
    בעמודה INVOICEITEMS.IVDATE השארתי M בעמודת חישוב והוספתי לו ביטוי <= (#70) וכך זה הסתדר.
    תודה רבה לכם!!!
    sayo
    משתתף
    יש לי בעיה נוספת בדו"ח זה.
    אני רוצה להוסיף שורת ביטוי החסירה את תאריך החשבונית בתאריך התעודה על מנת לקבל את הפרש הימים בין התאריכים.
    ניסיתי לעשות
    ATOI(DTOA(#70,'DDMMYY')) - ATOI(DTOA(#80,'DDMMYY'))
    כמובן שזה לא עבד לי ועוד כמה ניסיונות משחק אחרים…
    אודה שוב לעזרתכם:)
    yitzchok
    משתתף
    IL
    בדיוק לזה נועד F (במקביל ל-M ו-I)
    אבל בגלל שהביטויים שלך ב-70 ו-80 לא כוללים פונקציות מינימום ומקסימום את צריכה לרשום MIN ו-MAX מסביב לקשרים לביטויים של עמודות אלה.
    דהיינו:
    ATOI(DTOA(MIN(#70),'DDMMYY')) - ATOI(DTOA(MAX(#80),'DDMMYY'))
      [ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
    yitzchok
    משתתף
    IL
    במחשבה שניה, אם הסינון עבד בגדול שווה #70 ולא גדול שווה (MIN(#70 אולי לא צריכים את ה-MIN ו-MAX.
    אבל אני חושב שכן צריכים כי דווקא כשעושים F המטרה זה כדי לאפשר לשים את הפונקציות האלה בתוך הביטוי.
    תראי מה יעבוד.

    בכל מקרה אני אשמח לראות את כל השאילתא שיוצא מתוך המחולל הזה כדי לראות שאכן התנאי יצא נכון.

    תוכלי אולי לעשות ב-WINDBI פעולת Dump > Report ולהדביק כאן את התוצאה?

      [ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
    אלמוני
    אורח
    משהו קטן בהשוואת התאריכים: אין צורך בכל ה-DTOA ו-ATOI.
    אפשר לכתוב כך

    ):DATE1 - :DATE2) / 24:00

    הרי התאריכים שמורים כמספרים (מספר דקות מאז 01/01/88 00:00), לכן אפשר להסיר אחד מהשני, לחלק ב-24:00 (1440, מספר דקות ביום) ואז לקבל את מספר הימים.
    yitzchok
    משתתף
    IL
    נעם כל הכבוד.

    אני חשבתי להציע דבר כזה אבל עזבתי את זה, והביטוי שלך יותר מסודר ממה שאני חשבתי להציע.

    הייתי מוסיף אזהרה אחת (וזאת היתה חלק מהסיבה שלא כתבתי על זה) – יש לנו כאן שני ערכים. אחד (CURDATE) תאריך ללא שעה (אפשר לחשוב על זה חצות לילה בתחילת היום) והשני (UDATE) כולל שעה. כך שיכול להיות שאם עושים זה מינוס זה, נקבל יום אחד פחות ממה שמתקבל כרגע, כי הפונקציות שיש עכשיו מבטלות את השעה.

    תוך כדי כתיבת הנ"ל חשבתי שאפשר לעשות ככה במקום, וזה צריך לפתור את הבעיה הזאת (כל עוד חלקי 24:00 מעגל למספר ימים שלמים, כפי שאני זוכר):

    (:DATE1 / 24:00) - (:DATE2 / 24:00)
    (יתכן שזה לא מופיע תקין, ניסיתי…)

      [ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
    אלמוני
    אורח
    אם היינו בסביבת תכנות רגילה, בה חילוק נחשב כפעולה "יקרה", עדיף פשוט להוסיף 1 לביטוי שלי.
    sayo
    משתתף
    לא עובד.
    ניסיתי לחלק רק את התאריך הראשון וגם לא עובד.
    מתקבלת שגיאה "TODOLIST.UDATE Illegal reference in the GROUP BY clause "
    רשמתי: 24:00 / #70
    וניסיתי גם: MIN(TODOLIST.UDATE) / 24:00
    yitzchok
    משתתף
    IL
    תורידי את התנאי ששמת (שצריך להחזיר את הדו"ח למצב שפולט משהו, רק ללא סינון)
    והעלי כאן בבקשה עוד פעם הגדרת העמודות מאקסל כמו שעשית קודם
    וגם DUMP של השאליתא של הדו"ח כפי שהסברתי לפני כמה הודעות

    באמת אני לא בטוח שהורדת התנאי יעזור – אני חושב שיש לך עוד עמודה שמפריעה – כאילו את מנסה להציג את TODOLIST.UDATE
    העמודה הזאת מוזכרת בשום מקום מעבר לעמודה עם M או I??

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