תחומים
    • הרשמה
    • התחברות
    • חיפוש
    • קטגוריות
    • פוסטים אחרונים
    • משתמשים
    • חיפוש
    חוקי הפורום

    חישוב דולרים בשאילתה באקסס

    תוכנה
    3
    4
    157
    טוען פוסטים נוספים
    • מהישן לחדש
    • מהחדש לישן
    • הכי הרבה הצבעות
    תגובה
    • הגיבו כנושא
    התחברו בכדי לפרסם תגובה
    נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
    • איש ימיני
      איש ימיני נערך לאחרונה על ידי

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

      הסכום בשקלים לאחר חישוב דולרים: Round([סכום]*[הזן שער הדולר],3)
      

      עכשיו כשאני פותח את השאילתה קופץ לי חלון להזין את שער הדולר - וזה מציג לי בשדה את הסכום לאחר חישוב הדולרים

      אני רוצה לעשות שאם בשדה מטבע כתוב $ שיכפיל את הסכום לפי הפרמטר שאני מכניס עם פתיחת השאילתה
      ואם בשדה מטבע כתוב ₪ שיציג את הסכום בלי הכפלה

      תגובה 1 תגובה אחרונה תגובה ציטוט 0
      • איש ימיני
        איש ימיני נערך לאחרונה על ידי

        הסדרתי
        כתבתי כך:

        הסכום בשקלים לאחר חישוב דולרים: IIf([מטבע]=$,Round([סכום]*[הזן שער הדולר],3)) & IIf([מטבע]=₪,Round([סכום]*1,3))
        

        עובד מצויין

        תגובה 1 תגובה אחרונה תגובה ציטוט 0
        • אבי
          אבי נערך לאחרונה על ידי אבי

          @איש-ימיני
          קבל 2 הארות קטנות.

          1. בחישוב השקל אין צורך להכפיל ב 1, זה נותן את אותה תוצאה של הערך ללא ההכפלה.
          2. הפונקציה Round עושה עיגול לפי כלל שנקרא עיגול בנקאי וזה לא העיגול המצוי שאנחנו רגילים להשתמש בו.
            מומלץ להשתמש בפונקציה מותאמת אישית מכאן
          ' This function overcomes the bankers Rounding that occurs in the
          ' built-in VBA Round function to provide true (symmetric) numeric Rounding
          ' Created by TechOnTheNet.com
          Public Function StandardRound(pValue As Double, pDecimalPlaces As Integer) As Variant
              Dim LValue As String
              Dim LPos As Integer
              Dim LNumDecimals As Long
              Dim LDecimalSymbol As String
              Dim QValue As Double
              ' Return an error if the decimal places provided is negative
              If pDecimalPlaces < 0 Then
                 StandardRound = CVErr(2001)
                    Exit Function
              End If
          
              ' If your country uses a different symbol than the "." to denote a decimal
              ' then change the following LDecimalSymbol variable to that character
              LDecimalSymbol = "."
          
              ' Determine the number of decimal places in the value provided using
              ' the length of the value and the position of the decimal symbol
              LValue = CStr(pValue)
              LPos = InStr(LValue, LDecimalSymbol)
              LNumDecimals = Len(LValue) - LPos
          
              ' Round if the value provided has decimals and the number of decimals
              ' is greater than the number of decimal places we are rounding to
              If (LPos > 0) And (LNumDecimals > 0) And (LNumDecimals > pDecimalPlaces) Then
          
                  ' Calculate the factor to add
                  QValue = (1 / (10 ^ (LNumDecimals + 1)))
                  ' Symmetric rounding is commonly desired so if the value is
                  ' negative, make the factor negative
                  ' (Remove the following 3 lines if you require "Round Up" rounding)
                  If (pValue < 0) Then
                      QValue = -QValue
                  End If
          
                  ' Add a 1 to the end of the value (For example, if pValue is 12.65
                  ' then we will use 12.651 when rounding)
                  StandardRound = Round(pValue + QValue, pDecimalPlaces)
          
              ' Otherwise return the original value
              Else
                  StandardRound = pValue
              End If
          End Function
          

          לשימוש בפונקציה, אתה פשוט מדביק את הקוד לעיל במודול כלשהו
          ומחליף את המילה Round ל StandardRound

          בהצלחה

          OdedDvir תגובה 1 תגובה אחרונה תגובה ציטוט 1
          • OdedDvir
            OdedDvir @אבי נערך לאחרונה על ידי OdedDvir

            @אבי אמר בחישוב דולרים בשאילתה באקסס:

            הפונקציה Round עושה עיגול לפי כלל שנקרא עיגול בנקאי וזה לא העיגול המצוי שאנחנו רגילים להשתמש בו.
            מומלץ להשתמש בפונקציה מותאמת אישית

            לענ"ד דווקא העיגול הבנקאי הרגיל מומלץ יותר, בפרט בסכומי מטבע.

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

            תגובה 1 תגובה אחרונה תגובה ציטוט 1
            • 1 / 1
            • פוסט ראשון
              פוסט אחרון
            בא תתחבר לדף היומי!