【Access源码示例】-导入导出系列-根据SQL语句导出数据到txt记事本-金宇
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> 源码示例


【Access源码示例】-导入导出系列-根据SQL语句导出数据到txt记事本

发表时间:2012/8/20 9:24:07 评论(3) 浏览(13824)  评论 | 加入收藏 | 复制
   
摘 要:可以自己指定sql语句导出,并且可以指定导出的分隔符号“,”、“|”、“;”、空格、制表符等
正 文:

'=====================================================
'函数名称: SQLExportToTxt
'功能描述: 根据SQL语句导出数据到记事本
'输入参数: strSQL     必选的。select选择性SQL语句
'                 FileName  可选。导出的记事本文件名
'                 Separator 可选。分隔符,可以是“,”、“|”、“;”、空格、制表符
'返回参数: 无
'使用示例: SQLExportToTxt "select * from 表名称/查询名称","导出数据.txt",","
'作      者: 金宇
'创建日期: 2012-8-19
'=====================================================
Public Function SQLExportToTxt(ByVal strSQL As String, ByVal FileName As String, ByVal Separator As Variant)
On Error GoTo Err_ExportToTxt
    Dim intI            As Integer
    Dim intMsgResult    As VbMsgBoxResult
    Dim rstCount        As Long
    Dim rst                  As Adodb.Recordset
    Dim FileNumber    As Integer
    Dim sText              As String
    Dim I As Long

    rstCount = CurrentProject.Connection.Execute("select count(*) from (" & strSQL & ") as temp_A")(0).Value  '取总的记录数
    If rstCount = 0 Then
        MsgBox ("没有数据可导出!"), vbExclamation, "提示"
        Exit Function
    End If

    If Trim$(FileName) = "" Then FileName = "导出的数据.txt"
    If Not FileName Like "*.txt" Then
        FileName = FileName & ".txt"
    End If
   
    If Not (FileName Like "[A-z]:\*" or FileName Like "\\*") Then
        With Application.FileDialog(2)
            .InitialFileName = FileName
            .AllowMultiSelect = False
            If .Show Then
                FileName = .SelectedItems(1)
            Else
                Exit Function
            End If
        End With
    End If
   
    '如果txt文件已存在,则先删除
    If Dir(FileName) <> "" Then Kill FileName
    Set rst = New Adodb.Recordset
    rst.Open strSQL, CurrentProject.Connection, 1, 1
    FileNumber = FreeFile                   ' Get unused file number
    Open FileName For Append As #FileNumber    ' Connect to the file

    Do While Not rst.EOF
        sText = ""
        For intI = 0 To rst.Fields.Count - 1
            sText = sText & rst.Fields(intI) & Separator
        Next
        sText = Left(sText, Len(sText) - 1)
        Print #FileNumber, sText                ' Append our string
    rst.MoveNext
    Loop
    rst.Close
    Close #FileNumber                       ' Close the file

    intMsgResult = MsgBox("数据已导出,是否打开并查看?", vbQuestion + vbYesNo)
    If intMsgResult = vbYes Then ShellEx (FileName)    '打开文件
   
Exit_ExportToTxt:
    On Error Resume Next
    DoCmd.Hourglass False
    Exit Function

Err_ExportToTxt:
    If Err = 70 Then
        MsgBox "无法删除文件 '" & FileName & "',可能该文件已被打开或没有权限。", vbCritical
    Else
        MsgBox Err.Source & " #" & Err & vbCrLf & vbCrLf & Err.Description, vbCritical
    End If
    Resume Exit_ExportToTxt
End Function


附   件:

点击下载此附件


演   示:


Access软件网交流QQ群(群号:198465573)
 
 相关文章
Transact-SQL语句进行导入导出操作  【金宇整理  2008/4/18】
[access查询]一句查询代码实现Excel数据导入导出  【红尘如烟  2010/10/14】
【access源码示例】导入导出系列--Excel固定格式的订单导...  【红尘如烟  2010/12/24】
【access源码示例】导入导出系列——Excel固定格式的订单数...  【红尘如烟  2011/1/13】
【access源码示例】导入导出系列--Excel导入时替换表中已...  【红尘如烟  2011/1/14】
【access源码示例】导入导出系列——Word数据导入导出  【红尘如烟  2011/1/14】
【access源码示例】导入导出系列——Excel固定格式导出(插...  【红尘如烟  2011/3/12】
【access源码示例】导入导出系列--Excel固定格式的订单数...  【红尘如烟  2011/4/1】
【access源码示例】导入导出系列——Excel数据高效导入示例  【红尘如烟  2011/5/24】
Word导入导出示例-文本窗体域方法  【风行  2012/6/11】
access2003官方下载,只要access  【Access2003官方下载  2012/6/16】
【access源码示例】-word导入导出系列-替换方式导出  【金宇  2012/8/6】
常见问答
技术分类
相关资源
文章搜索
关于作者

金宇

文章分类

文章存档

友情链接