Ну, вы можете значительно сократить объем работы SQL здесь.
If Not IsNull(rs("value1")) Then
testArray = Split(rs("value1"), ",")
rs2.Open "SELECT Date FROM TBL_TestTable WHERE Record_URN = '" & testArray(1) & "'", objSystemCon.ActiveCon, adOpenStatic, adLockReadOnly
If rs2.EOF Then
End If
If Not rs2.EOF Then
rs("DateField") = Format$(rs2("Date"), "dd mmm yy h:mm:ss")
rs.Update
intWriteCount = intWriteCount + 1
End If
rs2.Close
Вы, по сути, мне кажется (я не использовал VB6 и ADO в течение 10 лет), загружают исходный набор записей вашей записи, проверяют значение и, если это значение не равно NULL, запустив второе, выберите ТО обновление набор записей ....
Вы можете вместо всего этого просто создать объект команды
Объявите это перед своими циклами
dim objComm
set objComm = Server.CreateObject("ADODB.Command")
objComm.ActiveConnection = objSystemCon.ActiveCon 'I think this is your connn.
objComm.CommandType = 1 'adCmdText
Используйте это в своем цикле
objComm.CommandText = "UPDATE DateTable SET DateField = (SELECT Date FROM TBL_TestTable WHERE Record_URN = '" & testArray(1) & "'")
objComm.Execute
Вместо того чтобы делать второй осторожный выбор, извлекать данные, затем обновлять и выталкивать их обратно, просто выталкивают оператор обновления. Это должно ускорить обработку ваших записей ..... Я знаю, что когда-то давно писал такие вещи на VB6:)
Таким образом, ваш код теперь должен читаться как
dim objComm
set objComm = Server.CreateObject("ADODB.Command")`
objComm.ActiveConnection = objSystemCon.ActiveCon 'I think this is your connn.
objComm.CommandType = 1 'adCmdText
rs.Open "select reference,value1,datefield from datetable where field1 = 'value1' " & _
"order by reference", objAuditCon.ActiveCon, adOpenStatic, adLockPessimistic
Do While Not rs.EOF
intReadCount = intReadCount + 1
DoEvents
If Not IsNull(rs("value1")) Then
testArray = Split(rs("value1"), ",")
objComm.CommandText = "UPDATE DateTable SET DateField = (SELECT Date FROM TBL_TestTable WHERE Record_URN = '" & testArray(1) & "'")
objComm.Execute
End If
rs.MoveNext
Loop
rs.Close
ваш оператор выбора все еще там, как вы можете видеть, теперь это дополнительный выбор, преимущество огромно, вы не рисуете записи на сервере, а затем обновляете их. Вы отправляете серверу заявление на обновление. Вы сокращаете свои поездки пополам.
Надеюсь, это имело смысл.