OLEDB连接避免在文本上自动转换为int



当运行一个简单的vbs代码来读取csv时。示例CSV:

AB,CD
XYZABDER,TLK431
..

带有以下代码

Set objConnection = CreateObject("ADODB.Connection")
Set objRecordset = CreateObject("ADODB.Recordset")
strPathtoTextFile = "C:xyz"
objConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & strPathtoTextFile & ";" & _
"Extended Properties=""HDR=YES;FMT=Delimited"""
objRecordset.Open "SELECT * FROM myfile.csv", objConnection
Do Until objRecordset.EOF
MsgBox "AB: " & objRecordset.Fields.Item("AB")
MsgBox "CD: " & objRecordset.Fields.Item("CD")
objRecordset.MoveNext
Loop

它还转换";TLK431";至431。只要我把";TLK";至";TLB";或者不管它读作字符串";TLB431";对于";TL";或";TLK";其转换为int 431。

无法理解此自动转换的原因。

目前,我的解决方法是一个模式文件。但我不喜欢它,我想问一个更好的解决方案和转换的原因。

Thx

这可能是编码问题。如果CSV文件包含Unicode字符,请确保CSV和VBS文件均保存为Unicode(UTF-16(,否则,请将两个文件都保存为ANSI。不要使用UTF-8。

最新更新