sql-server – SQL复制表值到新表

您好我正在尝试使用Select * INTO查询将excel表中的值复制到同一数据库中的新表.

提取到excel的数据来自其他表,在编辑excel中的一些列之后,我需要将excel表发送回SQL数据库并创建新表.

我的代码出现问题,说错误:

Run- time error '-2147217900 ' Automation Error

我正在使用VBA宏将表值导入Excel并从Excel导出到SQL.

这是我的代码

Dim adoCN As ADODB.Connection
Dim sConnString As String
Dim sSQL As String
Dim lRow As Long, lCol As Long

sConnString = "Provider=sqloledb;Server=;Database=mycon;User Id=;Password="

Set adoCN = CreateObject("ADODB.Connection")

adoCN.Open sConnString

'Assumes that you have Field1, Field2 and Field3 in columns A, B and C
'For this example we can assume that the data exists on Sheet1, with a header on row
'1 and data in rows 2-11
'Also assume that the fields are defined as character (e.g. varchar or char)
'Text values must be enclosed in apostrophes whereas numeric values should not.

'adoCN.Open

For lRow = 1 To ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row

sSQL = "SELECT * INTO TestTable FROM Sheets(1)$"

***adoCN.Execute sSQL***

Next lRow

adoCN.Close

Set adoCN = Nothing


'On Error GoTo 0

行错误:adoCN.Execute sSQL

请帮帮我.

最佳答案 我很确定错误是SQL无法识别“Sheets(1)$”.短语i“sSQL”被发送到adodb.connection,因此它不在Excel中处理(尽管从Excel-VBA调用).因此,Excel中的任何引用都必须作为字符串传递,否则它们将导致错误.

我不会尝试将整个表一次放入SQL,但是这行是行,因为如果你有任何数据问题(字符串为Long,错误的数据格式),整个表将被抛回.

我会让它与http://www.vb-magazin.de/forums/forums/post/9581.aspx相似

(如果您需要任何帮助翻译,请告诉我)

…有一个重要的区别:在每个“add.new”成功之后,我会在Excel中的适当行中添加一条注释,因此它肯定不会再次传输.这样你就可以在dbRecord.Update之后添加这行

xls_Appl.ActiveCell.Offset(I,6).Value = "send_to_sql"

当然,在处理它的每一行的开头,你想要检查这个文本是否已经存在,如果是这种情况,请转到下一个项目.

我希望这可以帮助你,
马克斯

点赞