Мне нужна помощь, у меня есть этот код, который переносит строки из моего файла Excel в SQL Server:
Sub Sql_Click()
Dim cnn As New ADODB.Connection
Dim iRowNo As Long
Dim qDATE, qSOURCE, qDESTINATION, qREFERENCE, qItemCode, qDescription, qUM, qPRICE, qQTY, qAMT, qMFG, qEXP, qLOT, qTRANSACTION, qConsignor, qDRDATE As String
Dim strSQLQuery As String
With Workbooks("test.xlsx").Sheets("DATABASE")
cnn.ConnectionString = "Provider=SQLOLEDB;Data Source=***,1433;Initial Catalog=***;User ID=***;Password=***;"
cnn.Open
cnn.Execute "delete from DelTrans2"
iRowNo = 2
Do Until .Cells(iRowNo, 1) = ""
qDATE = .Cells(iRowNo, 1)
qSOURCE = .Cells(iRowNo, 2)
qDESTINATION = .Cells(iRowNo, 3)
qREFERENCE = .Cells(iRowNo, 4)
qItemCode = .Cells(iRowNo, 5)
qDescription = .Cells(iRowNo, 6)
qUM = .Cells(iRowNo, 7)
qPRICE = .Cells(iRowNo, 8)
qQTY = .Cells(iRowNo, 9)
qAMT = .Cells(iRowNo, 10)
qMFG = .Cells(iRowNo, 11)
qEXP = .Cells(iRowNo, 12)
qLOT = .Cells(iRowNo, 13)
qTRANSACTION = .Cells(iRowNo, 14)
qConsignor = .Cells(iRowNo, 15)
qDRDATE = .Cells(iRowNo, 16)
cnn.Execute "insert into " & Range("D2").Value & " (DATE, SOURCE, DESTINATION, REFERENCE#, ITEMCODE, DESCRIPTION, UM, PRICE, QTY, AMOUNT, MFG, EXP, LOT, TRANS, CONSIGNOR, DRDATE) values ('" & qDATE & "','" & qSOURCE & "','" & qDESTINATION & "','" & qREFERENCE & "','" & qItemCode & "','" & qDescription & "','" & qUM & "','" & qPRICE & "','" & qQTY & "','" & qAMT & "','" & qMFG & "','" & qEXP & "','" & qLOT & "','" & qTRANSACTION & "','" & qConsignor & "','" & qDRDATE & "')"
iRowNo = iRowNo + 1
Loop
MsgBox "Saved to database!"
cnn.Close
Set cnn = Nothing
End With
End Sub
Я просто хочу знать, есть ли гораздо более эффективный способ сделать то же самоеуловка, этот код занимает более или менее 8 секунд, прежде чем он может успешно передать данные на SQL Server.
РЕДАКТИРОВАТЬ: я забыл сказать, что данные будут поступать с test.xlsx
, как вы можете видеть в моемкод.