import arcpy arcpy.AddMessage("Starting") pu = arcpy.GetParameterAsText(0) arcpy.AddMessage(pu) mxd = arcpy.mapping.MapDocument("CURRENT") df = arcpy.mapping.ListDataFrames(mxd, "Main Map")[0] lyr = arcpy.mapping.ListLayers(mxd, "TAXPARCELS", df)[0] arcpy.AddMessage(lyr.name) expression = "ACCTEXT = '"+p+"'" arcpy.AddMessage(expression) arcpy.SelectLayerByAttribute_management(lyr,"NEW_SELECTION",expression) df.extent = lyr.getSelectedExtent() df.scale = df.scale*1.1 for elm in arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT", "P"): if elm.name == "P": elm.text = (p) arcpy.SelectLayerByAttribute_management(lyr,"CLEAR_SELECTION") arcpy.RefreshActiveView() arcpy.AddMessage("Completed")
Solved! Go to Solution.
import arcpy arcpy.AddMessage("Starting") acc_val = arcpy.GetParameterAsText(0) arcpy.AddMessage(acc_val) df_name = "Main Map" lyr_name = "TAXPARCELS" field_name = "ACCTEXT" mxd = arcpy.mapping.MapDocument("CURRENT") df = arcpy.mapping.ListDataFrames(mxd, df_name)[0] lyr = arcpy.mapping.ListLayers(mxd, lyr_name, df)[0] arcpy.AddMessage(lyr.name) datasource = lyr.workspacePath field_delim = arcpy.AddFieldDelimiters(datasource,field_name) expression = "{0} = '{1}'".format(field_name,acc_val) arcpy.AddMessage(expression) arcpy.SelectLayerByAttribute_management(lyr,"NEW_SELECTION",expression) df.extent = lyr.getSelectedExtent() df.scale = df.scale*1.1 for elm in arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT", "P"): if elm.name == "P": elm.text = (acc_val) arcpy.SelectLayerByAttribute_management(lyr,"CLEAR_SELECTION") arcpy.RefreshActiveView() arcpy.AddMessage("Completed")
expression = "ACCTEXT = '"+p+"'"This probably isn't the problem, but is the above 'p' supposed to be 'pu'? I assume the problem is either there is no data frame called "Main Map" or there is no layer called "TAXPARCELS". Which line is throwing the error?
import arcpy arcpy.AddMessage("Starting") acc_val = arcpy.GetParameterAsText(0) arcpy.AddMessage(acc_val) df_name = "Main Map" lyr_name = "TAXPARCELS" field_name = "ACCTEXT" mxd = arcpy.mapping.MapDocument("CURRENT") df = arcpy.mapping.ListDataFrames(mxd, df_name)[0] lyr = arcpy.mapping.ListLayers(mxd, lyr_name, df)[0] arcpy.AddMessage(lyr.name) datasource = lyr.workspacePath field_delim = arcpy.AddFieldDelimiters(datasource,field_name) expression = "{0} = '{1}'".format(field_name,acc_val) arcpy.AddMessage(expression) arcpy.SelectLayerByAttribute_management(lyr,"NEW_SELECTION",expression) df.extent = lyr.getSelectedExtent() df.scale = df.scale*1.1 for elm in arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT", "P"): if elm.name == "P": elm.text = (acc_val) arcpy.SelectLayerByAttribute_management(lyr,"CLEAR_SELECTION") arcpy.RefreshActiveView() arcpy.AddMessage("Completed")
dkwiens you were right my data frame was "Layers".
mzcoyle thank you very much for that code.
I changed the
df_name = "Main Map"
to
df_name = "Layers"
and it zoomed to it.
My next questions how do you get to highlight they feature you searched for.
arcpy.SelectLayerByAttribute_management(lyr,"CLEAR_SELECTION")