Solved

put a double in a fixed width txt file

Posted on 2004-09-24
8
168 Views
Last Modified: 2010-05-02
I have to put 3 double in a fixed width txt file.  How much characters I must specify in the width of a double ?
0
Comment
Question by:weeb0
  • 2
  • 2
8 Comments
 
LVL 85

Expert Comment

by:Mike Tomlinson
ID: 12142703
Use the format function to display the double with the number of digits you want:

Private Sub Command1_Click()
    Dim myDouble As Double
    myDouble = 1 / 3
    Debug.Print myDouble
    Debug.Print Format(myDouble, "0000.0000")
End Sub
0
 
LVL 16

Expert Comment

by:jimbobmcgee
ID: 12143007
A double is usually 16 characters long...
0
 
LVL 16

Expert Comment

by:jimbobmcgee
ID: 12143091
...however, if  it is less than 1, you may need an extra character to store the 0 and if it is a negative number, another extra character to store the -.  

I would use 18 characters in a fixed width file, read it as a string and then use CDbl to format as a double...

Don't forget to error handle, when writing, to account for rational decimals, such as 0.25.  Convert to string (with CStr) and then add however many spaces to make 18 chars...
0
 
LVL 1

Author Comment

by:weeb0
ID: 12143575
is there an easy way to format the fixed width ???

I would like to have trailing spaces for a total of 30 characters in 1st field, the second one is a date... so, I know how to deal with it ...
the the 2 last are double with 2 decimals.

thank you
0
 
LVL 85

Accepted Solution

by:
Mike Tomlinson earned 20 total points
ID: 12143972
Here is one way to pad your string with trailing spaces:

Private Sub Command1_Click()
    Dim dblValue As Double
    Dim strValue As String
   
    dblValue = 1 / 3
    strValue = Format(dblValue, "#,##0.00") ' or however you decide to format it...
    strValue = trailingPad(strValue, 30)
    Debug.Print strValue
End Sub

Private Function trailingPad(ByVal strInput As String, ByVal padLength As Integer)
    Dim i As Integer
    Dim spacesNeeded As Integer
    Dim strLength As Integer
    Dim spaces As String
   
    strLength = Len(strLength)
    If strLength > padLength Then
        trailingPad = Left(strInput, padLength)
    Else
        spacesNeeded = padLength - strLength
        spaces = Space(spacesNeeded)
        trailingPad = strInput & spaces
    End If
End Function
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

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

Suggested Solutions

Introduction In a recent article (http://www.experts-exchange.com/A_7811-A-Better-Concatenate-Function.html) for the Excel community, I showed an improved version of the Excel Concatenate() function.  While writing that article I realized that no o…
The debugging module of the VB 6 IDE can be accessed by way of the Debug menu item. That menu item can normally be found in the IDE's main menu line as shown in this picture.   There is also a companion Debug Toolbar that looks like the followin…
Get people started with the process of using Access VBA to control Excel using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Excel. Using automation, an Access application can laun…
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…

943 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

Need Help in Real-Time?

Connect with top rated Experts

9 Experts available now in Live!

Get 1:1 Help Now