Microsoft Excel Driverを使用してExcel文書をadodb.recordsetにインポートして、重複行を削除してSQL Serverデータベースに格納できるようにしています。odbc excelドライバでデータ型をキャスト
最初の列の値は192,13U、JJJなどですが、何らかの理由でクエリでdouble型としてキャストされ、アルファ値を持つ行が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
簡単にテキストとして最初の列を取得する方法があります:
は、ここに私の機能ですか?
EDIT:私は"SELECT cast(RPOCode as varchar(10)), Description FROM [sheet1$]"
にしようとしたとき、私はクエリ式でこのエラー
「[Microsoft]の[ODBCエクセルドライバー]構文エラー(演算子がありません)を取得 '(varchar型としてコード)キャストは、' ODBC用のMicrosoft OLE DBプロバイダードライバ "
同じ結果を持つキャストタイプとしてvarchar、varchar(10)およびtextを試しました。
**何がエラーでしたか?!?!私たちは気になる読者ではありません - 私たちに知らせる必要があります! –
"[Microsoft] [ODBC Excel Driver]クエリ式 'cast(Code as varchar)'の構文エラー(演算子がありません)ODBCドライバのMicrosoft OLE DBプロバイダ キャストタイプとしてvarcharとtextを試しました。 – AndyD273