【发布时间】:2018-08-15 09:07:18
【问题描述】:
我想创建一个包含两个字段“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
【问题讨论】:
-
以什么方式失败?如果它似乎没有任何记录,请说明您是如何观察到这一点的。你试过普通桌子吗?
-
@Nick.McDermaid 我无法使用记录集方法添加记录。从 excel 列循环到 sql 中的临时表。但是,如果我编写 Insert Into 查询,那么它可以工作,但不能通过循环。
-
我认为你应该测试 r.Value 是否不是 Nothing,如果 Nothing 你应该输入 DBNull.Value
-
不起作用?不能?这些话在解决问题上的用处为零。你怎么“不能”?你有错误吗?如果您没有收到错误,您如何观察到没有插入任何记录。您尚未描述症状。
-
Here it failed 在您的代码中是什么意思?有错误吗?
标签: sql sql-server excel vba adodb