› פורומים › אפיון ופיתוח פריוריטי › דוח שגיאות – למשוך את LINE של GENERALLOAD
- This topic has 9 תגובות, 3 משתתפים, and was last updated לפני 7 שנים, 7 חודשים by
snoof123.
- Post
-
- פברואר 6, 2018 בשעה 5:42 pm
היי,
נושא: טיפול בשגיאות, ממשקים למסכים (דוח שגיאות טבלת ERRMSGS):בטבלת ERRMSGS , רק בתוך ההודעה עצמה כתובה לי באיזו רשומה בGENERALLOAD יש את השגיאה, אבל אני רוצה לחלץ עוד מידע מGENERALLOAD עבור אותה רשומה שלא הצלחתי לטעון.
האם יש דרך להשיג את מספר הרשומה שלא הצליחה להיטען מעוד מקום? ניסיתי לשחק עם הסטרינג של עמודת MESSAGE אבל ההודעות לא עקביות (יש לנו מערכת באנגלית) ולפעמים ההודעה כתובה בעברית, לעיתים באנגלית ובשני המקרים לפעמים הטקסט משתנה ואני לא מצליח לגזור את LINE לצורך שליפה מGENERALLOAD.
האם מישהו יודע איך אני מתמודד עם הסיטואציה הזו? (המלצות וכו'…)
- Replies
-
- פברואר 6, 2018 בשעה 9:00 pm
עמדתי באותה בעיה בעצמי אבל לא חשבתי על פתרון עד שקראתי את השאלה שלך. אפשר לכתוב דו"ח 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' .- פברואר 6, 2018 בשעה 9:07 pm
תודה על המענה נעם, השורה בERRMSGS לא נחתכת עם השורה בGENERALLOAD.אם השגיאה היא ששורה 5 לא נטענה בגלל משהו, השורה בERRMSGS תהיה 1 ולא 5.
לכן, ניסיתי בהתחלה לגזור את מספר השורה שבה השגיאה מההודעה עצמה (עמודת MESSAGE)
אבל אורך ותוכן הסטרינג משתנים וחלק גדול מהשגיאות שלי לא מכוסות (זה גם לא יעיל בקוד).האם התכוונת למשהו אחר ואולי לא כ"כ הבנתי.. (?)
- פברואר 6, 2018 בשעה 9:17 pm
אתה צריך להריץ את הממשק שלך עם פרמטר -stkerrתסתכל בsdk כתוב די ברור מה נשמר איפה.
אם אתה מסתבך אחפש לך דוגמא.
- פברואר 6, 2018 בשעה 9:23 pm
See Chapter 15: Advanced Programming ToolsUsing the STACK_ERR Table to Store Interface Messages
- פברואר 8, 2018 בשעה 12:50 am
האם עמודה loaded מתמלאת כאשר יש שגיאה?זה לא מספיק לרוץ על טבלת הטעינה ולבדוק איזו שורה לא נטענה?
- פברואר 8, 2018 בשעה 9:35 am
לדעתי, ניתן להפיק דו"ח של השורות בהן LOADED אינו שווה ל-Y – אלה השורות שלא נקלטו.יחד עם זאת, יש שתי בעיות מחשבתיות עם הדפסה מ-GENERALLOAD:
1. כיון שכל טעינה משתמשת בשדות שונים, יש צורך להציג את כל השדות מהטבלה (ויש הרבה!). אמנם בדרך כלל יש שימוש ב-INT1 ו-TEXT6, אבל לא ניתן לקבוע בוודאות.
2. הנתונים בטבלה אינם תמיד בר קריאה לבני אדם: הטבלה יכולה להכיל מספרים פנימיים של מפתחות ראשיות, כמו מספר פנימי של פריט וכד'.בנוסף, הדפסת השורות שלא נטענו לא תסביר מדוע השורות לא נקלטו.
מה ההבדל בין השימוש ב-STKERR לעומת הפקת הדו"ח INTERFACEERR? אני משער שיתנו את אותם הנתונים.
- פברואר 8, 2018 בשעה 9:46 am
כשאני נתקלתי בסוגיה זו פתרתי אותה על ידי שימוש בקרסור שלוקח רשומה אחת בכל פעם ומריץ את הממשק כאשר לממשק מסרתי שורה אחת בלבד. בסוף ריצת הממשק בדקתי האם התקבלו שגיאות ואם כן משכתי אותם לטבלת שגיאות פרטית.
כך אני יודע בוודאות שכל שורה שנכתבה לשגיאות הממשק היא של אותה שורה שנמסרה לממשק על ידי הקרסור.
- יש להתחבר למערכת על מנת להגיב.