דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תוכנה
  3. חישוב דולרים בשאילתה באקסס

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

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

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

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

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

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

    תגובה 1 תגובה אחרונה
    0
    • איש ימיניא מחובר
      איש ימיניא מחובר
      איש ימיני
      כתב ב נערך לאחרונה על ידי
      #2

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

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

      עובד מצויין

      תגובה 1 תגובה אחרונה
      0
      • א מנותק
        א מנותק
        אבי
        כתב ב נערך לאחרונה על ידי אבי
        #3

        @איש-ימיני
        קבל 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

        בהצלחה

        OdedDvirO תגובה 1 תגובה אחרונה
        1
        • OdedDvirO מנותק
          OdedDvirO מנותק
          OdedDvir
          השיב לאבי ב נערך לאחרונה על ידי OdedDvir
          #4

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

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

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

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

          תגובה 1 תגובה אחרונה
          1

          בא תתחבר לדף היומי!
          • התחברות

          • אין לך חשבון עדיין? הרשמה

          • התחברו או הירשמו כדי לחפש.
          • פוסט ראשון
            פוסט אחרון
          0
          • דף הבית
          • קטגוריות
          • פוסטים אחרונים
          • משתמשים
          • חיפוש
          • חוקי הפורום