שגיאה בדוח המכיל עמודה חישובית

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

  • Post
    oshrat_bennoon
    משתתף
    היי

    בניתי דוח שמציג סכומים של תעודות משלוח ללקוח (טיפוס D) + תעודות החזרה מלקוח (טיפוס N).

    על כן, הכנסתי תנאי בשדה DOCUMENTS.TYPE באופן הבא: ('IN ('D' , 'N

    השדה (הממוקם בדוח במיקום 40) שמייצג את הסכום הוא DOCUMENT.TOTPRICE (מסוג טיפוס REAL)

    יצרתי עמודה חישובית חדשה עם הנוסחה הבאה: (DOCUMENTS.TYPE = 'N' ? ( #40 * (-1) : #40)

    העמודה החישובית הזו גם היא מסוג טיפוס REAL.

    לאחר מכן, הרצתי את הדוח וקיבלתי את השגיאה הבאה:

    דו'ח repprep.q', line 8: parse error at or near symbol : :ZARI_DELIVERS'.

    Query can be found in file : C:\priority\tmp/prep.err

     

    מה עשיתי לא בסדר?

    תודה למגיבים!

מוצגות 12 תגובות – 1 עד 12 (מתוך 12 סה״כ)
  • Replies
    yitzchok
    משתתף
    IL
    עמודה 40 זאת ביטוי או עמודה+טבלה למעלה?
      [ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
    oshrat_bennoon
    משתתף
    עמודה 40 היא עמודה רגילה, כלומר לא עמודה מחושבת.

    היא מכילה את השדה TOTPRICE מטבלת DOCUMENTS והטיפוס שלו הוא REAL

    yitzchok
    משתתף
    IL
    זהו. במקרה כזה לא ניתן להשתמש ב- #40

    חייבים לכתוב DOCUMENTS.TOTPRICE

    או להפוך את 40 להיות מחושבת ע"י כתיבת הנ"ל כביטוי.

      [ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
    oshrat_bennoon
    משתתף
    תיקנתי את הנוסחה והיא כתובה עכשיו כך:
    (DOCUMENTS.TYPE = 'N' ? (DOCUMENTS.TOTPRICE * (-1) : DOCUMENTS.TOTPRICE)
    עכשיו מקבלת שגיאה אחרת:

    דו'ח line 8: parse error at or near symbol : :ZARI_DELIVERS ,".

    Query can be found in file : C:\priority\tmp/prep.err

    • התגובה הזו עודכנה לפני לפני 4 שנים, חודש 1 ע"י oshrat_bennoon.
    NoamN
    משתתף
    none
    לפני שאני מתחיל, יש סגר מיותר בסוף המשפט – יש שני סגרים שמאליים ושלושה ימניים

    הייתי מפשט קצת את הביטוי – לוגית זה יותר נכון וגם יותר קל להקליד!

    (DOCUMENTS.TOTPRICE * (DOCUMENTS.TYPE = 'N' ? -1.0 : 1.0

    oshrat_bennoon
    משתתף
    מחקתי לגמרי את הביטוי שרשמתי, והחלפתי אותו במה שהצעת:

    (DOCUMENTS.TOTPRICE * (DOCUMENTS.TYPE = ‘N’ ? -1.0 : 1.0

    שוב קיבלתי הודעת שגיאה:

    דו'ח line 8: parse error at or near symbol AS :ZARI_DELIVERS ,".

    Query can be found in file : C:\priority\tmp/prep.err

     

    yitzchok
    משתתף
    IL
    נעם צודק והבעיה של הסוגריים כבר היתה מההתחלה רק הפורום משבש את הסדר וזה לא בלט

    אני די בטוח בכל זאת שלא היה ניתן לכתוב #40 בתנאים אלה, אבל הפתרון של נעם הכי ברור כי על ביטוי כזה פשוט למה להסתיר ע"י הפניה לעמודה אחרת

    אני רואה שכבר יש עוד בעיה

    אנחנו לא רואים כאן את הכל אז קשה לענות

    אבל בסופו של דבר כתוב להסתכל ב-prep.err אז תעשי את זה. עברי על השאילתא ותראי שם מה הבעיה. מקסימום תעלי כאן כנספח אם אפשר (שלא ישתבש) ונראה

      [ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
    NoamN
    משתתף
    none
    לא יופיע משהו שמוסיף להבנה ב-PREP.ERR

    האם אפשר להסיר את שדה הביטוי לגמרי (או לרשום שם משהו פשוט) ולהטעין את הדו"ח ב-WINDBI?

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

    yitzchok
    משתתף
    IL
    נועם סליחה אני חולק.

    Prep.err יכול לעזור. לפעמים לא עוזר, ולפעמים מבינים את הבעיה מתוך מה שלא שם. אבל לפעמים הבעיה גם ברורה. לא נכון לשלול שיוסיף הבנה.

    במיוחד כאן כאשר בשגיאה מוזכרת ביטוי שלא מוכר לנו בינתיים.

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

      [ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
    oshrat_bennoon
    משתתף
    הסתרתי כעת את העמודה המחושבת, ולא היו שגיאות והדוח רץ בהצלחה.

    כלומר, השגיאה בהכרח קשורה לעמודה הזו.

    לגבי קובץ Prep.err, הוצאתי ממנו את הטקסט הבא:

     

    /* דוח תעודות משלוח והחזרות-סכומים*/

    SELECT  DOCUMENTS.CURDATE AS ,'תאריך'

    DOCUMENTS.DOCNO AS ,'תעודה'

    CUSTOMERS.CUSTNAME AS ,'מס.לקוח'

    CUSTOMERS.CUSTDES AS ,'שם לקוח'

    DOCUMENTS.TOTPRICE AS ,'מחיר כולל מע"מ'

    (0.0 + ((DOCUMENTS.TOTPRICE * (DOCUMENTS.TYPE = ‘N’ ? -1.0 : 1.0)) AS 'סה"כ (₪)'

    FROM  CUSTOMERS   , DOCUMENTS

    WHERE  (DOCUMENTS.CUST   = CUSTOMERS.CUST)

    AND (DOCUMENTS.TYPE  IN ('D' , 'N'))

    AND ( 1=1 )

    ;

     

     

    NoamN
    משתתף
    none
    עדיין יותר מדי סוגרים

    צרי להיות אחד לפני DOCUMENTS.TOTPRICE

    אחד לפני DOCUMENTS.TYPE

    שניים אחרי 1.0

    אין צורך לחבר 0.0 – מעבר לעובדה ש-TOTPRICE בסוג REAL, מכפילים אותו מספרים REAL

    oshrat_bennoon
    משתתף
    הצליח 🙂

    תודה רבה לכל המגיבים!

    עזרתם המון

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