הוספת תנאי לטריגר POST-FIELD

פורומים אפיון ופיתוח פריוריטי הוספת תנאי לטריגר POST-FIELD

  • Post
    chani v
    משתתף
    שלום רב,

    אני מעוניינת שלא יהיה ניתן במסך הזמנות לקוח להעביר לסטטוס מסוים במידה ולא פתוח ללקוח חשבונית ( במסך חשבוניות וקבלות להזמנה)

    כתבתי את הטריגר הנ"ל: POST-FIEL

    )   ERNMSG 9000 WHERE EXISTS
    SELECT 'X' FROM INVOICES
    WHERE TOTPRICE = 0
    AND CUST = :$.CUST
    );

    כעת שמעבירים סטטוס אני מקבלת הודעת שגיאה אך אני מעוניינת שרק שמעבירים לסטטוס מסוים הטריגר יופעל כיצד יש להוסיף את התנאי הנ"ל?

    אודה לעזרתכם!

    תודה רבה!

     

מוצגות 2 תגובות – 1 עד 2 (מתוך 2 סה״כ)
  • Replies
    snoof123
    משתתף
    עריכה: לא שמתי לב קודם שהשאילתה שלך לא נותנת לך מענה – שימי לב שיש לך 2 טעויות מהותיות שמוסברות מטה :-).

    1. את מעוניין לדעתי בשאילתה הבאה:

    ERRMSG 900 WHERE EXISTS(SELECT 'X'

    FROM INVOICES

    WHERE CUST = :$.CUST

    );

    ***חשוב לציין שהשאילתה מראש לא נראית שעומדת בתנאים שאת מעוניינת והייתי בוחן במקומך את התהליך העסקי לעומק כדי להבין באיזה מצבים של אי חשבוניות צריך לתת שגיאה. כלומר, האם להתייחס לחשבוניות מבוטלות כואלידיות? כי בקוד שלנו, אם תהיה ללקוח הזה חשבונית מבוטלת המערכת תתייחס אליה כאילו קיימת חשבונית כבר ללקוח ולא תציג שגיאה).

     

    2.

    POST-FIELD קורה אחרי שכבר הפעולה קרתה.

    כלומר: בהנחה שהצלחתי לעדכן בהצלחה את השדה, הקוד שלך מתחיל לרוץ.

     

    מה שאת צריכה זה CHECK-FIELD, כלומר, לפני שהצלחתי לצאת מהשדה, המערכת מריצה את הקוד שלך ובודקת ואם הואליציה קיבלה שגיאה, היא תוצג ולא תאפשר למשתמש לבצע את הפעולה שלו.

    post – תמיד יהיה אחרי שהפעולה קרתה (לכן רצוי להשתמש בו עבור פעולות עדכון כגון: כל פעם שהמשתמש משנה את הערך, הקוד מתחיל לרוץ וממלא ערכים במקומות נוספים).

    PRE\CHECK – תמיד יהיה לפני שהפעולה שהמשתמש מנסה לבצע קרתה. (לכן רצוי להשתמש בטריגרים מסוג זה עבור ואלידציות – כמו במקרה שלך).

     

    • התגובה הזו עודכנה לפני לפני 2 שנים, 8 חודשים ע"י snoof123.
    chani v
    משתתף
    This reply has been marked as private.
מוצגות 2 תגובות – 1 עד 2 (מתוך 2 סה״כ)

תגיות: 

  • יש להתחבר למערכת על מנת להגיב.