ADODB记录集不会在MS SQL的临时表中添加新记录

ADODB记录集不会在MS SQL的临时表中添加新记录,sql,sql-server,excel,vba,adodb,Sql,Sql Server,Excel,Vba,Adodb,我想创建一个带有两个字段“ID”和“TempData”的临时表。然后希望通过循环将excel工作表中的数据插入到该表中。我创建了临时表,但当我尝试向该表中添加数据时,它失败了。有没有人想到在不循环的情况下将excel列值移动到临时表中? 谁能帮忙吗 Sub MPNTEST() Dim dbCon As ADODB.Connection, dbt As ADODB.Recordset, dbtf As ADODB.Field, r As Range, SqlQry1 As String Set

我想创建一个带有两个字段“ID”和“TempData”的临时表。然后希望通过循环将excel工作表中的数据插入到该表中。我创建了临时表,但当我尝试向该表中添加数据时,它失败了。有没有人想到在不循环的情况下将excel列值移动到临时表中? 谁能帮忙吗

Sub MPNTEST()

Dim dbCon As ADODB.Connection, dbt As ADODB.Recordset, dbtf As ADODB.Field, r As Range, SqlQry1 As String
Set dbCon = New ADODB.Connection
Set dbt = New ADODB.Recordset
dbCon.ConnectionString = SqlConStr
On Error GoTo CloseConnection

SqlQry1 = "Use tempdb CREATE TABLE #TempTbl ( ID INT Primary KEY IDENTITY(1,1),TempData NVARCHAR(255))"

dbCon.Open   
dbCon.Execute (SqlQry1)

With dbt
    .ActiveConnection = dbCon
    .Source = "#TempTbl"
    .LockType = adLockOptimistic
    .CursorType = adOpenForwardOnly
    .Open
    For Each r In ActiveSheet.Range("AE2:AE10")
        .AddNew
        .Fields("TempData").Value = r.Value
        .Update                                               '###Here it fails
    Next r
End With
dbt.Close    
dbCon.Close

End Sub
希望这有帮助(我没有测试:

Sub MPNTEST()

Dim dbCon As ADODB.Connection, dbt As ADODB.Recordset
Dim dbtf As ADODB.Field, r As Range, SqlQry1 As String
Dim SQLInsert$

Set dbCon = New ADODB.Connection
'Set dbt = New ADODB.Recordset

dbCon.ConnectionString = SqlConStr

On Error GoTo CloseConnection

''create table db..table
SqlQry1 = "CREATE TABLE tempdb..#TempTbl ( ID INT Primary KEY IDENTITY(1,1),TempData NVARCHAR(255))"

dbCon.Open   
dbCon.Execute (SqlQry1)
dbCon.Execute "use tempdb" ' Move to tempdb

With dbt

    For Each r In ActiveSheet.Range("AE2:AE10")
        SQLInsert = "Insert into #TempTbl(TempData) values('" & Replace(""& r.Value, "'", "''") &"')"
        dbCon.Execute (SQLInsert)
    Next r
End With
'dbt.Close    
dbCon.Close

End Sub

它以什么方式失败?如果它似乎没有任何记录,请解释您是如何观察到这一点的。您在普通表中尝试过吗?@Nick.McDermaid我不能使用记录集方法添加记录。在sql中从excel列循环到临时表。但是,如果我将Insert写入查询,则它可以工作,但不能通过循环。我认为您应该d测试r.Value是否为Nothing,如果为Nothing,则应将DBNull.Value设置为Nothing。Values不起作用?不能?这些词在解决问题时没有任何用处。如何“不能”您?是否收到错误?如果没有收到错误,您是如何观察到没有插入任何记录的。您还没有描述症状。这里失败在代码中是什么意思?是否有错误?感谢您的帮助。Getting error“查询无法更新,因为FROM子句不是一个简单的表名。”我再次编辑代码,我没有像您这样的真实环境,它只是一个原型。请测试。希望它工作正常。好哇!它工作正常。Dim SQLInsert$是什么,它是如何工作的,以便我理解。但是我非常感谢您的帮助。我在这里找到了声明: