2010-03-26 5 views
0

"[Microsoft] [ODBC SQL Server Driver] [SQL Server]"Microsoft "근처의 구문이 잘못되었습니다. 여기 "[Microsoft] [ODBC SQL Server 드라이버] [SQL Server]"Microsoft "근처에 잘못된 구문이 나타납니다.

코드입니다 :

Dim conn As ADODB.Connection 
Dim rst As ADODB.Recordset 
Dim stSQL As String 




Public Sub loadData() 
'This was set up using Microsoft ActiveX Data Components version 6.0. 



'Create ADODB connection object, open connection and 
'  construct the connection string object which is the DSN name. 
Set conn = New ADODB.Connection 
conn.ConnectionString = "sql_server" 

conn.Open 
'conn.Execute (strSQL) 

On Error GoTo ErrorHandler 

'Open Excel and run query to export data to SQL Server. 
strSQL = "SELECT * INTO SalesOrders " & _ 
     "FROM OPENDATASOURCE(Microsoft.ACE.OLEDB.12.0;" & _ 
     "Data Source=C:\Workbook.xlsx;" & _ 
     "Extended Properties=Excel 12.0; [Sales Orders])" 

conn.Execute (strSQL) 

'Error handling. 
ErrorExit: 
'Reclaim memory from the cntection objects 
Set rst = Nothing 
Set conn = Nothing 

Exit Sub 

ErrorHandler: 
    MsgBox Err.Description, vbCritical 
    Resume ErrorExit 


'clean up and reclaim memory resources. 
conn.Close 
If CBool(cnt.State And adStateOpen) Then 
Set rst = Nothing 
Set conn = Nothing 

End If 

End Sub 

답변

0

공급자 OPENDATASOURCE에 전달 된 인수는 문자열이므로 따옴표로 묶어야합니다. OPENDATASOURCE 호출 내에서 시트를 주소 지정하는 경우에도 잘못되었습니다.

 strSQL = "SELECT * INTO SalesOrders " & _ 
     "FROM OPENDATASOURCE('Microsoft.ACE.OLEDB.12.0'," & _ 
     "'Data Source=C:\Workbook.xlsx;" & _ 
     "Extended Properties=Excel 12.0')...[Sales Orders]" 
+0

확인. 무슨 뜻인지 알 겠어. 나는 변화를 만들었지 만, 이제는 [Microsoft] [ODBC SQL Server Driver] [SQL Server] OLE DB 공급자 "Microsoft.ACE.OLEDB.12.0"연결된 서버 "(null)"메시지를 반환했습니다 "지정되지 않은 오류" . – brohjoe

+0

해당 쿼리를 실행하는 계정에 파일에 액세스 할 수있는 권한이 있어야하며 (아마도 읽기 및 쓰기가 필요함) 파일이 다른 곳에 열려 있지 않은지 확인하십시오. (해당 경로의 C : \는 서버의 C 드라이브입니다!) –

+0

도움을 주셔서 감사합니다. 당신도 너무 좋아! – brohjoe

0

는 다음과 같은 구문을 시도

XLS

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[FilePath];Extended Properties=”Excel 8.0;HDR=YES;IMEX=1” 

XLSX

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=[FilePath];Extended Properties=Excel 12.0 Xml;HDR=YES;IMEX=1 

HDR = Yes (예) 지정의 첫 번째 행 데이터 (예, 아니오) 열 이름을 포함하고 데이터가 있으므로 적절하게 설정하지

IMEX = 1 드라이버가 항상 텍스트로 "혼합"데이터 열을 읽어야 함을 지정

심판 : http://weblogs.asp.net/rajbk/archive/2009/05/02/uploading-an-excel-file-to-sql-through-an-asp-net-webform.aspx

+0

'Provider = Microsoft ...'를 넣었지만 "Incorrect Syntax Near Microsoft"대신 "Incorrect syntax near Provider"가 표시됩니다. – brohjoe

관련 문제