Approach User Support homepage Approach User Support
Answers to Frequently Asked Questions about Lotus Approach
Examples LotusScripts
Example databases
Links to other Lotus Approach support services

[Return to contents]

Example LotusScript: Creating a dot notation text file

Last updated: before December, 1998

Sub Create90
        '-----Jerry Sikes 01.21.98
        '-----This script creates a tab delimited text file
        '-----It's purpose is create a dot notation string
        '-----with day of year dot machine id dot shift
        '-----This will be used with a machine scheduling application
        '-----where I need to know if a shift is available for a
        '-----specific machine at some future date.
        '-----This script is for testing purposes only and does not
        '-----represent it's final structue.
        Dim filenum As Integer
        Dim filename As String
        Dim rec As DayRecord
        '-----I previously declare my own data type
        '-----in Globals...Declarations
        '-----Type DayRecord
        '               Machine_Shift_Block As String * 10
        '               Shift_Status As String * 3
        '       End Type
        Dim Numeric_Date As Single, Day_of_Year As Single
        Dim rs As New ResultSet
        Set rs =CurrentDocument.Tables(1).CreateResultSet()
        '-----This immediately brings in an already open, join table
        '-----This is all records from that table. Very fast
        '-----To determine the table number, I look in the Approach
        '-----file properties. The table are listed in order 0...n
        counter1% = 0
        Record_Number%=0
        filenum% = Freefile()
        filename$ = "c:\windows\temp\mach_rec.txt"
        Open filename$ For Output As filenum% 
        'Open filename$ For Random As filenum%  Len = Len(rec)
        '-----Random stores the info in a binary format. This may be my final output type
        '-----This way I can call a record by its record number with the Get statement
        '-----(I have not figure out all the details yet)
        For counter1% = 0 To 90
                Numeric_Date!=Csng(Date)+counter1%
                Do
                        For shift_number% = 1 To 3
                                Record_Number%=Record_Number%+1
                                Day_of_Year! = Csng(Cdat(Numeric_Date)-Datenumber(Year(Date$)-1,12,31))
                                '-----This mimics the Approach DayOfYear function
                                rec.Machine_Shift_Block = Trim(Str(Day_of_Year!))+"."+ rs.GetValue("id")+"." _
                                +Trim(Str(shift_number%))
                                Select Case Weekday(Numeric_Date!)
                                Case Is = 7'-----Saturday
                                        rec.Shift_Status = "Off"
                                Case Is = 1'-----Sunday
                                        rec.Shift_Status = "Off"
                                Case Else
                                        rec.Shift_Status = "On"
                                End Select
                                '-----For those not familiar with VB..case is much better than Nested If...Then...Else
                                Select Case Day_of_Year!
                                Case Is = 100 '-----Good Friday
                                        rec.Shift_Status = "Off"
                                Case Is = 145 '-----Memorial Day
                                        rec.Shift_Status = "Off"
                                Case 180 To 184'-----Vacation Shutdown
                                        rec.Shift_Status = "Off"
                                Case Is = 250'-----Labor Day
                                        rec.Shift_Status = "Off"
                                Case 330 To 331'-----Thanksgiving
                                        rec.Shift_Status = "Off"
                                Case 355 To 359'-----Vaction Shutdown
                                        rec.Shift_Status = "Off"
                                        'No Case Else. Would reset Saturday and Sunday to On
                                End Select
                                Print #fileNum%,Str(Record_Number%)+Chr(9)+rec.Machine_Shift_Block+Chr(9)+rec.Shift_Status
                                'Put # filenum%,Record_Number%,rec
                                '-----Print # works with Output while Put is for Random
                        Next shift_number%
                Loop While rs.nextrow
                rs.firstrow
        Next counter1%
        Close filenum%
        rs.close
        '-----Always put things away
End Sub

[Return to contents]

© Copyright, JohnBrown, Trademarks, Disclaimer, Acknowledgements.