ADODB Recordset 在 MS SQL 中临时 Table 不添加新记录
ADODB Recordset Does Not Add New Records In Temporary Table in MS SQL
我想创建一个临时 table,其中包含两个字段 "ID" 和 "TempData"。然后想通过循环将数据从 excel sheet 插入 table。我创建了临时 table 但是当我尝试将数据添加到 table 时它失败了。有没有人知道在不循环的情况下将 excel 列值移动到临时 table ?
谁能帮帮忙
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
我想创建一个临时 table,其中包含两个字段 "ID" 和 "TempData"。然后想通过循环将数据从 excel sheet 插入 table。我创建了临时 table 但是当我尝试将数据添加到 table 时它失败了。有没有人知道在不循环的情况下将 excel 列值移动到临时 table ? 谁能帮帮忙
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