我正在使用Microsoft Excel驅動程序將Excel文檔導入adodb.recordset,以便我可以刪除重複的行並將其放入SQL Server數據庫中。使用odbc excel驅動程序投射數據類型
第一列的值爲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$]"
我得到這個錯誤
「[微軟] [ODBC Excel驅動程序]語法錯誤(缺少操作員)在查詢表達式 '投(代碼爲varchar)' Microsoft OLE DB提供程序的ODBC。驅動程序「
我試着varchar,varchar(10)和文本作爲鑄造類型具有相同的結果。
**你得到了什麼**錯誤?!?!我們不是心靈讀者 - 你需要讓我們知道! – 2011-02-04 16:34:30
「[Microsoft] [ODBC Excel驅動程序]在查詢表達式'cast(Code as varchar)'中的語法錯誤(缺少運算符)'我試過varchar和text作爲鑄造類型。 – AndyD273 2011-02-04 16:48:23