What you want to do is take [ID]-Min([ID])+1 for that fiscal year (i.e. 5 is the first ID for FY 2019, so that one would be 5-5+1=1, the next will be 6-5+1=2, etc.)
This code will return the minimum of ID for the given fiscal year:
Code:
Public Function GetMinID(FiscalYear As Integer) As Long
Dim db As Database
Dim rst As Recordset
Set db = CurrentDb()
Set rst = db.OpenRecordset("select min([ID]) as MinID from [tblTasks] where year([start date])+iif(month([start date])>=10,1,0)=" & FiscalYear)
GetMinID = rst![MinID]
rst.Close
db.Close
End Function
In the form, you want this:
=[fiscal_year] & "-" & Format([ID]-GetMinID([fiscal_year])+1,"0000")
(I made another text box called fiscal_year which does your IIf() calculation)
I don't like having to open and close a database and recordset object for every single row, but I can't think of anything else right now.