› פורומים › אפיון ופיתוח פריוריטי › קישור מסכים
- This topic has 6 תגובות, 2 משתתפים, and was last updated לפני 15 שנים, 5 חודשים by Leon.
- Post
-
- יוני 4, 2009 בשעה 11:48 am
שלום לכולם,
יכול להיות מישהוא מכיר את הבעיה שאני נטקלתי בה?ברצוני לקשר מסך "כרטיס פריט" לפרויקטים.
כדי לבצע את הנ"ל הוספתי לטבלת 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
- Replies
-
- יוני 4, 2009 בשעה 12:04 pm
אני לא אכנס לכל הפרטים אבל נראה לי שיש לך בעיה זו בגלל שDOCNO הוא לא ייחודי בטבלה לכן בחירת DOCNO יא קובע אוטומטית DOC. רק בשילוב TYPE עם ערך 'p' תקבל DOC.פתרון פשוט (לא בדקתי אבל נראה לי) דורש 2 דברים:
הפעלת CHECK-FIELD שיתן שגיאה עם מקלידים מספר שהוא לא נמצא בטבלת DOCUMENTS עם TYPE של p – ה-CHOOSE-FIELD נותן רק פרויקטים אבל אפשר להקליד שם הכל
הפעלת POST-FIELD שיחפש ב-DOCUMENTS את ה-DOCNO ביחד עם TYPE של 'p' ויחזיר ערך של DOC לתוך LEON_DOCT
לדעתי זה יעבוד אבל שוב לא בדקתי לראות שאין בעיה בלוגיקה שלי
[ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]- יוני 4, 2009 בשעה 1:48 pm
בדיוק בעזרת טריגר POST_FIELD פתרתי את הבעיה.
אבל השאלה נשארה: למה כאשר מגדירים מס' פרויקט (אפילו נכון) משתנה של עמודת פרויקט.$: מקבלת ערך הפרויקט אלא במשתנה של עמודת קישור VULC_DOCT.$: נשאר ערך 0?(בדקתי בעזרת POST_FIELD נוסף). יכול להיות בגלל שמפתח UNIQUE של טבלת DOCUMENTS מורכב משני עמודות: DOCNO ו-TYPE?- יוני 4, 2009 בשעה 2:03 pm
שמח שהצלחתאכן אתה צודק (ולזה התכוונתי בפיסקה הראשונה שלי – "יא" היה אמור להיות "לא"). כדי שקישור כזה יעבוד אוטומטית צריכים לדאוג שיש שם הערכים של כל המפתחות.
אפשרות אחרת היתה להביא למסך TYPE של DOCUMENTS (5) ולדאוג שלאחר הכנסת ערך לDOCNO תשים p ב-TYPE ואז זה היה מושך את הDOC לבד. יש דוגמה ב-ORDERS.F/DOCNO/POST-FIELD
שוב אני מציע שתדאג להגביל למספר פרויקט בלבד ע"י CHECK-FIELD (תשווה לDOCNO ב-ORDERS כנ"ל)
[ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]- יוני 5, 2009 בשעה 9:16 am
yitzchok,עובד יפה ואוטומתית! תודה רבה לך על עיוץ!
היתי רוצה רק להבין מתי נוצר ב"מוח" פריוריטי ערך עמודת קישור LEO_DOCT?
בPOST_FIELD טריגר של עמודת פרויקט הוספתי לפי המלצתך משפת
LEO_DTYPE = (:$.@ " ? 'p' : '\0'.$:
ואחריו אני בודק את הערך משתנה מסך בעמודת קישור.
אז הוא שווה ל0.
כאשר אני בודק אותו הערך בטריגר POST_UPDATE אז הוא כבר קיבל את הערך הנכון. תוכל להסביר לי בשתי מילים למה הערך הנ"ל נוצר ומתי?
תודה מראש.VILLEO
- יוני 7, 2009 בשעה 11:35 am
יש שרשרת של טריגרים. ובין הטריגרים יש פנימיים שאנחנו לא רואים אלא בדיבוג מסכים.אני לא בקי בסדר הטריגרים אבל הייתי מנחש שזה עובד איכשהו כך:
בכל עמודה של טבלה מיובאת שמקושרת לטבלת הבסיס (או כל טבלה אחרת?) יש טריגר פנימי שבודק האם הכניסו ערכים לכל שדות המפתח שנותנים לאתר רשומה אחת. ואז מושכים את כל הערכים של הרשומה, כולל המפתח לתוך עמודת הקישור.
כל זה בשרשרת. ז"א בגלל ה-POST-FIELD שלך רצה POST-FIELD (פנימי) של TYPE וזה החליט שיש מספיק לזהות שורה ומשכה את הרשומה כולה כולל DOC.
אם תרצה לראות בעצמך תוכל להריץ את המסך במצב דיבוג:
[code:1]WINFORM LOGPART -g d:/tmp/logpart.dbg[/code:1]
(מ"כלים" "הפעלת ישות", ובהנחה שיש לך ספרית d:/tmp, תשנה לפי הצורך)
תנסה לבצע שם המינימום – תחפש פריט, שים קשר וצא. אם תעשה יותר צמדי תלך לאיבוד בתוך הקובץ. הקובץ מגלה את כל מה שקורה בפנים כולל ההפעלות הפנימיות. אם תזכור את זה תבין יותר טוב מה שקורה שם, יש הרבה הרבה פעולות.
[ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
- יש להתחבר למערכת על מנת להגיב.