A typical ESRI analysis work flow:
1. Copy all data local (aka: Don't do anything over a network connection).
2. Clean up the data as to avoid anything that might make ESRI software throw a rod (getting rid of nulls in your case!)
3. Do the analysis
As for the nulls, if I was able to select them programatically then I wouldn't have this problem in the first place
Can't you specify this as part of the query???
For example, something like:
"PARCEL_ID = PARCEL_ID AND LEGAL_NAME IS NOT NULL"
Are you using this tool as a simply query or as part of a many-to-one or many-to-many sort of thing?
Typically I use this tool only for many-to-one relates. For example, if I have many records in a table each describing the height of the trees in a particular polygon over time, where:
POLYGON_ID,DECADE,TREE_HEIGHT
1,1,10
1,2,15
1,3,30
1,4,60
1,5,100
1,6,110
1,7,115
1,8,120
and I want to return a polygon for each match record in the table.
searchRows = arcpy.SearchCursor(myTableView) for searchRow in searchRows: if searchRow.getValue(myFieldName) == None: print "Null Value!" del searchRow, searchRows
searchRows = arcpy.SearchCursor(myTableView) for searchRow in searchRows: if searchRow.isNull(myFieldName): print "Null Value!" del searchRow, searchRows
So the None type is a Python thing, and how Null values are interpreted in a cursor statement. For example:searchRows = arcpy.SearchCursor(myTableView) for searchRow in searchRows: if searchRow.getValue(myFieldName) == None: print "Null Value!" del searchRow, searchRows
Not sure what the added utility is exacltly, but there is also a new .isNull cursor method in v10.0searchRows = arcpy.SearchCursor(myTableView) for searchRow in searchRows: if searchRow.isNull(myFieldName): print "Null Value!" del searchRow, searchRows
So is your error occuring in the MakeQueryTable part or the cursor part? More specifically, what line # is your code bombing on?
print "legal:" + legal
nameDict = {}
errorDict = []
i = 0
searchRows = arcpy.SearchCursor("testtab")
for searchRow in searchRows:
i = i + 1
tlegal = row.WHSE_TANTALIS_TA_INTERESTED_PARTIES_LEGAL_NAME
tfirst = row.WHSE_TANTALIS_TA_INTERESTED_PARTIES_FIRST_NAME
tlast = row.WHSE_TANTALIS_TA_INTERESTED_PARTIES_LAST_NAME
if tlegal != None:
nameDict = str(tlegal)
elif tfirst != None and tlast != None:
nameDict = str(tfirst) + " " + str(tlast)
else:
print "Error in row #" + str(i)
nameDict = "FUBAR"
errorDict = [tlegal, tfirst, tlast]
del searchRow, searchRows
print errorDict