Office中国论坛/Access中国论坛

标题: 求助,如何将文本文件自动转入数据库中 [打印本页]

作者: ccczzz    时间: 2004-4-28 03:57
标题: 求助,如何将文本文件自动转入数据库中
如何将文本文件自动转入数据库中,[attach]4457[/attach]
作者: ccczzz    时间: 2004-4-29 04:05
请各位多多关照
作者: zhuyiwen    时间: 2004-4-29 17:52
看了你的Rec01.txt和Rec02.txt文件, 由于文件中包含了一些无法显示的字符, 因此:

首先你必须将这些无法显示的字符去掉, 具体办法是将文件读到一个字符数组中, 遍历数组中的每一个字符, 将字符的ASCII小于32的都变成32(即空格,但为ASCII为10或13的不要转,因为它们一为回车,一为换行), 然后再来进行数据转换操作.
作者: ccczzz    时间: 2004-4-30 03:39
斑竹能否抽空帮助做个范例?谢谢
作者: zhuyiwen    时间: 2004-4-30 20:17
这段代码,你试试:

Public Sub Turn(ByVal Filename As String)
    Dim intFileNo As Integer
    Dim BLOB() As Byte
    Dim lngFile As Long
    Dim i As Long
   
    intFileNo = FreeFile
    Open Filename For Binary As intFileNo
    lngFile = LOF(intFileNo)
    ReDim BLOB(lngFile)
   
    Get intFileNo, , BLOB
    Close intFileNo
   
    For i = 0 To lngFile - 1
        If BLOB(i) < 32 And BLOB(i) <> 10 Then BLOB(i) = 32
    Next
   
   
    intFileNo = FreeFile
    Open Filename & "-n.txt" For Binary As intFileNo
    Put intFileNo, , BLOB
    Close intFileNo

    Dim ss As String
    Dim kk
    Dim jj, dd
   
    Open Filename & "-n.txt" For Input As intFileNo
    Line Input #1, ss
    Close intFileNo
    kk = Split(ss, Chr(10))
    lngFile = UBound(kk)
   
    Dim rs As New ADODB.Recordset
    rs.Open "[表2]", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
    rs.AddNew
   
    For i = 0 To lngFile - 1
        ss = "": dd = ""
        kk(i) = LTrim(kk(i))
        
        If kk(i) <> "" Then
            If InStr(1, kk(i), " ") > 0 Then ss = Left(kk(i), InStr(1, kk(i), " ") - 1)
            dd = LTrim(Mid(kk(i), Len(ss) + 5))
            If InStr(1, dd, " ") > 0 Then dd = Left(dd, InStr(1, dd, " ") - 1)
            Select Case ss
            Case "Date":        rs("Date") = dd & " "
            Case "Operator":    rs("OperatorID") = dd & " "
            Case "atient":     rs("atientID") = dd & " "
            Case "Type":        rs("Type") = dd & " "
            Case "Temp":        rs("Temp") = dd & " "
            Case "tHb":         rs("tHb") = dd & " "
            Case "FIO2":        rs("FIO2") = dd & " "
            Case "pH(T)":       rs("pH") = dd & " "
            Case "pCO2(T)":     rs("pCO2") = dd & " "
            Case "pO2(T)":      rs("pO2") = dd & " "
            Case "HCO3-":       rs("HCO3-") = dd & " "
            Case "SBC":         rs("SBC") = dd & " "
            Case "ABE":         rs("ABE") = dd & " "
            Case "SBE":         rs("SBE") = dd & " "
            Case "tCO2":        rs("tCO2") = dd & " "
            Case "sO2":         rs("sO2") = dd & " "

            End Select
            
        End If
    Next
    rs.Update
    rs.Close
    Set rs = Nothing
End Sub

==============
例如:
Call Turn(currentproject.Path & "\rec01.txt")


祝你好运!
作者: ccczzz    时间: 2004-4-30 21:09
标题: 调试出现错误,见附件
调试出现错误,见附件,谢谢[attach]4507[/attach]
作者: zhuyiwen    时间: 2004-4-30 21:22
[quote]以下是引用ccczzz在2004-4-30 13:08:56的发言:
调试出现错误,见附件,谢谢[attach]4508[/attach]
作者: ccczzz    时间: 2004-5-1 01:31
下载了您得例程,同样出错,同样的提示,我的环境是win98+access2000,好像也没有丢失引用,请指点,谢谢
作者: zhuyiwen    时间: 2004-5-1 04:41
    kk = Split(ss, Chr(10))

