קישור מסכים

פורומים אפיון ופיתוח פריוריטי קישור מסכים

  • Post
    Leon
    משתתף
    שלום לכולם,
    יכול להיות מישהוא מכיר את הבעיה שאני נטקלתי בה?

    ברצוני לקשר מסך "כרטיס פריט" לפרויקטים.
    כדי לבצע את הנ"ל הוספתי לטבלת PART את השדה
    LEON_DOCT מסוג INT ואחר כך ביצעתי במסך LOGPART קישור הבא: (שם עמודה LEON_DOCT)
    DOCUMENTS DOC PART LEON_DOCT
    עם מזהה 5
    הוספתי גם כן עמודת פרויקט למסך LOGPART:
    DOCUMENTS DOCNO
    עם מזהה 5 ובו טריגר LEON_CHOOSE_FIELD זהה ל
    CHOOSE_FIELD של מסך DOCUMENTS_p(פרויקטים)
    הכל נראה בסדר אבל כאשר מגדירים פרויקט למק"ט ב"כרטיס פריט" ערך עמודת קישור LEON_DOCT נשאר 0 ובעקבות זה כאשר יוצאים ממסך, הפרויקט שהוגדר למק"ט מתאפס.
    מה עשיתי לא נכון?

    VILLEO

מוצגות 6 תגובות – 1 עד 6 (מתוך 6 סה״כ)
  • Replies
    yitzchok
    משתתף
    IL
    אני לא אכנס לכל הפרטים אבל נראה לי שיש לך בעיה זו בגלל שDOCNO הוא לא ייחודי בטבלה לכן בחירת DOCNO יא קובע אוטומטית DOC. רק בשילוב TYPE עם ערך 'p' תקבל DOC.

    פתרון פשוט (לא בדקתי אבל נראה לי) דורש 2 דברים:

    הפעלת CHECK-FIELD שיתן שגיאה עם מקלידים מספר שהוא לא נמצא בטבלת DOCUMENTS עם TYPE של p – ה-CHOOSE-FIELD נותן רק פרויקטים אבל אפשר להקליד שם הכל

    הפעלת POST-FIELD שיחפש ב-DOCUMENTS את ה-DOCNO ביחד עם TYPE של 'p' ויחזיר ערך של DOC לתוך LEON_DOCT

    לדעתי זה יעבוד אבל שוב לא בדקתי לראות שאין בעיה בלוגיקה שלי

      [ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
    Leon
    משתתף
    בדיוק בעזרת טריגר POST_FIELD פתרתי את הבעיה.
    אבל השאלה נשארה: למה כאשר מגדירים מס' פרויקט (אפילו נכון) משתנה של עמודת פרויקט.$: מקבלת ערך הפרויקט אלא במשתנה של עמודת קישור VULC_DOCT.$: נשאר ערך 0?(בדקתי בעזרת POST_FIELD נוסף). יכול להיות בגלל שמפתח UNIQUE של טבלת DOCUMENTS מורכב משני עמודות: DOCNO ו-TYPE?
    yitzchok
    משתתף
    IL
    שמח שהצלחת

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

    אפשרות אחרת היתה להביא למסך TYPE של DOCUMENTS (5) ולדאוג שלאחר הכנסת ערך לDOCNO תשים p ב-TYPE ואז זה היה מושך את הDOC לבד. יש דוגמה ב-ORDERS.F/DOCNO/POST-FIELD

    שוב אני מציע שתדאג להגביל למספר פרויקט בלבד ע"י CHECK-FIELD (תשווה לDOCNO ב-ORDERS כנ"ל)

      [ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
    Leon
    משתתף
    yitzchok,

    עובד יפה ואוטומתית! תודה רבה לך על עיוץ!

    היתי רוצה רק להבין מתי נוצר ב"מוח" פריוריטי ערך עמודת קישור LEO_DOCT?
    בPOST_FIELD טריגר של עמודת פרויקט הוספתי לפי המלצתך משפת
    LEO_DTYPE = (:$.@ " ? 'p' : '\0'.$:
    ואחריו אני בודק את הערך משתנה מסך בעמודת קישור.
    אז הוא שווה ל0.
    כאשר אני בודק אותו הערך בטריגר POST_UPDATE אז הוא כבר קיבל את הערך הנכון. תוכל להסביר לי בשתי מילים למה הערך הנ"ל נוצר ומתי?
    תודה מראש.

    VILLEO

    yitzchok
    משתתף
    IL
    יש שרשרת של טריגרים. ובין הטריגרים יש פנימיים שאנחנו לא רואים אלא בדיבוג מסכים.

    אני לא בקי בסדר הטריגרים אבל הייתי מנחש שזה עובד איכשהו כך:

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

    כל זה בשרשרת. ז"א בגלל ה-POST-FIELD שלך רצה POST-FIELD (פנימי) של TYPE וזה החליט שיש מספיק לזהות שורה ומשכה את הרשומה כולה כולל DOC.

    אם תרצה לראות בעצמך תוכל להריץ את המסך במצב דיבוג:

    [code:1]WINFORM LOGPART -g d:/tmp/logpart.dbg[/code:1]

    (מ"כלים" "הפעלת ישות", ובהנחה שיש לך ספרית d:/tmp, תשנה לפי הצורך)

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

      [ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
    Leon
    משתתף
    נהדר!
    תודה רבה!
מוצגות 6 תגובות – 1 עד 6 (מתוך 6 סה״כ)
  • יש להתחבר למערכת על מנת להגיב.