還有就是運行一個計劃任務,每天從文本文件導入文本的功能:回車用記事本
Public Function ImportPersons(ByVal strImportFile As String) As Variant
Dim intFile As Integer, strRecord As String, strFields() As String
Dim lngReadCount As Long, blnChanged As Boolean
On Error GoTo GenErr:
intFile = FreeFile
Open strImportFile For Input As #intFile
Set rs = New ADODB.Recordset
DoEvents
Do While Not EOF(intFile)
Line Input #intFile, strRecord
lngReadCount = lngReadCount + 1
If strRecord <> "" Then
If InStr(strRecord, "|") > 0 Then
strFields = Split(strRecord, "|")
Else
strFields = Split(strRecord, ",")
End If
blnChanged = False
If Trim(strFields(3)) <= " " Then ' otherwise this is a company name entry and there are no person details
rs.Open "Select * from dbPerson where Reference = '" & strFields(0) & "'", objCon.ActiveCon, adOpenStatic, adLockPessimistic
If rs.EOF Then
rs.AddNew
rs("Reference") = Trim(strFields(0))
rs("FirstNames") = Trim(strFields(1))
rs("Surname") = Trim(strFields(2))
rs("DateOfBirth") = strFields(4)
rs("Height") = strFields(6)
rs("Mobile") = Trim(strFields(7))
rs("PNCID") = Trim(strFields(5))
rs("LastUpdated") = Now
rs.Update
Else
If rs("FirstNames") <> Trim(strFields(1)) Then
rs("FirstNames") = Trim(strFields(1))
blnChanged = True
End If
If rs("Surname") <> Trim(strFields(2)) Then
rs("Surname") = Trim(strFields(2))
blnChanged = True
End If
If rs("DateOfBirth") <> strFields(4) Then
rs("DateOfBirth") = strFields(4)
blnChanged = True
End If
If rs("Height") <> strFields(6) Then
rs("Height") = strFields(6)
blnChanged = True
End If
If rs("Mobile") <> Trim(strFields(7)) Then
rs("Mobile") = Trim(strFields(7))
blnChanged = True
End If
If rs("PNCID") <> Trim(strFields(5)) Then
rs("PNCID") = Trim(strFields(5))
blnChanged = True
End If
If blnChanged Then
rs("LastUpdated") = Now
rs.Update
End If
End If
rs.Close
End If
End If
Loop
Close #intFile
ImportPersons = "Total: " & lngReadCount
Exit Function
GenErr:
WriteError Err, Error$ & " in ImportPersons.", strErrorLog
ImportPersons = Error$
Exit Function
Resume
End Function
下面是一些樣本數據(它不是真實的數據):
11123455|Super|Woman||14/07/1962|02/111/111|L765|01110101010
預定的任務報告說,今天早上在文本文件中有一行(通常約爲50,000)。我已經加入了代碼,看起來VB6忽略了回車。
我用記事本打開了文件,我可以看到沒有回車符。當我使用textpad打開文件時,我可以看到回車。問題是什麼?
我的猜測是該文件使用'\ n'(UNIX風格)換行符。如果記事本是Windows風格的'\ r \ n',它將只顯示換行符,但如果沒有任何'\ r \ n',大多數其他文本編輯器都足夠聰明,可以使用'\ n'換行符文件。我懷疑VB6在這方面可能像記事本一樣行事。我不太瞭解VB6提出的修復建議;也許預處理文件以用'\ r \ n'替換所有'\ n'? – senshin
VB6文本I/O語句會將CR(舊的Mac標準)或CRLF(Microsoft標準)視爲行分界符,但不視爲裸LF(* NIX)。您可以使用FSO TextStream I/O,ADO Stream對象,Jet 4.0的Text IISAM,或者滾動您自己的讀取和拆分數據blob。 – Bob77