הכפלה של INT

  • Post
    moshe
    משתתף
    שלום רב
    הכפלתי ב -1 את השדה
    INVOICEITEMS.TQUANT

    בדוח אחד זה תקין
    בדוח אחר אני מקבל תוצאה מוכפלת ב1000
    מה יכולות להיות הסיבות
    תודה

מוצגות 5 תגובות – 1 עד 5 (מתוך 5 סה״כ)
  • Replies
    Lior
    מנהל בפורום
    העמודה הזו היא INT עם דיוק עשרוני של 3. זה טיפוס מיוחד שמשמש את כל עמודות הכמות בטבלאות השונות. התכונה הייחודית שלו היא שאתה רואה במסך X ובטבלה 1000X.
    למה בנו את זה כך ? הסברה שלי היא שבעבר רצו לשמור בבסיס הנתונים מספר שלם ולא עשרוני כדי לחסוך במשאבי זכרון ועיבוד (כי ייצוג בינארי של מספרים עשרוניים הוא כפול מהייצוג של שלמים). אבל זו רק סברה פרטית שלי.
    על כל פנים, כדי לקבל את הערך האמיתי אתה צריך להשתמש בפונקציה REALQUANT כך:
    [code:1]REALQUANT(INVOICEITEMS.TQUANT)[/code:1]
    היא תמיר לך את זה לREAL ותחלק ב 1000.

    מדוע לא לחלק ב 1000 וזהו ? מכיון שהדיוק העשרוני של מספרים אלו הוא נתון לשינוי. אתה יכול להעביר את המערכת כולה לעבור לדיוק 2 או 1 ואז בבסיס הנתונים יירשם 100X או 10X. והחילוק ב 1000 לא יהיה נכון וזה באג. כמו כן, אני מעריך שמתישהוא בעתיד הטיפוס הזה יוחלף בREAL ו-REALQUANT תבצע הכפלה ב 1 כי היום החסכון הנ"ל אינו רלוונטי יותר. אם תחלק ב 1000 והשינוי הזה אכן יבוצע במסגרת אחת הגרסאות, אתה גם כן תקבל באג.

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

    yitzchok
    משתתף
    IL
    אם העמודה בה נמצאת הביטוי היא מוגדרת כ-INT, מספיק להגדיר דיוק עשרוני של 3 (ב"אפיון הצגה") וזהו.
      [ בבקשה לא לשלוח הודעות פרטיות במערכת - אני לא קורא אותן ]
    מיכאל
    משתתף
    יש גם קבוע מערכת DECIMAL המגדיר אופן עבודה של פונקציות REALQUANT ו-INTQUANT.
    למשל, במקרא סטנדרטי, כשערך DECIMAL=3, מקבלים
    [code:1]REALQUANT(1000) = 1.0[/code:1]
    וכשערך DECIMAL=1 :
    [code:1]REALQUANT(1000) = 100.0[/code:1]
    Lior
    מנהל בפורום
    נכון. אבל לא ניתן לשנותו ידנית. יש תוכניות שלוקחת לא מעט זמן שצריך להוריד מאתר אשבל כדי לעבור מדיוק אחד לשני
    yitzchok
    משתתף
    IL
    Lior כתב:

    נכון. אבל לא ניתן לשנותו ידנית. יש תוכניות שלוקחת לא מעט זמן שצריך להוריד מאתר אשבל כדי לעבור מדיוק אחד לשני

    ליאור – למה הגבת?

    אני כתבתי:

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

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

    משה – הספקנו לענות על השאלה שלך?

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