【发布时间】:2011-06-21 11:42:20
【问题描述】:
我正在使用 Microsoft Excel 驱动程序将 Excel 文档导入 adodb.recordset,以便我可以删除重复的行并将其放入 SQL Server 数据库中。
第一列具有 192、13U、JJJ 等值,但由于某种原因,查询将其转换为双精度值,并且任何具有 alpha 值的行都将转换为 Null。据我所知,这是因为多数类型是数字而不是文本。
我尝试投射它,但出现错误。
这是我的功能:
Function Read_Excel(ByVal sFile As String) As ADODB.Recordset
On Error GoTo fix_err
Dim rs As ADODB.Recordset
rs = New ADODB.Recordset
Dim sconn As String
rs.CursorLocation = ADODB.CursorLocationEnum.adUseClient
rs.CursorType = ADODB.CursorTypeEnum.adOpenKeyset
rs.LockType = ADODB.LockTypeEnum.adLockBatchOptimistic
sconn = "DRIVER=Microsoft Excel Driver (*.xls); ImportMixedTypes=Text; " & "DBQ=" & sFile & ";Extended Properties='Excel 8.0;HDR=No;IMEX=1';"
rs.Open("SELECT Code, Description FROM [sheet1$]", sconn)
tot += rs.RecordCount
rs.Close()
rs.Open("SELECT Distinct * FROM [sheet1$]", sconn)
Read_Excel = rs
rs = Nothing
Exit Function
fix_err:
Debug.Print(Err.Description + " " + _
Err.Source, vbCritical, "Import")
Err.Clear()
End Function
有没有办法轻松地将第一列作为文本获取?
编辑:当我尝试"SELECT cast(RPOCode as varchar(10)), Description FROM [sheet1$]" 时出现此错误
“[Microsoft][ODBC Excel 驱动程序] 查询表达式 'cast(Code as varchar)' 中的语法错误(缺少运算符)。用于 ODBC 驱动程序的 Microsoft OLE DB 提供程序”
我尝试了 varchar、varchar(10) 和 text 作为转换类型,结果相同。
【问题讨论】:
-
WHAT 你遇到了什么错误?!?!我们不是读心者 - 你需要让我们知道!
-
"[Microsoft][ODBC Excel Driver] 查询表达式'cast(Code as varchar)'中的语法错误(缺少运算符)。Microsoft OLE DB Provider for ODBC Drivers" 我试过 varchar 和 text作为铸造类型。