Solved

Converting Fractions to Decimals

Posted on 2003-11-28
6
1,057 Views
Last Modified: 2012-05-04
Using AC2002.

I am using the following code to convert fractions to decimals. However, it won't convert the number if it is a whole number only. Need help in modification.

Private Sub Command1_Click()
Dim x As Integer
Dim y As Integer
Dim z As String
Dim a1 As Integer
Dim a2 As Integer
Dim MyNumber As String

DoCmd.GoToControl "Text1"

x = InStr(1, Text1.Text, " ")
y = InStr(x, Text1.Text, "/")
z = Right$(Text1.Text, Len(Text1.Text) - x)
y = InStr(1, z, "/")
a1 = Val(Left$(z, y - 1))
a2 = Val(Right$(z, Len(z) - y))
MyNumber = Val(Left$(Text1.Text, x - 1)) + a1 / a2
Text1.Text = MyNumber
End Sub
0
Comment
Question by:CatDaddy2003
  • 3
  • 2
6 Comments
 
LVL 19

Expert Comment

by:Dexstar
ID: 9840167
@CatDaddy2003:

> I am using the following code to convert fractions to decimals. However, it
> won't convert the number if it is a whole number only. Need help in modification.

If it is a whole number only, then your value will be missing a "/".  So, check for y = 0, and if it is, then just use the whole value.
     
     Private Sub Command1_Click()
          Dim x As Integer
          Dim y As Integer
          Dim z As String
          Dim a1 As Integer
          Dim a2 As Integer
          Dim MyNumber As String

          DoCmd.GoToControl "Text1"

          x = InStr(1, Text1.Text, " ")
          y = InStr(x, Text1.Text, "/")
          If ( y > 0 ) Then
               z = Right$(Text1.Text, Len(Text1.Text) - x)
               y = InStr(1, z, "/")
               a1 = Val(Left$(z, y - 1))
               a2 = Val(Right$(z, Len(z) - y))
               MyNumber = Val(Left$(Text1.Text, x - 1)) + a1 / a2
          Else
               MyNumber = Val(Text1.Text)
          End IF

          Text1.Text = MyNumber
     End Sub

Hope That Helps,
Dex*
0
 
LVL 2

Expert Comment

by:rthomsen
ID: 9840170
Try using the Eval function just to perform the division.  For Example:

Dim FractionString as string
Dim DecimalValue as Double

FractionString = "5/8"
DecimalValue = Eval(FractionString)



0
 

Author Comment

by:CatDaddy2003
ID: 9840241
I inserted your revised code, following are the results:

13 5/8 became 13.625 (works fine)

13 became a Runtime error '5', invalid procedure call and points to this line in the code:
 y = InStr(x, Text1.Text, "/")

and when I comment out that line, then the results become:

13 5/8 became 135

13 became 13
0
Use Case: Protecting a Hybrid Cloud Infrastructure

Microsoft Azure is rapidly becoming the norm in dynamic IT environments. This document describes the challenges that organizations face when protecting data in a hybrid cloud IT environment and presents a use case to demonstrate how Acronis Backup protects all data.

 
LVL 19

Expert Comment

by:Dexstar
ID: 9840245
After further refinement, including rthomsen's suggestion, here is what I came up with:

     Private Sub Command1_Click()
          Dim nPos As Integer
          Dim strValue as String
          Dim MyNumber As String
          Dim nValue As Double

          DoCmd.GoToControl "Text1"
          strValue = Text1.Text
          nPos = InStr( strValue, " " )
          If ( nPos > 0 ) Then
                    nValue = CLng(Left(strValue, nPos-1))
                    strValue = Mid(strValue, nPos+1)
          Else
                    nValue = 0
          End If
          nValue = nValue + Eval( strValue )
          MyNumber = CStr(nValue)
          Text1.Text = MyNumber
     End Sub

If that doesn't work for you, let me know what errors / problems you have.  Thanks.

Dex*
0
 
LVL 19

Accepted Solution

by:
Dexstar earned 250 total points
ID: 9840254
The updated version should fix the issues that you just reported.  Try it out and let me know.

Dex*
0
 

Author Comment

by:CatDaddy2003
ID: 9840268
Worked just fine. Thanks!
0

Featured Post

Use Case: Protecting a Hybrid Cloud Infrastructure

Microsoft Azure is rapidly becoming the norm in dynamic IT environments. This document describes the challenges that organizations face when protecting data in a hybrid cloud IT environment and presents a use case to demonstrate how Acronis Backup protects all data.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction The Visual Basic for Applications (VBA) language is at the heart of every application that you write. It is your key to taking Access beyond the world of wizards into a world where anything is possible. This article introduces you to…
In a multiple monitor setup, if you don't want to use AutoCenter to position your popup forms, you have a problem: where will they appear?  Sometimes you may have an additional problem: where the devil did they go?  If you last had a popup form open…
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…
Show developers how to use a criteria form to limit the data that appears on an Access report. It is a common requirement that users can specify the criteria for a report at runtime. The easiest way to accomplish this is using a criteria form that a…

770 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question