I have a feature class that is the result of a spatial join between a group of Credit_Recipient (RecClmNum) and Credit_Allocation (AllocClmNum) land parcels. The join essentially associates Credit_Allocation parcels that are within a given buffer of the Credit_Recipient parcels. This means I may have 1, 2, or X number of Credit_Allocation parcels associated to a single Credit_Recipient parcel. I have created a new table into which I want to add each Credit_Recipient parcel number, the credit value (CorrRecCreVal) it needs to receive, and the Credit_Allocation parcel number from which it will receieve the value. The calculation for the credit allocation is a straight subtraction of the required credit value CorrRecCreVal) from the available credit (CorrAllocCreVal) in the allocation parcel. The code below does what I want but only on the first row (and only if I use the "next()" parameter). I need the script to repeat the code from the "SearchCursor.da" point. If I use the "for row in cursor" option it doesn't do the correct calculation (basically it does do it, but regardless of whether the Credit_Recipient has or hasn't received an allocation).
sourceFC = "UpdatedRecipientClaims"
sourceFieldsList = ["RecClmNum","TransferredValue"]
valueDict = {r[0]:(r[1:]) for r in arcpy.da.SearchCursor(sourceFC,sourceFieldsList)}
sourceFC2 = "ActualTbleCopy2SortedAllocationClaims"
sourceFieldsList2 = ["AllocClmNum","CorrAllocCreVal"]
valueDict2 = {r2[0]:(r2[1:]) for r2 in arcpy.da.SearchCursor(sourceFC2,sourceFieldsList2)}
SearchFC = "RecipientBufferClaims"
SearchFieldsList = ["RecClmNum","CorrRecCreVal","AllocClmNum"]
with arcpy.da.SearchCursor(SearchFC,SearchFieldsList) as srchCursor:
srchRow = srchCursor.next()
KeyRecipientClaim = srchRow[0]
KeyRecipientCredit = srchRow[1]
KeyAllocationClaim = srchRow[2]
rowValues = [(srchRow[0],srchRow[1])]
if KeyRecipientClaim not in sourceFC:
insrtCurs = arcpy.da.InsertCursor(sourceFC,sourceFieldsList)
for row in rowValues:
insrtCurs.insertRow(row)
del insrtCurs
del row
query = """ "AllocClmNum" = '%s'"""%KeyAllocationClaim
arcpy.SelectLayerByAttribute_management(sourceFC2,"NEW_SELECTION",query)
upCurs = arcpy.da.UpdateCursor(sourceFC2,sourceFieldsList2)
for upRow in upCurs:
if upRow[1] >= 15000:
NewAllocCredVal = upRow[1] = upRow[1] - KeyRecipientCredit
if NewAllocCredVal >= 15000:
upCurs.updateRow(upRow)
del upCurs
del upRow
arcpy.SelectLayerByAttribute_management(sourceFC2,"CLEAR_SELECTION")
query2 = """ "RecClmNum" = '%s'"""%KeyRecipientClaim
arcpy.SelectLayerByAttribute_management(sourceFC,"NEW_SELECTION",query2)
arcpy.CalculateField_management(sourceFC,"AllocClmNum",'KeyAllocationClaim',"PYTHON_9.3")
arcpy.SelectLayerByAttribute_management(sourceFC,"CLEAR_SELECTION")