2010-03-26 25 views
0

Я получаю сообщение об ошибке «[Microsoft] [ODBC SQL Server Driver] [SQL Server] Неверный синтаксис рядом с« Microsoft ».Получение «[Microsoft] [ODBC SQL Server Driver] [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)» возвращенное сообщение «Unspecified error» , – brohjoe

+0

Убедитесь, что учетная запись, под которой выполняется ваш запрос, имеет права доступа к файлу (возможно, требуется чтение и запись) и убедитесь, что файл не открыт нигде. (Также помните, что C: \ в этом пути - диск C на сервере!) –

+0

Спасибо за помощь Alex. Ты тоже Радж! – 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 ...», но теперь вместо «Неправильный синтаксис рядом с Microsoft» я получаю «Неправильный синтаксис рядом с провайдером». – brohjoe

Смежные вопросы