从 csv 文件中读取 ADODB select 中的小数点
Reading decimal dot in ADODB select from csv file
我在 Excel VBA 中使用 ADODB 连接创建了用户公式,以从 csv 文件中读取字段。一切都很好,但有一件事:当字段有小数点时(小数点字符是“.”),连接的结果是没有点的整个数字。例如,如果该字段包含 10.38,则结果将为 1038。
.csv 文件的分隔符是“;”,我尝试了 schema.ini 方法,为包含小数的特定字段指定分隔符和数据类型。
相关vba代码:
Dim xlcon As ADODB.Connection
Dim xlrs As ADODB.Recordset
Set xlcon = New ADODB.Connection
Set xlrs = New ADODB.Recordset
xlcon.Provider = "Microsoft.Jet.OLEDB.4.0"
xlcon.ConnectionString = "Data Source=" & currentDataFilePath & ";" & "Extended Properties=""text;HDR=Yes;"""
xlcon.Open
MyQuery = "SELECT " & myep & " AS DATO FROM [" & currentDataFileName & ".csv] WHERE ENT=" & ent & " AND FECHA='" & myfc & "'"
On Error GoTo misErrores
Set xlrs = xlcon.Execute(MyQuery)
resultado = xlrs.Fields(0)
xlrs.Close
Set xlrs = Nothing
xlcon.Close
Set xlcon = Nothing
Ep = resultado
schema.ini 文件:
[2175G.csv]
ColNameHeader = True
Format=Delimited(;)
col4="x1" Double
该文件有大约 100 个不同的字段,但我想我必须只为包含小数的字段指定类型。在这种情况下,只有位于第 4 位的名为 "x1" 的字段包含小数。不幸的是,这不起作用。难道我做错了什么?谢谢
请尝试其他驱动程序
Dim xlcon As ADODB.Connection
Dim currentDataFilePath As String
xlcon.Open "Driver=Microsoft Access Text Driver (*.txt, *.csv)" & _
";Dbq=" & currentDataFilePath & _
";Extensions=asc,csv,tab,txt;"
我认为问题是 CSV 文件包含以点作为小数点分隔符的值,例如 12.34
,但是客户端上的区域设置 运行 此程序设置为逗号作为小数点分隔符, 对吗?
根据 the documentation 你可以在 schema.ini 文件中指定小数点分隔符,所以尝试这样的事情:
[2175G.csv]
ColNameHeader = True
Format=Delimited(;)
DecimalSymbol=.
col4="x1" Double
我在 Excel VBA 中使用 ADODB 连接创建了用户公式,以从 csv 文件中读取字段。一切都很好,但有一件事:当字段有小数点时(小数点字符是“.”),连接的结果是没有点的整个数字。例如,如果该字段包含 10.38,则结果将为 1038。
.csv 文件的分隔符是“;”,我尝试了 schema.ini 方法,为包含小数的特定字段指定分隔符和数据类型。
相关vba代码:
Dim xlcon As ADODB.Connection
Dim xlrs As ADODB.Recordset
Set xlcon = New ADODB.Connection
Set xlrs = New ADODB.Recordset
xlcon.Provider = "Microsoft.Jet.OLEDB.4.0"
xlcon.ConnectionString = "Data Source=" & currentDataFilePath & ";" & "Extended Properties=""text;HDR=Yes;"""
xlcon.Open
MyQuery = "SELECT " & myep & " AS DATO FROM [" & currentDataFileName & ".csv] WHERE ENT=" & ent & " AND FECHA='" & myfc & "'"
On Error GoTo misErrores
Set xlrs = xlcon.Execute(MyQuery)
resultado = xlrs.Fields(0)
xlrs.Close
Set xlrs = Nothing
xlcon.Close
Set xlcon = Nothing
Ep = resultado
schema.ini 文件:
[2175G.csv]
ColNameHeader = True
Format=Delimited(;)
col4="x1" Double
该文件有大约 100 个不同的字段,但我想我必须只为包含小数的字段指定类型。在这种情况下,只有位于第 4 位的名为 "x1" 的字段包含小数。不幸的是,这不起作用。难道我做错了什么?谢谢
请尝试其他驱动程序
Dim xlcon As ADODB.Connection
Dim currentDataFilePath As String
xlcon.Open "Driver=Microsoft Access Text Driver (*.txt, *.csv)" & _
";Dbq=" & currentDataFilePath & _
";Extensions=asc,csv,tab,txt;"
我认为问题是 CSV 文件包含以点作为小数点分隔符的值,例如 12.34
,但是客户端上的区域设置 运行 此程序设置为逗号作为小数点分隔符, 对吗?
根据 the documentation 你可以在 schema.ini 文件中指定小数点分隔符,所以尝试这样的事情:
[2175G.csv]
ColNameHeader = True
Format=Delimited(;)
DecimalSymbol=.
col4="x1" Double