The function I have below is taking between 6 and 8 seconds to process per record, has anyone any idea's how I can speed it up?
The main field being processed is a 1500 character memo field.
Thanks Ben
Public Function GoGadgetGo(activityCode, scheduleStart, scheduleCode, attributeValue, exceptID)
Dim db As Database
Dim rec As DAO.Recordset
Dim rec2 As DAO.Recordset
Dim codeTrue() As Integer, codeFalse() As Integer, maxVal As Integer
Set db = CurrentDb
Set rec2 = db.OpenRecordset("SELECT Count(attrval.ATTR_VALUE_NAME) FROM attrval WHERE (((attrval.ATTR_ID) = 1));", dbOpenDynaset)
maxVal = rec2(0)
rec2.Close
ReDim codeTrue(maxVal)
ReDim codeFalse(maxVal)
For i = scheduleStart To (scheduleStart + (Len(scheduleCode) - 1))
activity = Right(Left(activityCode, i), 1)
schedule = Right(Left(scheduleCode, i), 1)
activity = Asc(activity)
schedule = Asc(schedule)
Set rec = db.OpenRecordset("SELECT attrmap.ATTR_VALUE_ID FROM attrmap WHERE (((attrmap.ATTR_ID) = 1) And ((attrmap.EXC_ID) =" & schedule & "
);", dbOpenDynaset)
If activity = schedule Then
codeTrue(rec(0)) = codeTrue(rec(0)) + 1
Else: codeFalse(rec(0)) = codeFalse(rec(0)) + 1
End If
rec.Close
Next
Set db = Nothing
For i = 1 To maxVal
codeTrue(i) = IIf(codeTrue(i) = Empty, 0, codeTrue(i))
codeFalse(i) = IIf(codeFalse(i) = Empty, 0, codeFalse(i))
GoGadgetGo = GoGadgetGo & codeTrue(i) & "," & codeFalse(i) & ","
Next
i = Len(GoGadgetGo)
GoGadgetGo = Left(GoGadgetGo, i - 1)
End Function
The main field being processed is a 1500 character memo field.
Thanks Ben
Public Function GoGadgetGo(activityCode, scheduleStart, scheduleCode, attributeValue, exceptID)
Dim db As Database
Dim rec As DAO.Recordset
Dim rec2 As DAO.Recordset
Dim codeTrue() As Integer, codeFalse() As Integer, maxVal As Integer
Set db = CurrentDb
Set rec2 = db.OpenRecordset("SELECT Count(attrval.ATTR_VALUE_NAME) FROM attrval WHERE (((attrval.ATTR_ID) = 1));", dbOpenDynaset)
maxVal = rec2(0)
rec2.Close
ReDim codeTrue(maxVal)
ReDim codeFalse(maxVal)
For i = scheduleStart To (scheduleStart + (Len(scheduleCode) - 1))
activity = Right(Left(activityCode, i), 1)
schedule = Right(Left(scheduleCode, i), 1)
activity = Asc(activity)
schedule = Asc(schedule)
Set rec = db.OpenRecordset("SELECT attrmap.ATTR_VALUE_ID FROM attrmap WHERE (((attrmap.ATTR_ID) = 1) And ((attrmap.EXC_ID) =" & schedule & "
If activity = schedule Then
codeTrue(rec(0)) = codeTrue(rec(0)) + 1
Else: codeFalse(rec(0)) = codeFalse(rec(0)) + 1
End If
rec.Close
Next
Set db = Nothing
For i = 1 To maxVal
codeTrue(i) = IIf(codeTrue(i) = Empty, 0, codeTrue(i))
codeFalse(i) = IIf(codeFalse(i) = Empty, 0, codeFalse(i))
GoGadgetGo = GoGadgetGo & codeTrue(i) & "," & codeFalse(i) & ","
Next
i = Len(GoGadgetGo)
GoGadgetGo = Left(GoGadgetGo, i - 1)
End Function