Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

如何解决导出文本文件出现的最后一个多余的回车符?

何勇  发表于:2007-11-26 23:19:08  
复制

在用ADO导出为文本数据时,文本文件的最后就会出现一个没有数据的一行,请问怎么清除?

 

例:

910107080608040813820627
910107080608054502182427
910107080608101010837390
910107080608104802181514

在上面有一个空行.

 

Top
竹笛 发表于:2007-11-26 23:27:36
你的ADO代码呢?

何勇 发表于:2007-11-26 23:34:41

Public Function ExportNewPayToTxt(ByVal ExportDate As Date, _
                                  ByVal ExportFileName As String)

'''导出工资资料
'''Append:追加
'''Output:写入


    Dim Rs As New ADODB.Recordset

    Dim i As Integer

    On Error GoTo Err:

    i = 0

    Rs.Open "Select Trim(姓名),Trim(身份证号),实发工资*100 From 全员工资表 WHERE 银行帐号 Is Null and 是否发放工资=false and 全员工资年月=#" & ExportDate & "# order by 姓名", CurrentProject.Connection, adOpenDynamic, adLockOptimistic


    Open ExportFileName For Output As #2  ' 打开输出文件,以增加形式录入

    Do While Not Rs.EOF

        i = i + 1

        Print #2, i & vbTab & Rs(0) & vbTab & Rs(1) & vbTab & Rs(2)    ' 将数据写入文件。

        Rs.MoveNext

    Loop

    Rs.Close


    Close #2    ' 关闭文件

Err:

    Exit Function
End Function



竹笛 发表于:2007-11-26 23:42:25

试试吧:

Public Function ExportNewPayToTxt(ByVal ExportDate As Date, _
                                  ByVal ExportFileName As String)

'''导出工资资料
'''Append:追加
'''Output:写入
    Dim Rs As New ADODB.Recordset
    Dim i As Integer
    Dim x As Long    '如果记录多,要改成相应的类型,比如double
    Dim n As Long    '类型与x保持一致
    On Error GoTo Err:
    i = 0
    Rs.Open "Select Trim(姓名),Trim(身份证号),实发工资*100 From 全员工资表 WHERE 银行帐号 Is Null and 是否发放工资=false and 全员工资年月=#" & ExportDate & "# order by 姓名", CurrentProject.Connection, adOpenDynamic, adLockOptimistic
    Open ExportFileName For Output As #2  ' 打开输出文件,以增加形式录入
    x = Rs.RecordCount
    For n = 1 To x
        i = i + 1
        Print #2, i & vbTab & Rs(0) & vbTab & Rs(1) & vbTab & Rs(2)    ' 将数据写入文件。
        Rs.MoveNext
    Next n
    Rs.Close
    Close #2    ' 关闭文件
Err:
    Exit Function
End Function



何勇 发表于:2007-11-26 23:52:09

谢谢笛子,还是有最后一行,我分析了一下,这就是打开文本文件时的第一行,用ADO每增加一条记录,自动增加一行:)所以第一行就一直往后推了,现在就是要把这行去掉:(



竹笛 发表于:2007-11-27 00:11:20

在你的代码后面加一个过程

1、打开那个文本文件
竹笛 00:08:15
2、移到到最后一行
3、delete

以下代码共参考,是一个删除指定行的函数

 

Private Sub CmdDeleteLine_Click()
Const MAX_PATH = 260
Const NAME_LEN = MAX_PATH + 80

Dim inname As String
Dim strlen As Integer
Dim outpath As String
Dim outname As String
Dim infile As Integer
Dim outfile As Integer
Dim one_line As String
Dim target As String
Dim deleted As Integer

    On Error GoTo DeleteLineError
   
    ' Open the input file.
    inname = FileText.Text
    infile = FreeFile
    Open inname For Input As infile
   
    ' Open the output file.
    outpath = Space$(NAME_LEN)
    strlen = GetTempPath(NAME_LEN, outpath)
    If strlen = 0 Then
        MsgBox "Error getting temporary file path."
        Exit Sub
    Else
        outpath = Left$(outpath, strlen)
    End If
   
    outname = Space$(NAME_LEN)
    If GetTempFileName(outpath, "tmp", _
        0, outname) = 0 _
    Then
        MsgBox "Error getting temporary file name."
        Exit Sub
    End If
    strlen = InStr(outname, vbNullChar) - 1
    If strlen > 0 Then _
        outname = Left$(outname, strlen)
    outfile = FreeFile
    Open outname For Output As outfile

    MousePointer = vbHourglass
    DoEvents
   
    ' Copy the file skipping lines containing the
    ' target.
    deleted = 0
    target = TargetText.Text
    Do While Not EOF(infile)
        Line Input #infile, one_line
        If InStr(one_line, target) = 0 Then
            Print #outfile, one_line
        Else
            deleted = deleted + 1
        End If
    Loop
   
    ' Close the files.
    Close infile
    Close outfile
   
    ' Delete the original file.
    Kill inname
   
    ' Give the new file the old name.
    Name outname As inname
    MsgBox Format$(deleted) & " lines deleted."

DeleteLineError:
    MousePointer = vbDefault
    Exit Sub
End Sub



何勇 发表于:2007-11-27 08:59:05

问题解决了:),谢谢笛子,谢谢andymark 

 

andymark  (2007-11-27 00:37:20)
你试试下面的方法是否可行
输出文本文件后,调用下面的代码
 Const ForReading = 1, ForWriting = 2, ForAppending = 3
    Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0

    Dim Fs, F, TS, S
    Set Fs = CreateObject("Scripting.FileSystemObject")
    Set F = Fs.OpenTextFile(CurrentProject.Path & "\" & "lhl.txt", _
                            ForReading, False, TristateUseDefault)

    S = F.readall()     '读取文本文件内容
    S = Left(S, Len(S) - 2)  '清除文本内容最后2个字符,也就是回车符
   
    Set F = Fs.OpenTextFile(CurrentProject.Path & "\" & "lhl.txt", ForWriting, TristateFalse)
    F.Write S   '重新回写 
    F.Close



总记录:6篇  页次:1/1 9 1 :