Split函数是VBA的内置函数, 不应该出错. 你最好检查一下你ACCESS是否正常.
作者: ccczzz    时间: 2004-5-1 05:53
重装office,测试成功,谢谢您的帮助。
作者: zhuyiwen    时间: 2004-5-1 06:18
[em26]
作者: ccczzz    时间: 2004-5-2 03:12
标题: 如何使收到的字符串保存在一个文本文件中
这个串口通信测试程序已通过测试,在access中能正常发送和接收,如何使收到的字符串自动(也可以手动)保存在一个文本文件中,每接收一次,保存一次;以递增编号区别,请帮助,谢谢[attach]4518[/attach]
作者: zhuyiwen    时间: 2004-5-3 00:13
Sorry, 没有测试条件,只好你自己解决罗。
作者: ccczzz    时间: 2004-5-25 03:32
以下是引用zhuyiwen在2004-4-30 12:16:38的发言:

这段代码,你试试:



Public Sub Turn(ByVal Filename As String)

    Dim intFileNo As Integer

    Dim BLOB() As Byte

    Dim lngFile As Long

    Dim i As Long

   

    intFileNo = FreeFile

    Open Filename For Binary As intFileNo

    lngFile = LOF(intFileNo)

    ReDim BLOB(lngFile)

   

    Get intFileNo, , BLOB

    Close intFileNo

   

    For i = 0 To lngFile - 1

        If BLOB(i) < 32 And BLOB(i) <> 10 Then BLOB(i) = 32

    Next

   

   

    intFileNo = FreeFile

    Open Filename & "-n.txt" For Binary As intFileNo

    Put intFileNo, , BLOB

    Close intFileNo



    Dim ss As String

    Dim kk

    Dim jj, dd

   

    Open Filename & "-n.txt" For Input As intFileNo

    Line Input #1, ss

    Close intFileNo

    kk = Split(ss, Chr(10))

    lngFile = UBound(kk)

   

    Dim rs As New ADODB.Recordset

    rs.Open "[表2]", CurrentProject.Connection, adOpenKeyset, adLockOptimistic

    rs.AddNew

   

    For i = 0 To lngFile - 1

        ss = "": dd = ""

        kk(i) = LTrim(kk(i))

        

        If kk(i) <> "" Then

            If InStr(1, kk(i), " ") > 0 Then ss = Left(kk(i), InStr(1, kk(i), " ") - 1)

            dd = LTrim(Mid(kk(i), Len(ss) + 5))

            If InStr(1, dd, " ") > 0 Then dd = Left(dd, InStr(1, dd, " ") - 1)

            Select Case ss

            Case "Date":        rs("Date") = dd & " "

            Case "Operator":    rs("OperatorID") = dd & " "

            Case "atient":     rs("atientID") = dd & " "

            Case "Type":        rs("Type") = dd & " "

            Case "Temp":        rs("Temp") = dd & " "

            Case "tHb":         rs("tHb") = dd & " "

            Case "FIO2":        rs("FIO2") = dd & " "

            Case "pH(T)":       rs("pH") = dd & " "

            Case "pCO2(T)":     rs("pCO2") = dd & " "

            Case "pO2(T)":      rs("pO2") = dd & " "

            Case "HCO3-":       rs("HCO3-") = dd & " "

            Case "SBC":         rs("SBC") = dd & " "

            Case "ABE":         rs("ABE") = dd & " "

            Case "SBE":         rs("SBE") = dd & " "

            Case "tCO2":        rs("tCO2") = dd & " "

            Case "sO2":         rs("sO2") = dd & " "



            End Select

            

        End If

    Next

    rs.Update

    rs.Close

    Set rs = Nothing

End Sub



==============

例如:

Call Turn(currentproject.Path & "\rec01.txt")





祝你好运!

这段代码已经运用,但是没有全部看懂意思,查阅了帮助,还是不太明白,请各位帮助注译一下,谢谢。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3