I am working a school project which is a simple split database with form that performs many calculations. Currently, I am using Dlookups but it is very slow in processing, is there a quicker way to perform these calculations or a better approach at stream line my code.
Here is my code:
Private Sub Text114_AfterUpdate()
Dim SumCalc1 As Long
Dim SumCalc2 As Long
Dim SumCalc3 As Long
Dim SumCalc4 As Long
Dim CountProd1 As Long
Dim CountProd2 As Long
Dim CountProd3 As Long
Dim CountProd4 As Long
Dim CounterOffer As Long
Dim PrevCounterOffer As Long
Dim CountProd6 As Long
Dim CountApproved As Long
Dim Payoutsum As Long
Dim RatioCalc As Single
Dim RatioCalc1 As Integer
If Me.Text114 <> DLookup("[Prod spec name]", "[tbl prod specialist]", "[prod initials] = Forms!PSstats.Text114") Then
'Current Month Calc
CurrentMonthFunded = Nz(DCount("[APPROVED/DENIED]", "tbl_referral", "[Prod Specialist #]=" & [Forms]![PSstats]![Text114] & " And [STATUS]='Closed - Funded' And [Time Closed] Between #" & DateSerial(Year(Date), Month(Date), 1) & "# And #" & Date & "# "), 0)
PrevMonthFunded = Nz(DCount("[Product 1 Referred]", "tbl_referral", "[Prod Specialist #]=" & Forms!PSstats!Text114 & " And [STATUS]='Closed - Funded'And [APPROVED/DENIED]= 'Approved' And [Time Closed] Between #" & DateSerial(Year(Date), Month(Date), 1) & "# And #" & Date & "# and [DATE REFERRED] not Between #" & DateSerial(Year(Date), Month(Date), 1) & "# And #" & Date & "# "), 0)
CountProd3 = Nz(DCount("[Product 1 Referred]", "tbl_referral", "[Prod Specialist #]= " & Forms!PSstats!Text114 & " And [STATUS]='Closed - Funded' And [Product 1 Referred] like '*CHECKING*' And [Time Closed] Between #" & DateSerial(Year(Date), Month(Date), 1) & "# And #" & Date & "# and [DATE REFERRED] Between #" & DateSerial(Year(Date), Month(Date), 1) & "# And #" & Date & "# "), 0)
CountProd4 = Nz(DCount("[Product 1 Referred]", "tbl_referral", "[Prod Specialist #]= " & Forms!PSstats!Text114 & " And [STATUS]='Closed - Funded' And [Product 1 Referred] like '*Direct Deposit*' And [Time Closed] Between #" & DateSerial(Year(Date), Month(Date), 1) & "# And #" & Date & "# and [DATE REFERRED] Between #" & DateSerial(Year(Date), Month(Date), 1) & "# And #" & Date & "# "), 0)
CounterOffer = Nz(DCount("[APPROVED/DENIED]", "tbl_referral", "[Prod Specialist #]= " & Forms!PSstats!Text114 & " And [STATUS]='Closed - Funded' And [APPROVED/DENIED]= 'Counter Offer' And [Time Closed] Between #" & DateSerial(Year(Date), Month(Date), 1) & "# And #" & Date & "# "), 0)
CountProd6 = Nz(DCount("[Product 1 Referred]", "tbl_referral", "[Prod Specialist #]= " & Forms!PSstats!Text114 & " And [STATUS]='Closed - Funded' And [Product 1 Referred] like '*PLAY*' And [Time Closed] Between #" & DateSerial(Year(Date), Month(Date), 1) & "# And #" & Date & "# and [DATE REFERRED] Between #" & DateSerial(Year(Date), Month(Date), 1) & "# And #" & Date & "# "), 0)
CountApproved = Nz(DCount("[APPROVED/DENIED]", "tbl_referral", "[Prod Specialist #]=" & [Forms]![PSstats]![Text114] & " And [APPROVED/DENIED]='Approved' And [DATE REFERRED] Between #" & DateSerial(Year(Date), Month(Date), 1) & "# And #" & Date & "# "), 0)
SumCalc1 = Nz(DSum("[New $ Amt]", "tbl_referral", "[Prod Specialist #]= " & Forms!PSstats!Text114 & " And [STATUS]='Closed - Funded' And [Time Closed] Between #" & DateSerial(Year(Date), Month(Date), 1) & "# And #" & Date & "# and [DATE REFERRED] Between #" & DateSerial(Year(Date), Month(Date), 1) & "# And #" & Date & "# "), 0)
SumCalc4 = Nz(DSum("[PS Payout]", "tbl_referral", "[Prod Specialist #]= " & Forms!PSstats!Text114 & " And [STATUS]='Closed - Funded' And [Time Closed] Between #" & DateSerial(Year(Date), Month(Date), 1) & "# And #" & Date & "# and [DATE REFERRED] Between #" & DateSerial(Year(Date), Month(Date), 1) & "# And #" & Date & "# "), 0)
'Prev Month Calc
SumCalc2 = Nz(DSum("[New $ Amt]", "tbl_referral", "[Prod Specialist #]= " & Forms!PSstats!Text114 & " And [STATUS]='Closed - Funded' And [Time Closed] Between #" & DateSerial(Year(Date), Month(Date), 1) & "# And #" & Date & "# and [DATE REFERRED] Not Between #" & DateSerial(Year(Date), Month(Date), 1) & "# And #" & Date & "# "), 0)
SumCalc3 = Nz(DSum("[PS Payout]", "tbl_referral", "[Prod Specialist #]= " & Forms!PSstats!Text114 & " And [STATUS]='Closed - Funded' And [Time Closed] Between #" & DateSerial(Year(Date), Month(Date), 1) & "# And #" & Date & "# and [DATE REFERRED] Not Between #" & DateSerial(Year(Date), Month(Date), 1) & "# And #" & Date & "# "), 0)
'Calc
SumTotalFunded = SumCalc1 + SumCalc2
SumPayout = SumCalc3 + SumCalc4
RatioCalc1 = (PrevMonthFunded + CountApproved + CounterOffer)
TotalClosedFunded = CurrentMonthFunded
RatioCalc = TotalClosedFunded / RatioCalc1
Else
MsgBox ("No Data Available")
Me.Text114 = ""
Me.Ratio = "0"
End If
Select Case SumTotalFunded
Case 0 To 499999
Me.Text58 = 0
Payoutsum = 0
Case 500000 To 599999
Me.Text58 = 50
Payoutsum = 50
Case 600000 To 699999
Me.Text58 = 100
Payoutsum = 100
Case 700000 To 799999
Me.Text58 = 150
Payoutsum = 150
Case 800000 To 899999
Me.Text58 = 200
Payoutsum = 200
Case 900000 To 999999
Me.Text58 = 250
Payoutsum = 250
Case Is >= 1000000
Me.Text58 = 300
Payoutsum = 300
End Select
PSPayoutSum = CLng(SumCalc1)
Text92 = CLng(SumCalc2)
Text94 = CLng(SumCalc3)
Text96 = CLng(SumCalc4)
Text81 = CLng(TotalClosedFunded)
Text103 = CLng(CountProd3)
Text105 = CLng(CountProd4)
Text108 = CLng(CounterOffer)
Text110 = CLng(CountProd6)
Text200 = CLng(PrevMonthFunded)
Text201 = CLng(RatioCalc1)
Text128 = CLng(RatioCalc1)
txtTotalFundedPS = Payoutsum + SumPayout
CurrentApprovedDisplay = CLng(CountApproved)
Ratio = RatioCalc
End Sub
Here is my code:
Private Sub Text114_AfterUpdate()
Dim SumCalc1 As Long
Dim SumCalc2 As Long
Dim SumCalc3 As Long
Dim SumCalc4 As Long
Dim CountProd1 As Long
Dim CountProd2 As Long
Dim CountProd3 As Long
Dim CountProd4 As Long
Dim CounterOffer As Long
Dim PrevCounterOffer As Long
Dim CountProd6 As Long
Dim CountApproved As Long
Dim Payoutsum As Long
Dim RatioCalc As Single
Dim RatioCalc1 As Integer
If Me.Text114 <> DLookup("[Prod spec name]", "[tbl prod specialist]", "[prod initials] = Forms!PSstats.Text114") Then
'Current Month Calc
CurrentMonthFunded = Nz(DCount("[APPROVED/DENIED]", "tbl_referral", "[Prod Specialist #]=" & [Forms]![PSstats]![Text114] & " And [STATUS]='Closed - Funded' And [Time Closed] Between #" & DateSerial(Year(Date), Month(Date), 1) & "# And #" & Date & "# "), 0)
PrevMonthFunded = Nz(DCount("[Product 1 Referred]", "tbl_referral", "[Prod Specialist #]=" & Forms!PSstats!Text114 & " And [STATUS]='Closed - Funded'And [APPROVED/DENIED]= 'Approved' And [Time Closed] Between #" & DateSerial(Year(Date), Month(Date), 1) & "# And #" & Date & "# and [DATE REFERRED] not Between #" & DateSerial(Year(Date), Month(Date), 1) & "# And #" & Date & "# "), 0)
CountProd3 = Nz(DCount("[Product 1 Referred]", "tbl_referral", "[Prod Specialist #]= " & Forms!PSstats!Text114 & " And [STATUS]='Closed - Funded' And [Product 1 Referred] like '*CHECKING*' And [Time Closed] Between #" & DateSerial(Year(Date), Month(Date), 1) & "# And #" & Date & "# and [DATE REFERRED] Between #" & DateSerial(Year(Date), Month(Date), 1) & "# And #" & Date & "# "), 0)
CountProd4 = Nz(DCount("[Product 1 Referred]", "tbl_referral", "[Prod Specialist #]= " & Forms!PSstats!Text114 & " And [STATUS]='Closed - Funded' And [Product 1 Referred] like '*Direct Deposit*' And [Time Closed] Between #" & DateSerial(Year(Date), Month(Date), 1) & "# And #" & Date & "# and [DATE REFERRED] Between #" & DateSerial(Year(Date), Month(Date), 1) & "# And #" & Date & "# "), 0)
CounterOffer = Nz(DCount("[APPROVED/DENIED]", "tbl_referral", "[Prod Specialist #]= " & Forms!PSstats!Text114 & " And [STATUS]='Closed - Funded' And [APPROVED/DENIED]= 'Counter Offer' And [Time Closed] Between #" & DateSerial(Year(Date), Month(Date), 1) & "# And #" & Date & "# "), 0)
CountProd6 = Nz(DCount("[Product 1 Referred]", "tbl_referral", "[Prod Specialist #]= " & Forms!PSstats!Text114 & " And [STATUS]='Closed - Funded' And [Product 1 Referred] like '*PLAY*' And [Time Closed] Between #" & DateSerial(Year(Date), Month(Date), 1) & "# And #" & Date & "# and [DATE REFERRED] Between #" & DateSerial(Year(Date), Month(Date), 1) & "# And #" & Date & "# "), 0)
CountApproved = Nz(DCount("[APPROVED/DENIED]", "tbl_referral", "[Prod Specialist #]=" & [Forms]![PSstats]![Text114] & " And [APPROVED/DENIED]='Approved' And [DATE REFERRED] Between #" & DateSerial(Year(Date), Month(Date), 1) & "# And #" & Date & "# "), 0)
SumCalc1 = Nz(DSum("[New $ Amt]", "tbl_referral", "[Prod Specialist #]= " & Forms!PSstats!Text114 & " And [STATUS]='Closed - Funded' And [Time Closed] Between #" & DateSerial(Year(Date), Month(Date), 1) & "# And #" & Date & "# and [DATE REFERRED] Between #" & DateSerial(Year(Date), Month(Date), 1) & "# And #" & Date & "# "), 0)
SumCalc4 = Nz(DSum("[PS Payout]", "tbl_referral", "[Prod Specialist #]= " & Forms!PSstats!Text114 & " And [STATUS]='Closed - Funded' And [Time Closed] Between #" & DateSerial(Year(Date), Month(Date), 1) & "# And #" & Date & "# and [DATE REFERRED] Between #" & DateSerial(Year(Date), Month(Date), 1) & "# And #" & Date & "# "), 0)
'Prev Month Calc
SumCalc2 = Nz(DSum("[New $ Amt]", "tbl_referral", "[Prod Specialist #]= " & Forms!PSstats!Text114 & " And [STATUS]='Closed - Funded' And [Time Closed] Between #" & DateSerial(Year(Date), Month(Date), 1) & "# And #" & Date & "# and [DATE REFERRED] Not Between #" & DateSerial(Year(Date), Month(Date), 1) & "# And #" & Date & "# "), 0)
SumCalc3 = Nz(DSum("[PS Payout]", "tbl_referral", "[Prod Specialist #]= " & Forms!PSstats!Text114 & " And [STATUS]='Closed - Funded' And [Time Closed] Between #" & DateSerial(Year(Date), Month(Date), 1) & "# And #" & Date & "# and [DATE REFERRED] Not Between #" & DateSerial(Year(Date), Month(Date), 1) & "# And #" & Date & "# "), 0)
'Calc
SumTotalFunded = SumCalc1 + SumCalc2
SumPayout = SumCalc3 + SumCalc4
RatioCalc1 = (PrevMonthFunded + CountApproved + CounterOffer)
TotalClosedFunded = CurrentMonthFunded
RatioCalc = TotalClosedFunded / RatioCalc1
Else
MsgBox ("No Data Available")
Me.Text114 = ""
Me.Ratio = "0"
End If
Select Case SumTotalFunded
Case 0 To 499999
Me.Text58 = 0
Payoutsum = 0
Case 500000 To 599999
Me.Text58 = 50
Payoutsum = 50
Case 600000 To 699999
Me.Text58 = 100
Payoutsum = 100
Case 700000 To 799999
Me.Text58 = 150
Payoutsum = 150
Case 800000 To 899999
Me.Text58 = 200
Payoutsum = 200
Case 900000 To 999999
Me.Text58 = 250
Payoutsum = 250
Case Is >= 1000000
Me.Text58 = 300
Payoutsum = 300
End Select
PSPayoutSum = CLng(SumCalc1)
Text92 = CLng(SumCalc2)
Text94 = CLng(SumCalc3)
Text96 = CLng(SumCalc4)
Text81 = CLng(TotalClosedFunded)
Text103 = CLng(CountProd3)
Text105 = CLng(CountProd4)
Text108 = CLng(CounterOffer)
Text110 = CLng(CountProd6)
Text200 = CLng(PrevMonthFunded)
Text201 = CLng(RatioCalc1)
Text128 = CLng(RatioCalc1)
txtTotalFundedPS = Payoutsum + SumPayout
CurrentApprovedDisplay = CLng(CountApproved)
Ratio = RatioCalc
End Sub