מתי לשחרר טבלה מלונקקת?

פורומים אפיון ופיתוח פריוריטי מתי לשחרר טבלה מלונקקת?

  • Post
    ofir
    משתתף
    שלום חברים,

    בתוכנית שכתבתי,

    אני מלנקק בתחילה 5 טבלאות שונות .

    במידה ואחד מהלינקים נכשל אני שולח את התוכנית לשורה אחרונה, ובה מודיע על כשלון.

    במידה והכל תקין, בסוף התוכנית כל הטבלאות משוחררת ונמחקות.

    שאלתי:

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

    חשבתי על שני קטעים כי במצב של כשלון אני מעוניין לשלוח מייל אודות הכשלון.

מוצגות 12 תגובות – 1 עד 12 (מתוך 12 סה״כ)
  • Replies
    ofir
    משתתף
    במידה וארבעת הטבלאות מצליחות בלינק, ורק האחרונה נכשלת בלינק.
    האם לשלוח את התוכנית לקטע שבו כל הטבלאות משוחררות מהלינק?
    Tali
    משתתף
    אם הבנתי נכון, כרגע אתה משחרר את כל הטבלאות תחת אותו לייבל.
    הדבר הנכון לעשות הוא לייבל נפרד עם דילוג נפרד מתאים עבור כל טבלה מלונקקת.
    כך למשל אם לינקקת 5 טבלאות, יהיו לך 5 לייבלים שונים.
    snoof123
    משתתף
    מה המשמעות של לעשות UNLINK לטבלה שלא הצלחתי לעשות לה LINK?
    האם יש לזה השלכות מסוימות על הקוד?

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

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

    123
    משתתף
    את לא עושה unlink לטבלה שלא הצלחת לעשות לה link. שחרור הטבלאות הוא בסדר הפוך מבחינת הlabel ב link.
    Tali
    משתתף
    ינאי, זה מה שהתכוונתי
    תודה על ההבהרה 🙂
    אלמוני
    אורח
    בחזרה לשאלה המקורית: מה קורה כאשר פעולת LINK נכשלת? צריך להציג הודעת שגיאה באמצעות ERRMSG אשר תסיים את הפרוצדורה מיד. אחרת כל התיחסות לטבלה שבגינה נכשל ה-LINK תהיה לטבלה האמיתית, לטוב או לרע. אפשר לדאוג לכך שהודעת השגיאה תודיע איזה LINK נכשל באמצעות שמירת נתון כלשהו שמשתנה באמצעות PAR1 ולהציג את הערך בהודעה.

    לא תמיד יש צורך בפעולת UNLINK – היא נדרשת במיוחד כאשר בתחילת הפרוצדה בוצע LINK לטבלה ובהמשך הפרוצדורה רוצים להתיחס לטבלה המקורית. ניתן לעשות זאת באמצעות ALIAS או אפשר לבצע UNLINK לטבלה. אני זוכר שהיתה בעיה כזו לחברי SNOOF כאשר כתב פרוצדורה להקמת תעודת מלאי על סמך תעודת מלאי אחרת. בהתחלה ביצע LINK אל DOCUMENTS כדי לקבל את המסמך המקורי. בסוף התכנית הוא רצה לשלוף מ-DOCUMENTS את התעודה החדשה – אך מאחר והטבלה היתה מלונקקת, התעודה החדשה לא היתה בתוך הטבלה הזו. לכן היה צריך לבצע UNLINK קודם ואז לשלוף שוב מ-DOCUMENTS.

    snoof123
    משתתף
    חחח אתה זוכר היטב, תודה על ההסבר.
    אבל באמת מסקרנות, מה המשמעות להרצת פקודת UNLINK לטבלה שלא עשינו לה LINK?
    PriorityDev
    משתתף
    IL
    למה צריך להציג הודעת שגיאה באמצעות ERRMSG אשר תסיים את הפרוצדורה מיד?

    מה עם לעשות UNLINK לטבלאות שלונקקו לפניכן???
    למיטב ידיעתי, אם לא עושים UNLINK לטבלה שלונקקה, זה יכול לשבש עבודה מול טבלה זו אחר כך.

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

    אלמוני
    אורח
    בתכניות הסטנדרטיות של פריוריטי, תמיד יש ERRMSG אם LINK נכשל. לדוגמא, תסתכל על שלב 45 של פרוצדורה PARTTREE.

    לפי מה שאני מבין, לא נגרם כל נזק אם לא מבוצע UNLINK *** בתנאי שלא רוצים להשתמש בטבלה האמיתית בהמשך אותו שלב SQLI ****. ברגע שיש LINK, כל התיחסות תהיה לטבלה המלונקקת. לכן אין ממש חובה לבצע UNLINK.

    אזהרה: אם אתה כותב פרוצדורה עם שלבים רבים שמתיחסים לטבלה המלונקקת, רצוי בתחילת כל שלב לבצע LINK ובסוף כל שלב לבצע UNLINK. תקבל הודעת שגיאה אם אין UNLINK בסוף שלב אחד ויש LINK לאותה טבלה בשלב מאוחר יותר.

    יש לי קשר טוב עם כמה מהמפתחים הראשיים לשעבר של פריוריטי. אשאל אותם מה קורה אם לא מבצעים UNLINK.

    PriorityDev
    משתתף
    IL
    גם פרוצדורות סטנדרטיות אנשים חיים כתבו.
    אני לא חושב שזאת ראיה.
    יש גם פרוצדורות סטנדרטיות שאין בהם אפילו ERRMSG – למשל WORKORDERS, COLDECIMAL ועוד הרבה, וזה בטח לא תקין.

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

    לכן הדרך הנכונה היא לדאוג שלכל LINK שהתבצע בהצלחה יתבצע UNLINK.

    ofir
    משתתף
    היי נעם

    לגבי אי שחרור לינק

    האם בדקת את שכתבת?

    אלמוני
    אורח
    שכחתי מזה. אכן דיברתי איתם אבל לא קיבלתי תשובה ברורה. הסבירו לי שאם התכנית מתבצעת כ-PROCESS נפרד, אזי כל הקבצים הזמניים ייסגרו כאשר התכנית מסתיימת. הייתי קורא לזה TMI, מה גם זה לא בדיוק ברמה הנדרשת שאנחנו רואים, דו"חות ופרוצדרות.

    חוק אצבע: תמיד לבצע UNLINK על טבלה מלונקקת.

מוצגות 12 תגובות – 1 עד 12 (מתוך 12 סה״כ)
  • יש להתחבר למערכת על מנת להגיב.