'************************************************************************* '**模 块 名:Form1 '**说 明:版权所有2005 - 2006(C) '**创 建 人: '**日 期:2005-06-27 08:07:42 '**修 改 人: '**日 期: '**描 述:Access数据库导出到Txt文件实例 '**版 本: '************************************************************************* Option Explicit Private Sub Check1_Click() If Check1.Value = 0 Then txtChar.Enabled = True Else txtChar.Enabled = False End If End Sub Private Function Connect2Database() As Boolean'用data控件尝试连接数据库 On Error GoTo ConnErr Data1.DatabaseName = txtSource.Text Data1.RecordSource = txtTable.Text Data1.Refresh Connect2Database = True Exit Function ConnErr: Connect2Database = False End Function Private Sub Export2Txt1()
'用分隔符分隔数据,以此种方式导出数据库 Dim Rec_Data As Recordset Set Rec_Data = Data1.Recordset Dim i As Long Dim WriteLine As String Rec_Data.MoveFirst
'若数据库为空,则退出 If Rec_Data.EOF Then Exit Sub
Open txtDes.Text For Output As #1
'先导出字段名至txt文件 For i = 0 To Rec_Data.Fields.Count - 1 '添加分隔符 If i <> 0 Then WriteLine = WriteLine & txtChar.Text WriteLine = WriteLine & Rec_Data.Fields(i).Name Next i Print #1, WriteLine
'导出数据到txt文件 Do Until Rec_Data.EOF WriteLine = "" For i = 0 To Rec_Data.Fields.Count - 1 '添加分隔符 If i <> 0 Then WriteLine = WriteLine & txtChar.Text If Not IsNull(Rec_Data.Fields(i).Value) Then WriteLine = WriteLine & CStr(Rec_Data.Fields(i).Value) End If Next i Print #1, WriteLine Rec_Data.MoveNext Loop
Close #1End Sub Private Sub Export2Txt2() '将数据对齐,不足宽度用空格,以此种方式导出数据库 Dim Rec_Data As Recordset Set Rec_Data = Data1.Recordset Dim i As Long Dim WriteLine As String Dim ColumnWidth() As Long Rec_Data.MoveFirst '先确定每一列的最大宽度 ReDim ColumnWidth(Rec_Data.Fields.Count)
If Rec_Data.EOF Then Exit Sub
For i = 0 To Rec_Data.Fields.Count - 1 ColumnWidth(i) = Len(Rec_Data.Fields(i).Name) Next i
Do Until Rec_Data.EOF For i = 0 To Rec_Data.Fields.Count - 1 If Not IsNull(Rec_Data.Fields(i).Value) Then If Len(CStr(Rec_Data.Fields(i).Value)) > ColumnWidth(i) Then ColumnWidth(i) = Len(CStr(Rec_Data.Fields(i).Value)) End If End If Next i
Rec_Data.MoveNext Loop
Rec_Data.MoveFirst
Open txtDes.Text For Output As #1 '先导出字段名至txt文件 For i = 0 To Rec_Data.Fields.Count - 1 WriteLine = WriteLine & AlignString(CStr(Rec_Data.Fields(i).Name), ColumnWidth(i)) Next i Print #1, WriteLine '导出数据到txt文件 Do Until Rec_Data.EOF WriteLine = "" For i = 0 To Rec_Data.Fields.Count - 1 If i <> 0 Then WriteLine = WriteLine & txtChar.Text If Not IsNull(Rec_Data.Fields(i).Value) Then WriteLine = WriteLine & AlignString(CStr(Rec_Data.Fields(i).Value), ColumnWidth(i)) Else WriteLine = WriteLine & Space(ColumnWidth(i)) End If Next i Print #1, WriteLine Rec_Data.MoveNext Loop Close #1 End SubPrivate Function AlignString(strText As String, lLength As Long) As String '将字符串增长到指定长度 If lLength <= Len(strText) Then AlignString = strText Else AlignString = strText & Space(lLength - Len(strText)) End If
End FunctionPrivate Sub cmdOK_Click() If Connect2Database Then If Check1.Value = 0 Then Call Export2Txt1 Else Call Export2Txt2 End If Else MsgBox "数据库打开错误,请检查数据库名和表名。", vbExclamation, "注意" End If End Sub
'**模 块 名:Form1
'**说 明:版权所有2005 - 2006(C)
'**创 建 人:
'**日 期:2005-06-27 08:07:42
'**修 改 人:
'**日 期:
'**描 述:Access数据库导出到Txt文件实例
'**版 本:
'*************************************************************************
Option Explicit
Private Sub Check1_Click()
If Check1.Value = 0 Then
txtChar.Enabled = True
Else
txtChar.Enabled = False
End If
End Sub
Private Function Connect2Database() As Boolean'用data控件尝试连接数据库
On Error GoTo ConnErr
Data1.DatabaseName = txtSource.Text
Data1.RecordSource = txtTable.Text
Data1.Refresh
Connect2Database = True
Exit Function
ConnErr:
Connect2Database = False
End Function
Private Sub Export2Txt1()
'用分隔符分隔数据,以此种方式导出数据库
Dim Rec_Data As Recordset
Set Rec_Data = Data1.Recordset
Dim i As Long
Dim WriteLine As String
Rec_Data.MoveFirst
'若数据库为空,则退出
If Rec_Data.EOF Then Exit Sub
Open txtDes.Text For Output As #1
'先导出字段名至txt文件
For i = 0 To Rec_Data.Fields.Count - 1
'添加分隔符
If i <> 0 Then WriteLine = WriteLine & txtChar.Text
WriteLine = WriteLine & Rec_Data.Fields(i).Name
Next i
Print #1, WriteLine
'导出数据到txt文件
Do Until Rec_Data.EOF
WriteLine = ""
For i = 0 To Rec_Data.Fields.Count - 1
'添加分隔符
If i <> 0 Then WriteLine = WriteLine & txtChar.Text
If Not IsNull(Rec_Data.Fields(i).Value) Then
WriteLine = WriteLine & CStr(Rec_Data.Fields(i).Value)
End If
Next i
Print #1, WriteLine
Rec_Data.MoveNext
Loop
Close #1End Sub
Private Sub Export2Txt2()
'将数据对齐,不足宽度用空格,以此种方式导出数据库
Dim Rec_Data As Recordset
Set Rec_Data = Data1.Recordset
Dim i As Long
Dim WriteLine As String
Dim ColumnWidth() As Long
Rec_Data.MoveFirst
'先确定每一列的最大宽度
ReDim ColumnWidth(Rec_Data.Fields.Count)
If Rec_Data.EOF Then Exit Sub
For i = 0 To Rec_Data.Fields.Count - 1
ColumnWidth(i) = Len(Rec_Data.Fields(i).Name)
Next i
Do Until Rec_Data.EOF
For i = 0 To Rec_Data.Fields.Count - 1
If Not IsNull(Rec_Data.Fields(i).Value) Then
If Len(CStr(Rec_Data.Fields(i).Value)) > ColumnWidth(i) Then
ColumnWidth(i) = Len(CStr(Rec_Data.Fields(i).Value))
End If
End If
Next i
Rec_Data.MoveNext
Loop
Rec_Data.MoveFirst
Open txtDes.Text For Output As #1
'先导出字段名至txt文件
For i = 0 To Rec_Data.Fields.Count - 1
WriteLine = WriteLine & AlignString(CStr(Rec_Data.Fields(i).Name), ColumnWidth(i))
Next i
Print #1, WriteLine
'导出数据到txt文件
Do Until Rec_Data.EOF
WriteLine = ""
For i = 0 To Rec_Data.Fields.Count - 1
If i <> 0 Then WriteLine = WriteLine & txtChar.Text
If Not IsNull(Rec_Data.Fields(i).Value) Then
WriteLine = WriteLine & AlignString(CStr(Rec_Data.Fields(i).Value), ColumnWidth(i))
Else
WriteLine = WriteLine & Space(ColumnWidth(i))
End If
Next i
Print #1, WriteLine
Rec_Data.MoveNext
Loop
Close #1
End SubPrivate Function AlignString(strText As String, lLength As Long) As String
'将字符串增长到指定长度
If lLength <= Len(strText) Then
AlignString = strText
Else
AlignString = strText & Space(lLength - Len(strText))
End If
End FunctionPrivate Sub cmdOK_Click()
If Connect2Database Then
If Check1.Value = 0 Then
Call Export2Txt1
Else
Call Export2Txt2
End If
Else
MsgBox "数据库打开错误,请检查数据库名和表名。", vbExclamation, "注意"
End If
End Sub