כמה מסכי יעד לשדה אחד

פורומים אפיון ופיתוח פריוריטי כמה מסכי יעד לשדה אחד

  • Post
    sayo
    משתתף
    היי,

    יש לי שדה שמוצג בו מס' תעודה

    תעודה יכולה להיות הזמנה או חשבונית מס או תעודת משלוח וכדו'

    אני רוצה שכאשר משתמש עומד על שדה זה ולחוץ על F6, יגיע למסך הרלוונטי – הזמנות, חשבוניות  מס וכו'

    מכירה רק את השדה "שם מסך יעד" אבל זה רק למסך אחד.

    האם אפשרי להכניס כמה מסכי יעד?

    מקווה שמובן. תודה

מוצגות 15 תגובות – 1 עד 15 (מתוך 27 סה״כ)
  • Replies
    NoamN
    משתתף
    none
    ניסיתי לכתוב תשובה ארוכה אבל כל פעם האתר הזה לא שומר את מה שכתבתי.

    האם מדובר במסך או בדו"ח? – יש הבדלים.

    NoamN
    משתתף
    none
    עבור מסך: כתבתי על כך (באנגלית) כאן: https://progpitfalls.blogspot.com/2021/08/defining-dynamic-target-form-name-for.html
    NoamN
    משתתף
    none
    עבר דו"ח, כתבתי (באופן חלקי ובאנגלית) כאן: https://progpitfalls.blogspot.com/2021/05/conditional-opening-of-form-from-report.html
    NoamN
    משתתף
    none
    הסבר יותר מלא לגבי דו"חות: כאן אני מניח שהדו"ח מוצג כשלב שני מתוך פרוצדורה. אני משתמש ב-STACK8 לדו"חות "מעורבבים" כאשר יש צורך להציג נתונים מיותר מישות אחת. ב-KEY1 אני שומר מספר שמבדיל בין הישויות (נניח 1 = הזמנות לקוח, 2 = תעודות משלוח, 3 = הזמנות רכש וכד'). ב-KEY2 אני שומר את ערך מפתח ה-A. כתוצאה מכך, אפשר לשמור הפניות גם להזמנה מספר 1 וגם לתעודת משלוח מספר 1.

    עכשיו בדו"ח: יש שדה שמציג את מספר התעודה. ערכו יהיה תלוי בערך שנמצא ב-KEY1 לכן כותבים ביטוי STACK8.KEY1 = '1'  : ORDERS.ORDNAME : DOCUMENTS.DOCNO

    רצוי לשים סוגריים מסביב לביטוי כולו. אם יש יותר משתי ישויות, אז צריך להיות משפט יותר מורכב.

    NoamN
    משתתף
    none
    המשך: לכל ישות צריך להיות שדה עם שם מפתח ה-A (לדוגמא ORDERS.ORD) כאשר הביטוי לשדה הזה יהיה = (STACK8.KEY1 = 1 ? STACK8.KEY2 : 0)

    לכל ישות יהיה אותו הביטוי, תוך כדי שינוי של STACK8.KEY1

    NoamN
    משתתף
    none
    המשך: מגדירים שדה נסתר, EXEC.ENAME, עם מפתח מיון 9. לשדה הזה יהיה ביטוי בסגנון
    <p style="text-align: right;">= (STACK8.KEY1 = 1 ? 'ORDERS' : (STACK8.KEY1 = 2 ? 'DOCUMENTS_D' : …</p>
    או במילים, אם KEY1 = 1, אזי ENAME יהיה ORDERS, ואם KEY1 = 2, אזי ENAME יהיה DOCUMENTS_D וכו'. אלה שמות מסכים.

    שדה נסתר נוסף, EXEC.TYPE, עם ביטוי = 'F'. יש לפחות שתי שורות בטבלת EXEC עם שם ORDERS: אנחנו רוצים את השורה של המסך, לכן F. ללא השדה הזה, יופיעו אותם נתונים יותר מפעם אחת בדו"ח.

    עוד מכתב אחד…..

    NoamN
    משתתף
    none
    לאחר שהגדרנו את כל השדות הנדרשים, אנחנו מגיעים אל העיקר.

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

    אם הכל בסדר, יופיע קו כחול מתחת למספר התעודה בדו"ח.

    בהצלחה!

    NoamN
    משתתף
    none
    אגב, הרבה יותר קל כאשר מציגים נתונים מטבלה אחת אך משדות רבים, כמו AINVOICES, CINVOICES ו-FINVOICES או DOCUMENTS_A ו-DOCUMENTS_D. אם INVOICES, אזי

    INVOICES.TYPE = IVTYPES.TYPE

    INVOICES.DEBIT = IVTYPES.DEBIT

    IVTYPES.EXEC = EXEC.EXEC

    שוב, השדה החשוב יהיה EXEC.ENAME. כאן אין צורך בסוג הרשומה ב-EXEC.

    לגבי תעודות מלאי, הטבלה נקראת DOCTYPES במקום IVTYPES.

    sayo
    משתתף
    תודה רבה נועם על התשובה המפורטת.

    השאלה שלי התייחסה לשדה במסך.

    אנסה את מה שרשמת ביום ראשון בעז"ה. מקווה שאצליח:)

    sayo
    משתתף
    היי נועם,

    התעודות שאני מציגה הן הזמנות לקוח, תעודות משלוח וחשבוניות מס

    לא מצאתי שדה שיקשר את טבלת ההזמנות לטבלת EXEC

    אשמח לעזרה

    yitzchok
    משתתף
    IL
    טבלת EXEC לבד תספיק

    ENAME = ORDERS

    TYPE = F

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

    אני מצטערת אבל עדין לא הבנתי

    לפי מה שנועם כתב, צריך עמודת ZOOM1 שבו יש לרשום, אם זה קישור לטבלת חשבוניות, IVTYPES.EXEC

    או DOCTYPES.EXEC לתעודות.

    אני צריכה את שתיהן ובנוסף גם הזמנות.

    אשמח לפירוט איך אני רושמת את זה

    תודה

    NoamN
    משתתף
    none
    הגישה של IVTYPES/DOCTYPES לא עוזרת ברגע שיש משהו בנוסף.

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

    עמודת המסך :$.ENAME. עמודת טבלה ENAME, שם טבלה EXEC. ביטוי

    = (:$.A = 1 ? 'ORDERS' : (:$.A = 2 ? 'DOCUMENTS_D' ?
    (:$.A = 3 ? 'CINVOICES' : 'NULL')))

    כמוכן נדרש שורה EXEC.TYPE = 'F'. בביטוי למעלה, רושמים את שם מסך היעד. תסתכלי על הבלוג שכתבתי בהתחלה, https://progpitfalls.blogspot.com/2021/08/defining-dynamic-target-form-name-for.html

    sayo
    משתתף
    ממש תודה, הצליח!

    עכשיו זה מגיע למסך הנכון. השאלה אם הוא יכול לפתוח את המסך על התעודה הנכונה ולא על מסך ריק?

    NoamN
    משתתף
    none
    בשדה "תעודה" (זאת אומרת, איפה שמוצג מספר הזמנה, מספר תעודה וכו') את אמורה להגדיר מסך יעד ZOOM1 ואז מסך היעד נפתח עם התעודה המתאימה. אולי הגדרת את ה"מסך" הזה בשדה אחר?
מוצגות 15 תגובות – 1 עד 15 (מתוך 27 סה״כ)
  • יש להתחבר למערכת על מנת להגיב.