Here is the code, Simon.
Private Sub Export()
Dim Status As String
Dim PType As String
Dim Class As String
Dim rs As Recordset 'Payroll
Dim rsemp As Recordset
Dim sEmp As String
Dim sql As String
opendlg.Filter = "Text File (*.txt)|*.txt"
opendlg.FilterIndex = 0
opendlg.ShowSave
sFile = opendlg.FileName
If sFile = "" Then Exit Sub
Open sFile For Output As #1
sql = "select database1.* from database1 order by [Last], [First]"
Set rsemp = dbData.OpenRecordset(sql, dbOpenSnapshot)
If Not rsemp.BOF Then
While Not rsemp.EOF
If rsemp![Status] = "ACTIVE" Or rsemp![Status] = "Active" Then
Status = "A"
Else
Status = "T"
End If
With rsemp
If WITH_LABOUR Then
sEmp = FormatField(NullToStr(![Id_Num]), 10, "R"

& FormatField(NullToStr(![Last]), 20, "L"

& _
FormatField(NullToStr(![First]), 20, "L"

& FormatField(NullToStr(![Middle]), 20, "L"

& _
Filler(11) & Filler(10) & "F" & "H" & "S" & _
FormatField(NullToStr(![USER13]), 20, "L"

& Filler(30) & Filler(30) & Filler(2) & Filler(5) & Filler(10) & _
FormatField(NullToStr(Status), 1, "L"

& Filler(10) & Filler(10) & _
Filler(19) & "0"
Print #1, sEmp
Else
sEmp = FormatField(NullToStr(![Id_Num]), 10, "R"

& FormatField(NullToStr(![Last]), 20, "L"

& _
FormatField(NullToStr(![First]), 20, "L"

& FormatField(NullToStr(![Middle]), 20, "L"

& _
Filler(11) & Filler(10) & "F" & "H" & "S" & _
FormatField(NullToStr(![USER12]), 20, "L"

& Filler(30) & Filler(30) & Filler(2) & Filler(5) & Filler(10) & _
FormatField(NullToStr(Status), 1, "L"

& Filler(10) & Filler(10) & Filler(9) & "0"
Print #1, sEmp
End If
End With
rsemp.MoveNext
Wend
End If
Close #1
End Sub [sig][/sig]