Writing files in VB6 using Write and Print

Level:
Level2

 

The Write # statement

 

The Write # statement is used to write records with comma-delimited fields to a sequential file. The basic format is:

 

Write#<filenumber>, <variable list>

·         filenumber refers to the file that was Opened As that number (for Output or Append) in the Open statement

·         variable list is a list of variables, separated by commas, which will be written to the file as the fields of each record

 

The Write # statement will automatically enclose string fields in quotes and date fields in pound signs.

 

Example – Writing a comma-delimited record:

Consider the following program segment, which repeatedly prompts the user to enter employee data via the InputBox function in a loop until the user enters nothing for the employee name. The InputBox function automatically converts the user's entries into the target data types. On each pass through the loop, a record containing the data that the user entered is appended to the employee file.

 

Dim strEmpFileName As String

Dim strBackSlash As String

Dim intEmpFileNbr As Integer

Dim strEmpName As String

Dim intDeptNbr As Integer

Dim strJobTitle As String

Dim dtmHireDate As Date

Dim sngHrlyRate As Single

strBackSlash = IIf(Right$(App.Path, 1) = "\", "", "\")

strEmpFileName = App.Path & strBackSlash & "EMPLOYEE.DAT"

intEmpFileNbr = FreeFile

Open strEmpFileName For Append As #intEmpFileNbr

' Set up an "input loop" to prompt the user for data.

' "Priming" input:

strEmpName = InputBox("Enter name (or click Cancel to stop):")

' The loop will continue until the user clicks "Cancel" on the InputBox (which

' will cause the result variable of InputBox (strEmpName) to be set to a zero-

' length string ("") ...

Do Until strEmpName = ""

' Prompt the user for each field:

intDeptNbr = InputBox("Enter dept:")

strJobTitle = InputBox("Enter job title:")

dtmHireDate = InputBox("Enter hire date:")

sngHrlyRate = InputBox("Enter hourly rate:")

' Write out the record to the file ...

Write #intEmpFileNbr, strEmpName, intDeptNbr, strJobTitle, dtmHireDate, sngHrlyRate

' Display the contents of the record that was written on the form ...

Print strEmpName; _

Tab(25); Format$(intDeptNbr, "@@@@"); _

Tab(35); strJobTitle; _

Tab(60); Format$(dtmHireDate, "mm/dd/yyyy"); _

Tab(71); Format$(Format$(sngHrlyRate, "Standard"), "@@@@@@@")

' Start a new record by prompting for the employee name ...

strEmpName = InputBox("Enter name (or click Cancel to stop):")

Loop

Close #intEmpFileNbr

 

In the example above, suppose the user responded to the prompts as follows:

 

Prompt Response

Enter name FREDDIE FUDRUCKER

Enter dept 450

Enter job title DATA ENTRY CLERK

Enter hire date April 22, 1999

Enter hourly rate 9.00

 

The record would be written to the file as:

 

"FREDDIE FUDRUCKER",450,"DATA ENTRY CLERK",#1999-04-22#,9

 

Note that the Write statement writes Date fields to the file in the format #YYYY-MM-DD#. This is the standard format for dates stored on comma-delimited files, although VB can handle dates stored as #MM/DD/YYYY# as was used earlier. In any event, be sure to always use four digits for the year; otherwise, you will be relying on VB's internal algorithm to "figure out" what date you want, and the result may not always be what you expect.

 

The code above is the code behind the sample program's "Try It" button. When you run the sample program, The intial prompt for the employee name is displayed:

 

 

 

This is followed by subsequent prompts for the rest of the fields of the record:

 

 

 

 

 

Once the field entries for a record have been made, the record is written to the output file (which you can later verify by looking at it in the Windows Notepad program), the contents of the new record are displayed on the form, and the prompting for a new record starts again with a prompt for the employee name. (If you do not want to enter more records, click Cancel on the prompt for employee name.)

 

 

 

Download the VB project code for the example above here.

 

 

The Print # statement

 

The Print # statement is used to write formatted strings of data to a sequential file. The basic format is:

 

Print #<filenumber>, [expression list]

 

·         filenumber refers to the file that was Opened As that number (for Output or Append) in the Open statement

 

·         expression list is a list of one or more expressions, variables, or constants, separated by semicolons or commas, and which may include the TAB(n) and SPC(n) functions.

 

To create records in the fixed-width format ("print" format) shown earlier, you could substitute the following Print # statement for the Write # statement in the previous example:

 

Print #intEmpFileNbr, strEmpName; Tab(21); Format$(intDeptNbr, "@@@@"); _

Tab(30); strJobTitle; _

Tab(51); Format$(dtmHireDate, "m/d/yyyy"); _

Tab(61); Format$(Format$(sngHrlyRate, "#0.00"), "@@@@@")

 

Given the same sample input as in the previous example, the record would be written to the file as follows:

 

1 1 2 2 3 3 4 4 5 5 6 6

1...5....0....5....0....5...0....5....0....5....0....5....0....5.

FREDDIE FUDRUCKER 450 DATA ENTRY CLERK 4/22/1999 9.00

 

Download the VB project code for the example above here.

 

To create records in the fixed-width format ("COBOL-style" format) shown earlier, you could substitute the following Print # statement for the Write # statement in the previous example:

 

Print #intEmpFileNbr, strEmpName; Tab(21); Format$(intDeptNbr, "0000"); _

strJobTitle; Tab(43); Format$(dtmHireDate, "mm"); _

Format$(dtmHireDate, "dd"); Format$(dtmHireDate, "yyyy"); _

Format$(sngHrlyRate * 100, "0000")

 

Given the same sample input as in the previous example, the record would be written to the file as follows:

 

1 1 2 2 3 3 4 4 5 5 6 6

1...5....0....5....0....5...0....5....0....5....0....5....0....5.

FREDDIE FUDRUCKER 0450DATA ENTRY CLERK 042219990900

 

Download the VB project code for the example above here.

 

To demonstrate any of the Write/Print examples above:

  • Create a new "Try It" project in a new folder.
  • Place the code in the cmdTryIt_Click event procedure.
  • Run the program and click the "Try It" button. Enter the recommended values in the input boxes.
  • End the program
  • In the folder you created, open the EMPLOYEE.DAT file with NotePad and examine the results.

If you enjoyed this post, subscribe for updates (it's free)

Writing files in VB6 using Write and Print

Useful additional information to this article would be:

What character encoding is used when writing to text-files this way?
Can encoding type be set somehow ?

Awesome Tips from you

Thanks for your continuious support for Tips on Visual Basic. As a programmer, I am having so much help from your tips and articles. Please keep posting. Thanks once again for posting.

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>. The supported tag styles are: <foo>, [foo].

More information about formatting options

Type the characters you see in this picture. (verify using audio)
Type the characters you see in the picture above; if you can't read them, submit the form and a new image will be generated. Not case sensitive.