VBA代码中的语法错误 - 运行时错误'-2147217900(80040e14)'

时间:2018-03-13 17:49:47

标签: access-vba

我现在有另一个问题,因为数据库无法处理捕获的数据量,所以我们决定将事情移到服务器上。

缺点是:

我尝试过使用我现有的代码通过transferspreadsheet方法将数据导入到tmp文件中,但这对SQL Server来说已经很久了。我想继续以编程方式执行此操作并使用以下代码。我不确定这是否有效,因为我无法通过语法错误。如果有人能提供帮助,我们将不胜感激

代码开始:

Dim CN As ADODB.Connection
Dim strConn As String
Dim strSQL As String
Dim strXLSource As String
Dim lngRecsaff As Long

strConn = "Driver={SQL Server};Server=logistics.companyname.com;Database=ITM;Trusted_Connection=Yes;"

Set CN = New ADODB.Connection

CN.Open strConn

strXLSource = ("C:\Users\GONZW053\Documents\My Desktop Documents\Monster Database Exports\DTPM - WDW DLR\book1.xlsx;Extended Properties= Excel 12.0")

strSQL = "INSERT INTO [tmpWDWDLR] SELECT * FROM OPENDATASOURCE('Microsoft.ACE.OLEDB.12.0','Data Source = '" & strXLSource & "')"
Debug.Print strSQL
CN.Execute strSQL, lngRecsaff, adExecuteNoRecords
Debug.Print "Records Affected: " & lngRecsaff

CN.close
Set CN = Nothing

我期待着帮助,因为这个网站和贡献者是一个很好的知识来源。谢谢!

1 个答案:

答案 0 :(得分:0)

由于服务器上没有Excel文件,因此无法在OPENROWSETOPENDATASOURCE命令中使用它。

但是,使用Access,您可以使用插入查询将数据从Excel文件插入SQL服务器:

INSERT INTO [ODBC;Driver={SQL Server};Server=logistics.companyname.com;Database=ITM;Trusted_Connection=Yes;].tmpWDWDLR
SELECT * 
FROM [Sheet1$] 
IN 'C:\Users\GONZW053\Documents\My Desktop Documents\Monster Database Exports\DTPM - WDW DLR\book1.xlsx'[Excel 12.0 XML;HDR=No;]

Sheet1$是您搬家的Excel文件的范围)

据我所知,这种方法的开销相对较小。当然,移动大文件只需要时间。