This questions is follow up from here. What I need to do now is break up the insert into command in SQL so that I am do not exceed the limitations.
This is what I have so far:
Sub second_export()
Dim sSQL As String, sCnn As String, sServer As String
Dim db As Object, rs As Object
sServer = "CATHCART"
sCnn = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=Portfolio_Analytics;Data Source=" & sServer & ";" & _
"Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;"
Set db = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
If db.State = 0 Then db.Open sCnn
Dim rw As Range, n As Long
Dim GLID, category, dt, amount
PropertyName = ActiveSheet.Range("F2").Value
InsertedDate = ActiveSheet.Range("G2").Value
StrSQL = "INSERT INTO SBC_Performance_Metrics VALUES"
Values = ""
For Each rw In ActiveSheet.Range("H2:AS47").Rows
'fixed per-row
GLID = Trim(rw.Cells(1).Value)
category = Trim(rw.Cells(2).Value)
'loopover the date columns
For n = 3 To rw.Cells.Count
dt = rw.Cells(n).EntireColumn.Cells(1).Value 'date from Row 1
amount = rw.Cells(n).Value
'Debug.Print PropertyName, GLID, category, amount, dt
Values = Values & "('" & GLID & "', " & "'" & PropertyName & "', " & "'" & category & "', " & amount & ", " & "'" & dt & "', " & "'" & InsertedDate & "'),"
'Debug.Print Values
Next n
Next rw
StrSQL = StrSQL & Values
StrSQL = Left(StrSQL, Len(StrSQL) - 2)
StrSQL = StrSQL & ");"
Debug.Print StrSQL
'Set rs = db.Execute(StrSQL)
End Sub
Everything does what I expect but I need to somehow break up the INSERT INTO
part so that I am not going over the 1000 insert limitations.
Any suggestions are greatly appreciated.