Public Sub PrintDatGrid(inDataGrid As Control, rsDataGrid As ADODB.Recordset, TFileName As String)

Dim X As Integer
Dim strHead As String
Dim strCol As String
Dim strFields As String
Dim rsClone As New ADODB.Recordset

If TypeOf inDataGrid Is DataGrid Then
Else
MsgBox "Элемент управления не DataGrid!", vbCritical, "Контроль типа объекта"
Exit Sub
End If

Open TFileName For Output As #1

'--Формируем шапку таблицы
With inDataGrid
strHead = "|"
strFields = ""
For X = 0 To .Columns.Count - 1
If .Columns(X).Visible = True Then
strHead = strHead + myLeft(.Columns(X).Caption, .Columns(X).Width \ 100) + "|"
strFields = strFields & "," & inDataGrid.Columns(X).DataField
End If
Next X
End With
Print #1, Replace(Space(Len(strHead)), " ", "-")
Print #1, strHead
Print #1, Replace(Space(Len(strHead)), " ", "-")

If rsDataGrid.RecordCount <> 0 Then
'--Настраиваем клона
Set rsClone = rsDataGrid.Clone
rsClone.Filter = rsDataGrid.Filter
'--Формируем данные
With rsClone
.MoveFirst
While Not .EOF
strCol = "|"
For X = 0 To .Fields.Count - 1
If InStr(1, strFields, .Fields(X).Name) > 0 Then
strCol = strCol & myLeft(IIf(IsNull(.Fields(X)), "", .Fields(X)), inDataGrid.Columns(X).Width \ 100) & "|"
End If
Next X
Print #1, strCol
.MoveNext
Wend
Print #1, Replace(Space(Len(strCol)), " ", "-")
End With
End If
Close #1
rsClone.Close
End Sub

Используются технологии uCoz