דוח שגיאות – למשוך את LINE של GENERALLOAD

פורומים אפיון ופיתוח פריוריטי דוח שגיאות – למשוך את LINE של GENERALLOAD

  • Post
    snoof123
    משתתף
    היי,
    נושא: טיפול בשגיאות, ממשקים למסכים (דוח שגיאות טבלת ERRMSGS):

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

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

    האם מישהו יודע איך אני מתמודד עם הסיטואציה הזו? (המלצות וכו'…)

מוצגות 9 תגובות – 1 עד 9 (מתוך 9 סה״כ)
  • Replies
    אלמוני
    אורח
    עמדתי באותה בעיה בעצמי אבל לא חשבתי על פתרון עד שקראתי את השאלה שלך. אפשר לכתוב דו"ח ERRMSGS פרטי אשר מחבר בין מספר השורה ב-ERRMSGS לבין מספר השורה ב-GENERALLOAD. אבל החיבור חייב להיות מול הטבלה המלונקקת של GENERALLOAD.

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

    EXECUTE INTERFACE 'XXXX_COPYMANYCUST', SQL.TMPFILE, '-L', :$.GEN;
    GOTO 100 WHERE NOT EXISTS (SELECT 'X'
    FROM ERRMSGS WHERE USER = SQL.USER AND TYPE = 'i');
    EXECUTE WINACTIV '-R', 'INTERFACEERR';
    LABEL 100;

    במקום להפעיל את דו"ח הסטנדרטי INTERFACEERR, תוכל להפעיל את הדו"ח שלך, בצורה

    EXECUTE WINACTIV '-R', 'XXXX_INTERFACEERR', 'GENERALLOAD', :$.GEN

    בצורה הזו, אתה מעביר את הטבלה המלונקקת לדו"ח. החיתוך מול ERRMSGS נעשה באמצעות SQL.USER ו-TYPE = 'i' .

    snoof123
    משתתף
    תודה על המענה נעם, השורה בERRMSGS לא נחתכת עם השורה בGENERALLOAD.

    אם השגיאה היא ששורה 5 לא נטענה בגלל משהו, השורה בERRMSGS תהיה 1 ולא 5.
    לכן, ניסיתי בהתחלה לגזור את מספר השורה שבה השגיאה מההודעה עצמה (עמודת MESSAGE)
    אבל אורך ותוכן הסטרינג משתנים וחלק גדול מהשגיאות שלי לא מכוסות (זה גם לא יעיל בקוד).

    האם התכוונת למשהו אחר ואולי לא כ"כ הבנתי.. (?)

    123
    משתתף
    אתה צריך להריץ את הממשק שלך עם פרמטר -stkerr

    תסתכל בsdk כתוב די ברור מה נשמר איפה.

    אם אתה מסתבך אחפש לך דוגמא.

    123
    משתתף
    See Chapter 15: Advanced Programming Tools

    Using the STACK_ERR Table to Store Interface Messages

    snoof123
    משתתף
    כן 🙂 זה בדיוק מה שחיפשתי.
    תודה רבה לשניכם על העזרה.
    ofir
    משתתף
    האם עמודה loaded מתמלאת כאשר יש שגיאה?

    זה לא מספיק לרוץ על טבלת הטעינה ולבדוק איזו שורה לא נטענה?

    אלמוני
    אורח
    לדעתי, ניתן להפיק דו"ח של השורות בהן LOADED אינו שווה ל-Y – אלה השורות שלא נקלטו.

    יחד עם זאת, יש שתי בעיות מחשבתיות עם הדפסה מ-GENERALLOAD:
    1. כיון שכל טעינה משתמשת בשדות שונים, יש צורך להציג את כל השדות מהטבלה (ויש הרבה!). אמנם בדרך כלל יש שימוש ב-INT1 ו-TEXT6, אבל לא ניתן לקבוע בוודאות.
    2. הנתונים בטבלה אינם תמיד בר קריאה לבני אדם: הטבלה יכולה להכיל מספרים פנימיים של מפתחות ראשיות, כמו מספר פנימי של פריט וכד'.

    בנוסף, הדפסת השורות שלא נטענו לא תסביר מדוע השורות לא נקלטו.

    מה ההבדל בין השימוש ב-STKERR לעומת הפקת הדו"ח INTERFACEERR? אני משער שיתנו את אותם הנתונים.

    ofir
    משתתף
    כשאני נתקלתי בסוגיה זו פתרתי אותה על ידי שימוש בקרסור שלוקח רשומה אחת בכל פעם ומריץ את הממשק כאשר לממשק מסרתי שורה אחת בלבד. בסוף ריצת הממשק בדקתי האם התקבלו שגיאות ואם כן משכתי אותם לטבלת שגיאות פרטית.
    כך אני יודע בוודאות שכל שורה שנכתבה לשגיאות הממשק היא של אותה שורה שנמסרה לממשק על ידי הקרסור.
    snoof123
    משתתף
    עשיתי בלי לולאות.
    לגבי LOADED אני רק בודק מה נטען ומה לא. אח"כ במקום אחר אני מנהל לוג של שגיאות באמצעות הטכניקה שינאי הסביר עם STACK_ERR.
מוצגות 9 תגובות – 1 עד 9 (מתוך 9 סה״כ)
  • יש להתחבר למערכת על מנת להגיב.