הדפסת טופס תקלה

פורומים אפיון ופיתוח פריוריטי הדפסת טופס תקלה

  • Post
    אלמוני
    אורח
    שלום לכולם.
    הוספתי בטופס טקלה שדות מספר ושם הלקוח.
    קיים דוח במערכת "הדפסת טופס תקלה" ואני רוצה להוסיף לפרוצדורה את INPUT מספר לקוח, כדי לקבל את כל התלונות הקשורות ללקוח מסוים.
    מה אני צריך להוסיף ואיפה?

    תודה

מוצגות 11 תגובות – 1 עד 11 (מתוך 11 סה״כ)
  • Replies
    yitzchok
    משתתף
    IL
    אי אפשר להוסיף לפרוצדורה הקיימת

    יש להעתיק את הפרוצדורה ולהוסיף פרמטר מסוג FILE על CUSTOMERS.CUSTNAME לשלב INPUT

    יש להעביר את הקובץ הזה כפרמטר בעל אותו שם לדו"ח עם שם הטבלה (CUSTOMERS נניח) בשדה "ערך"

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

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

    אני מקווה שתשובה זו מספיק מפורטת בשבילך. אם לא תשאל עוד

      [ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
    אלמוני
    אורח
    לא כל כך הבנתי איך להעביר את הקובץ כפרמטר
    אתה יכול להסביר בפירוט?

    תודה

    yitzchok
    משתתף
    IL
    שלב א': קלט

    בשלב INPUT של הפרוצדורה תוסיף שורה:
    שם פרמטר: CUS
    כותרת:
    מיקום:
    רוחב: 16 לפי CUSTNAME, או 0
    קלט: I
    ערך:
    טיפוס: FILE
    עמודת טבלה: CUSTNAME
    שם טבלה: CUSTOMERS

    תוצאת הגדרה זו היא לתת לך קובץ שהוא טבלה זמנית בצורת CUSTOMERS המחזיק את הרשומות אותן המשתמש בוחר

    כדי להתשמש בזה יש צורך בשלב ב':

    שלב ב': קישור לדו"ח

    בפרוצדורה להיכנס לפרמטרים של השלב של הדו"ח
    ב"שם פרמטר" לרשום CUS
    זה יביא "FILE" ל-"טיפוס"
    יש להוסיף בשדה "ערך" את שם הטבלה מתוך הדו"ח.

    עשכיו אני זוכר שמדובר בעמודה פרטית! כן תצטרך להוסיף טבלה לדו"ח. לבד זה לא מחייב העתקת הדו"ח אבל אני מדמיין שתרצה לשנות את המיון ואולי קיבוץ בדו"ח וזה כן יחייב העתקה אז לך תעתיק את הדו"ח. אז תתחיל בהוספת העמודה שהוספת לטבלה, ותחבר ל-CUST של CUSTOMERS, נניח במזהה 5.

    מזהה 5 דורש ששם הטבלה שאתה כותב ב"ערך" יהיה CUSTOMERS5. אם תשתמש במזהה 0 אז סתם CUSTOMERS.

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

    בהצלחה

    עניין אחר:

    מה קורה כשהמשתמש לא קבע לקוח לתקלה? אני חושש שכל התקלות האלה עלולות להופיע בכל דו"ח.

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

    שלב א' ביצעתי
    גם הוספתי טבלה לדוח
    אך אני עדיין לא מבין את השלב ב', איפה בדיוק אני רושם ?

    תודה

    yitzchok
    משתתף
    IL
    אחד משלבי הפרוצדורה צריך להיות הדו"ח שלך (סוג R)
    במסך בן פרמטרים של שלב זה תוסיף שורה עם אותו קוד שיש לקלט שהוספת (CUS)
      [ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
    אלמוני
    אורח
    עשיתי הכל, אבל עדיין מקבל בדוח את כל התפסים גם אלו שלא קשורים לאותו לקוח
    ???
    yitzchok
    משתתף
    IL
    הוספת טבלת CUSTOMERS לדו"ח?

    אם כן, הייתי מציע לבדוק אם אתה מקבל את כל הטפסים או רק אלה של הלקוח שביקשת וגם אלה שאין להם לקוח. קבע לקוח אחר בטופס מסוים ותראה אם מקבלים אותו. יכול להיות שצריכים תנאי של
    [code:1]CUSTOMERS.CUST 0[/code:1]
    אבל אז אי אפשר להשתמש בדו"ח גם כדו"ח כללי אא"כ יודעים שלכל טופס יש לקוח. (יש פתרונות לזה אבל לא מאוד פשוטים)

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

    אני חייב להתנצל כי אני לא עשיתי שיעורי בית כראוי. (תודות לליאור שהפנה את תשומת ליבי לעובדה)

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

    אני צריך לכתוב לך הסבר מתאים למסמכים אך אין לי זמן לזה ממש עכשיו – בע"ה מאוחר יותר היום.

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

    הספקתי להסתכל בזה; אני מתנצל על העיכוב.

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

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

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

    הנה תוכנית העבודה, אני מקווה שזה רלוונטי.

    אני אספר כאילו עושים מההתחלה, ואני אציע תוך כדי מה אתה צריך לעשות היות וכבר התחלת לפי מה שאני תיארתי בעבר.

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

    2. קלט הראשי שלנו בפרוצדורה יהיה לקוחות. יש לשנות את "עמודת טבלה" בפרמטר PAR ל-CUSTNAME ו-"שם טבלה" ל-CUSTOMERS. – תמחוק את שורת ה-CUS שהמלצתי מוקדם יותר ותשנה את PAR כנ"ל.

    2א – אופציונלי – אם תרצה סינון לפי טווח תאריכים תוסיף 2 קלטים מסוג DATE רוחב 8 – FDT מתאריך TDT עד תאריך, ב"קלט I/M" תקבע M. אני מציע שבשאילתת הכנה תוסיף שורה מעין
    [code:1]ERRMSG (msgnumber) WHERE :$.FDT > :$.TDT ;[/code:1]
    ובהודעה תזהיר ש"מתאריך" צריך להיות לפני "עד תאריך". סתם בדיקת תקינות. לא חובה אבל אם לא בודקים וזה הפוך זה לא יביא כלום. אפשר לשפר ולדאוג שברירת המחדל תהיה תמיד מ-01/01/88 ועד היום – פיתוח מתקדם יותר.
    אם עושים את זה אני מציע לשנות את סוג הקלט מ-INPUT ל-INPUTF. כך זה יבקש את התאריכים גם כשמריצים בהפעלה ישירה.

    3. שלב ה-HTMLCURSOR: יש לשנות את השאילתא. אם לא נוגעים בזה, הפרוצדורה לא תתיחס לבחירת הלקוחות ויפיק את כל הטפסים. השאילתא צריכה להיות (ואני לא בדקתי, סתם כתבתי, אם זה לא יעבוד תחקור או נחקור):
    כמובן במקום (not equals) שים קטן מ- וגדול מ-. תוכנת הפורום מורידה את התווים…
    [code:1]
    SELECT FAULT, FAULTNO
    FROM CUSTOMERS, FAULTS
    WHERE CUSTOMERS.CUST (not equals) 0
    AND FAULTS.FAULT (not equals) 0
    AND FAULTS.(your_prefix)_CUST = CUSTOMERS.CUST
    ORDER BY FAULTNO;
    [/code:1]

    3א – אופציונלי – אם הוספת קלטים של FDT וTDT יש להתייחס אליהם. תוסיף לפמי השורה של ORDER BY:
    [code:1]AND FAULTS.CURDATE BETWEEN :$.FDT AND :$.TDT[/code:1]

    3ב – אופציונלי – אם תרצה לדאוג למיון הטפסים לפי לקוח (רלוונטי אם מוציאים טפסים של כמה לקוחות בבת אחת) אפשר להוסיף לשאילתא. לא אסביר פה, אפשר ללמוד מפרוצדורת WWWSHOWAIV

    זה, לדעתי, צריך להספיק בשלב זה. נעזור להוסיף עוד על בסיס זה כשיעבוד.

    בהצלחה!

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

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

    הצעתי לשנות את המשמעות של PAR – זה היה FAULTS ושינינו אותו ל-CUSTOMERS. כעקרון אין בעיה עם זה. בתנאי שלא מתייחסים ל-PAR כ-FAULTS במקום אחר. רואים שבשלב SQLI אחד יש פרמטר PAR אבל לא עושים עם זה כלום שם לכן אין בעיה. אם היינו מוצאים משום מה התייחסות ל-PAR היינו צריכים לשכתב גם את השלב הזה בהתאם.

    אבל בפעול מקרה כזה יהיה נדיר כי מה-HTMLCURSOR עד הINPUT האחרון יש לולאה ומטפלים רשומה רשומה לפי הערך ששלופים ב-HTMLCURSOR ולכן לא קורה כ"כ הרבה שמתייחסים לכל הסט.

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