<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Script in ArcToolbox:Inspect table/fc/input1 for fields to be used in input2 in Python Questions</title>
    <link>https://community.esri.com/t5/python-questions/script-in-arctoolbox-inspect-table-fc-input1-for/m-p/565280#M44250</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;This is v9.3 code, but I think it does the same thing as your code.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;P.S. I use this thing all the time to for SQL - it's very handy!!!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;# Name: list_selected_values_v93.py
#
# Description
# -----------
# This script will list the unique values of selected features/records in a FC or table
# in a specified sort order. I meant this tool to be used to format long text strings
# as value1, value2, value3, etc. so that I could use it as part of an SQL expression.
#
# Written By: Chris Snyder, WA DNR, chris.snyder(at)wadnr.gov
#
# Written For: Python 2.5.1 and ArcGIS v9.3.1 SP1
#
# UPDATES:
#
# Notes on input parameters (for the toolbox):
# VARIABLE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PAREMETER_INDEX&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PARAMETER_DATA_TYPE
# -------------------------------------------------------------------
# inputLayer&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TableView (the input FeatureClass, Table, FeatureLayer or TableView)
# inputFieldName&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Field Name
# inputSortOrder&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String ("ASCENDING","DESCENDING", "UNSORTED")
#

try:
&amp;nbsp;&amp;nbsp;&amp;nbsp; #Process: Import some modules
&amp;nbsp;&amp;nbsp;&amp;nbsp; import os, string, sys, time, traceback, arcgisscripting

&amp;nbsp;&amp;nbsp;&amp;nbsp; #Process: Create the gp object
&amp;nbsp;&amp;nbsp;&amp;nbsp; gp = arcgisscripting.create(9.3)

&amp;nbsp;&amp;nbsp;&amp;nbsp; #Process: Defines some functions used for getting messages from the gp and python
&amp;nbsp;&amp;nbsp;&amp;nbsp; def showGpMessage():
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gp.AddMessage(gp.GetMessages())
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;gt;&amp;gt; open(logFile, 'a'), gp.GetMessages()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print gp.GetMessages()
&amp;nbsp;&amp;nbsp;&amp;nbsp; def showGpWarning():
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gp.AddWarning(gp.GetMessages())
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;gt;&amp;gt; open(logFile, 'a'), gp.GetMessages()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print gp.GetMessages()
&amp;nbsp;&amp;nbsp;&amp;nbsp; def showGpError():
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gp.AddError(gp.GetMessages())
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;gt;&amp;gt; open(logFile, 'a'), gp.GetMessages()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print gp.GetMessages()
&amp;nbsp;&amp;nbsp;&amp;nbsp; def showPyLog(): #just print to the log file!
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;gt;&amp;gt; open(logFile, 'a'), str(time.ctime()) + " - " + message
&amp;nbsp;&amp;nbsp;&amp;nbsp; def showPyMessage():
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gp.AddMessage(str(time.ctime()) + " - " + message)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;gt;&amp;gt; open(logFile, 'a'), str(time.ctime()) + " - " + message
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print str(time.ctime()) + " - " + message
&amp;nbsp;&amp;nbsp;&amp;nbsp; def showPyWarning():
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gp.AddWarning(str(time.ctime()) + " - " + message)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;gt;&amp;gt; open(logFile, 'a'), str(time.ctime()) + " - " + message
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print str(time.ctime()) + " - " + message
&amp;nbsp;&amp;nbsp;&amp;nbsp; def showPyError():
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gp.AddError(str(time.ctime()) + " - " + message)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;gt;&amp;gt; open(logFile, 'a'), str(time.ctime()) + " - " + message
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print str(time.ctime()) + " - " + message

&amp;nbsp;&amp;nbsp;&amp;nbsp; #Specifies the root directory variable, defines the logFile variable, and does some minor error checking...
&amp;nbsp;&amp;nbsp;&amp;nbsp; dateTimeString = str(time.strftime('%Y%m%d%H%M%S'))
&amp;nbsp;&amp;nbsp;&amp;nbsp; scriptName = os.path.split(sys.argv[0])[-1].split(".")[0]
&amp;nbsp;&amp;nbsp;&amp;nbsp; userName = string.lower(os.environ.get("USERNAME")).replace(" ","_").replace(".","_")
&amp;nbsp;&amp;nbsp;&amp;nbsp; tempPathDir = os.environ["TEMP"]
&amp;nbsp;&amp;nbsp;&amp;nbsp; logFileDirectory = r"\\snarf\am\div_lm\ds\gis\tools\log_files"
&amp;nbsp;&amp;nbsp;&amp;nbsp; if os.path.exists(logFileDirectory) == True:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; logFile = os.path.join(logFileDirectory, scriptName + "_" + userName + "_" + dateTimeString + ".txt")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;gt;&amp;gt; open(logFile, 'a'), "Write test successfull!"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; except:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; logFile = os.path.join(tempPathDir, scriptName + "_" + userName + "_" + dateTimeString + ".txt")&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; else:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; logFile = os.path.join(tempPathDir, scriptName + "_" + userName + "_" + dateTimeString + ".txt")
&amp;nbsp;&amp;nbsp;&amp;nbsp; if os.path.exists(logFile)== True:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; os.remove(logFile)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; message = "Created log file " + logFile; showPyMessage()
&amp;nbsp;&amp;nbsp;&amp;nbsp; message = "Running " + sys.argv[0]; showPyMessage()
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; #Process: Check out the highest license available
&amp;nbsp;&amp;nbsp;&amp;nbsp; try:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if gp.CheckProduct("ArcView") == "Available":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gp.SetProduct("ArcView")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; elif gp.CheckProduct("ArcEditor") == "Available":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gp.SetProduct("ArcEditor")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; elif gp.CheckProduct("ArcInfo") == "Available":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gp.SetProduct("ArcInfo")
&amp;nbsp;&amp;nbsp;&amp;nbsp; except:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; message = "ERROR: Could not select an ArcGIS license level! Exiting script..."; showPyError(); sys.exit()
&amp;nbsp;&amp;nbsp;&amp;nbsp; message =&amp;nbsp; "Selected an " + gp.ProductInfo() + " license"; showPyMessage()

&amp;nbsp;&amp;nbsp;&amp;nbsp; #Process: Sets some gp environment variables
&amp;nbsp;&amp;nbsp;&amp;nbsp; gp.overwriteoutput = True

&amp;nbsp;&amp;nbsp;&amp;nbsp; #Process: Collect the input parameters
&amp;nbsp;&amp;nbsp;&amp;nbsp; inputLayer = gp.GetParameterAsText(0) #tableview
&amp;nbsp;&amp;nbsp;&amp;nbsp; inputFieldName = gp.GetParameterAsText(1) #fieldname
&amp;nbsp;&amp;nbsp;&amp;nbsp; inputSortOrder = gp.GetParameterAsText(2) #string

&amp;nbsp;&amp;nbsp;&amp;nbsp; #Process: Print out the input parameters
&amp;nbsp;&amp;nbsp;&amp;nbsp; message = "INPUT PARAMETERS"; showPyMessage()
&amp;nbsp;&amp;nbsp;&amp;nbsp; message = "----------------"; showPyMessage()
&amp;nbsp;&amp;nbsp;&amp;nbsp; message = "Input Layer&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = " + inputLayer; showPyMessage()
&amp;nbsp;&amp;nbsp;&amp;nbsp; message = "Input Field Name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = " + inputFieldName; showPyMessage()
&amp;nbsp;&amp;nbsp;&amp;nbsp; message = "Sort Order&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = " + inputSortOrder + "\n"; showPyMessage()
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; #Some error checking:
&amp;nbsp;&amp;nbsp;&amp;nbsp; try:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dsc = gp.describe(inputLayer)
&amp;nbsp;&amp;nbsp;&amp;nbsp; except:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; message = "ERROR: Could not describe input layer! Exiting script..."; showPyError(); sys.exit()
&amp;nbsp;&amp;nbsp;&amp;nbsp; #make sure the inputLayer is a FeatureClass or Table
&amp;nbsp;&amp;nbsp;&amp;nbsp; inputLayerDataType = dsc.datasettype
&amp;nbsp;&amp;nbsp;&amp;nbsp; if inputLayerDataType not in ("FeatureClass","Table"):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; message = "ERROR: Input layer type (" + str(inputLayerDataType) + ") is not a FeatureClass or Table! Exiting script.."; showPyError(); sys.exit()
&amp;nbsp;&amp;nbsp;&amp;nbsp; #make sure inputFieldName is in inputLayer
&amp;nbsp;&amp;nbsp;&amp;nbsp; if len(gp.listfields(inputLayer, inputFieldName)) == []:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; message = "ERROR: Input layer does not contain a " + str(inputFieldName) + " field! Exiting script..."; showPyError(); sys.exit()
&amp;nbsp;&amp;nbsp;&amp;nbsp; #Make sure a valid sort method is being provided
&amp;nbsp;&amp;nbsp;&amp;nbsp; if inputSortOrder not in ("ASCENDING","DESCENDING","UNSORTED"):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; message = "ERROR: Input sort order must be either ASCENDING, DESCENDING, or UNSORTED! Exiting script..."; showPyError(); sys.exit()
&amp;nbsp;&amp;nbsp;&amp;nbsp; elif inputSortOrder == "ASCENDING":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldSortString = inputFieldName + " A"
&amp;nbsp;&amp;nbsp;&amp;nbsp; elif inputSortOrder == "DESCENDING":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldSortString = inputFieldName + " D"
&amp;nbsp;&amp;nbsp;&amp;nbsp; else:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldSortString = ""
&amp;nbsp;&amp;nbsp;&amp;nbsp; #Determine the field type of inputFieldName
&amp;nbsp;&amp;nbsp;&amp;nbsp; try:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inputFieldNameType = gp.listfields(inputLayer, inputFieldName)[0].type
&amp;nbsp;&amp;nbsp;&amp;nbsp; except:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; message = "ERROR: Could not determine the field type of the specified Input Field Name! Exiting script..."; showPyError(); sys.exit()
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; #Process: Create a string to return
&amp;nbsp;&amp;nbsp;&amp;nbsp; uniqueValueList = []
&amp;nbsp;&amp;nbsp;&amp;nbsp; uniqueValueCount = 0
&amp;nbsp;&amp;nbsp;&amp;nbsp; searchRows = gp.searchcursor(inputLayer, "", "", "", fieldSortString)
&amp;nbsp;&amp;nbsp;&amp;nbsp; searchRow = searchRows.next()
&amp;nbsp;&amp;nbsp;&amp;nbsp; while searchRow:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldValue = searchRow.getvalue(inputFieldName)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if fieldValue not in uniqueValueList:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uniqueValueCount = uniqueValueCount + 1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uniqueValueList.append(fieldValue)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; searchRow = searchRows.next()
&amp;nbsp;&amp;nbsp;&amp;nbsp; del searchRow
&amp;nbsp;&amp;nbsp;&amp;nbsp; del searchRows
&amp;nbsp;&amp;nbsp;&amp;nbsp; uniqueValueString = ""
&amp;nbsp;&amp;nbsp;&amp;nbsp; for uniqueValue in uniqueValueList:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if inputFieldNameType in ("String","Text"):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uniqueValueString = uniqueValueString + "'" + str(uniqueValue) + "',"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uniqueValueString = uniqueValueString + str(uniqueValue) + ","
&amp;nbsp;&amp;nbsp;&amp;nbsp; message = "UNIQUE VALUES: " + str(uniqueValueString[:-1]); showPyMessage()
&amp;nbsp;&amp;nbsp;&amp;nbsp; message = ""; showPyMessage()
&amp;nbsp;&amp;nbsp;&amp;nbsp; message = "BTW: There are " + str(uniqueValueCount) + " unique values!"; showPyMessage()
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
except:
&amp;nbsp;&amp;nbsp;&amp;nbsp; message = "\n*** PYTHON ERRORS *** "; showPyMessage()
&amp;nbsp;&amp;nbsp;&amp;nbsp; message = "Python Traceback Info: " + traceback.format_tb(sys.exc_info()[2])[0]; showPyMessage()
&amp;nbsp;&amp;nbsp;&amp;nbsp; message = "Python Error Info: " +&amp;nbsp; str(sys.exc_type)+ ": " + str(sys.exc_value) + "\n"; showPyMessage()&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sun, 12 Dec 2021 00:21:40 GMT</pubDate>
    <dc:creator>ChrisSnyder</dc:creator>
    <dc:date>2021-12-12T00:21:40Z</dc:date>
    <item>
      <title>Script in ArcToolbox:Inspect table/fc/input1 for fields to be used in input2</title>
      <link>https://community.esri.com/t5/python-questions/script-in-arctoolbox-inspect-table-fc-input1-for/m-p/565279#M44249</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Glad to be using the new python subforum!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I want to have my python script look at the fields (gp.listfields maybe) and create a dropdown input box for the user to be able to see that the script can see what fields are in the input1.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Use case is I want to get a list of unique values in a field.&amp;nbsp; I know I can have the user open the table/fc and discover the field and then type it into an input box but that isn't cool.&amp;nbsp; I imagine it will have to be a two part script..like do a gp.listfields then ask the user to pick the field then start running again.&amp;nbsp; Here is my code now.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;import os, string, sys, win32gui&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;import arcgisscripting&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;gp = arcgisscripting.create(9.3)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;gp.workspace = "c:\\"&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;infc = sys.argv[1]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;field = sys.argv[2]&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;for fld in gp.listfields(infc):&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pass&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #stuck here!&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;try:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; rowlist = []###unique values in user specified column&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sc = gp.searchcursor(infc)#user defined&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; row = sc.next()&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while row:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; altline = row.getvalue(field)#user defined&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #print altline&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if str(altline) not in rowlist:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rowlist.append(str(altline))&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row = sc.next()&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; del row&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; del altline&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;except:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print gp.getmessages()&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 23 Nov 2010 14:54:13 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/script-in-arctoolbox-inspect-table-fc-input1-for/m-p/565279#M44249</guid>
      <dc:creator>justinperez</dc:creator>
      <dc:date>2010-11-23T14:54:13Z</dc:date>
    </item>
    <item>
      <title>Re: Script in ArcToolbox:Inspect table/fc/input1 for fields to be used in input2</title>
      <link>https://community.esri.com/t5/python-questions/script-in-arctoolbox-inspect-table-fc-input1-for/m-p/565280#M44250</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;This is v9.3 code, but I think it does the same thing as your code.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;P.S. I use this thing all the time to for SQL - it's very handy!!!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;# Name: list_selected_values_v93.py
#
# Description
# -----------
# This script will list the unique values of selected features/records in a FC or table
# in a specified sort order. I meant this tool to be used to format long text strings
# as value1, value2, value3, etc. so that I could use it as part of an SQL expression.
#
# Written By: Chris Snyder, WA DNR, chris.snyder(at)wadnr.gov
#
# Written For: Python 2.5.1 and ArcGIS v9.3.1 SP1
#
# UPDATES:
#
# Notes on input parameters (for the toolbox):
# VARIABLE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PAREMETER_INDEX&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PARAMETER_DATA_TYPE
# -------------------------------------------------------------------
# inputLayer&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TableView (the input FeatureClass, Table, FeatureLayer or TableView)
# inputFieldName&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Field Name
# inputSortOrder&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String ("ASCENDING","DESCENDING", "UNSORTED")
#

try:
&amp;nbsp;&amp;nbsp;&amp;nbsp; #Process: Import some modules
&amp;nbsp;&amp;nbsp;&amp;nbsp; import os, string, sys, time, traceback, arcgisscripting

&amp;nbsp;&amp;nbsp;&amp;nbsp; #Process: Create the gp object
&amp;nbsp;&amp;nbsp;&amp;nbsp; gp = arcgisscripting.create(9.3)

&amp;nbsp;&amp;nbsp;&amp;nbsp; #Process: Defines some functions used for getting messages from the gp and python
&amp;nbsp;&amp;nbsp;&amp;nbsp; def showGpMessage():
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gp.AddMessage(gp.GetMessages())
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;gt;&amp;gt; open(logFile, 'a'), gp.GetMessages()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print gp.GetMessages()
&amp;nbsp;&amp;nbsp;&amp;nbsp; def showGpWarning():
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gp.AddWarning(gp.GetMessages())
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;gt;&amp;gt; open(logFile, 'a'), gp.GetMessages()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print gp.GetMessages()
&amp;nbsp;&amp;nbsp;&amp;nbsp; def showGpError():
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gp.AddError(gp.GetMessages())
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;gt;&amp;gt; open(logFile, 'a'), gp.GetMessages()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print gp.GetMessages()
&amp;nbsp;&amp;nbsp;&amp;nbsp; def showPyLog(): #just print to the log file!
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;gt;&amp;gt; open(logFile, 'a'), str(time.ctime()) + " - " + message
&amp;nbsp;&amp;nbsp;&amp;nbsp; def showPyMessage():
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gp.AddMessage(str(time.ctime()) + " - " + message)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;gt;&amp;gt; open(logFile, 'a'), str(time.ctime()) + " - " + message
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print str(time.ctime()) + " - " + message
&amp;nbsp;&amp;nbsp;&amp;nbsp; def showPyWarning():
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gp.AddWarning(str(time.ctime()) + " - " + message)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;gt;&amp;gt; open(logFile, 'a'), str(time.ctime()) + " - " + message
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print str(time.ctime()) + " - " + message
&amp;nbsp;&amp;nbsp;&amp;nbsp; def showPyError():
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gp.AddError(str(time.ctime()) + " - " + message)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;gt;&amp;gt; open(logFile, 'a'), str(time.ctime()) + " - " + message
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print str(time.ctime()) + " - " + message

&amp;nbsp;&amp;nbsp;&amp;nbsp; #Specifies the root directory variable, defines the logFile variable, and does some minor error checking...
&amp;nbsp;&amp;nbsp;&amp;nbsp; dateTimeString = str(time.strftime('%Y%m%d%H%M%S'))
&amp;nbsp;&amp;nbsp;&amp;nbsp; scriptName = os.path.split(sys.argv[0])[-1].split(".")[0]
&amp;nbsp;&amp;nbsp;&amp;nbsp; userName = string.lower(os.environ.get("USERNAME")).replace(" ","_").replace(".","_")
&amp;nbsp;&amp;nbsp;&amp;nbsp; tempPathDir = os.environ["TEMP"]
&amp;nbsp;&amp;nbsp;&amp;nbsp; logFileDirectory = r"\\snarf\am\div_lm\ds\gis\tools\log_files"
&amp;nbsp;&amp;nbsp;&amp;nbsp; if os.path.exists(logFileDirectory) == True:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; logFile = os.path.join(logFileDirectory, scriptName + "_" + userName + "_" + dateTimeString + ".txt")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;gt;&amp;gt; open(logFile, 'a'), "Write test successfull!"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; except:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; logFile = os.path.join(tempPathDir, scriptName + "_" + userName + "_" + dateTimeString + ".txt")&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; else:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; logFile = os.path.join(tempPathDir, scriptName + "_" + userName + "_" + dateTimeString + ".txt")
&amp;nbsp;&amp;nbsp;&amp;nbsp; if os.path.exists(logFile)== True:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; os.remove(logFile)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; message = "Created log file " + logFile; showPyMessage()
&amp;nbsp;&amp;nbsp;&amp;nbsp; message = "Running " + sys.argv[0]; showPyMessage()
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; #Process: Check out the highest license available
&amp;nbsp;&amp;nbsp;&amp;nbsp; try:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if gp.CheckProduct("ArcView") == "Available":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gp.SetProduct("ArcView")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; elif gp.CheckProduct("ArcEditor") == "Available":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gp.SetProduct("ArcEditor")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; elif gp.CheckProduct("ArcInfo") == "Available":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gp.SetProduct("ArcInfo")
&amp;nbsp;&amp;nbsp;&amp;nbsp; except:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; message = "ERROR: Could not select an ArcGIS license level! Exiting script..."; showPyError(); sys.exit()
&amp;nbsp;&amp;nbsp;&amp;nbsp; message =&amp;nbsp; "Selected an " + gp.ProductInfo() + " license"; showPyMessage()

&amp;nbsp;&amp;nbsp;&amp;nbsp; #Process: Sets some gp environment variables
&amp;nbsp;&amp;nbsp;&amp;nbsp; gp.overwriteoutput = True

&amp;nbsp;&amp;nbsp;&amp;nbsp; #Process: Collect the input parameters
&amp;nbsp;&amp;nbsp;&amp;nbsp; inputLayer = gp.GetParameterAsText(0) #tableview
&amp;nbsp;&amp;nbsp;&amp;nbsp; inputFieldName = gp.GetParameterAsText(1) #fieldname
&amp;nbsp;&amp;nbsp;&amp;nbsp; inputSortOrder = gp.GetParameterAsText(2) #string

&amp;nbsp;&amp;nbsp;&amp;nbsp; #Process: Print out the input parameters
&amp;nbsp;&amp;nbsp;&amp;nbsp; message = "INPUT PARAMETERS"; showPyMessage()
&amp;nbsp;&amp;nbsp;&amp;nbsp; message = "----------------"; showPyMessage()
&amp;nbsp;&amp;nbsp;&amp;nbsp; message = "Input Layer&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = " + inputLayer; showPyMessage()
&amp;nbsp;&amp;nbsp;&amp;nbsp; message = "Input Field Name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = " + inputFieldName; showPyMessage()
&amp;nbsp;&amp;nbsp;&amp;nbsp; message = "Sort Order&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = " + inputSortOrder + "\n"; showPyMessage()
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; #Some error checking:
&amp;nbsp;&amp;nbsp;&amp;nbsp; try:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dsc = gp.describe(inputLayer)
&amp;nbsp;&amp;nbsp;&amp;nbsp; except:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; message = "ERROR: Could not describe input layer! Exiting script..."; showPyError(); sys.exit()
&amp;nbsp;&amp;nbsp;&amp;nbsp; #make sure the inputLayer is a FeatureClass or Table
&amp;nbsp;&amp;nbsp;&amp;nbsp; inputLayerDataType = dsc.datasettype
&amp;nbsp;&amp;nbsp;&amp;nbsp; if inputLayerDataType not in ("FeatureClass","Table"):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; message = "ERROR: Input layer type (" + str(inputLayerDataType) + ") is not a FeatureClass or Table! Exiting script.."; showPyError(); sys.exit()
&amp;nbsp;&amp;nbsp;&amp;nbsp; #make sure inputFieldName is in inputLayer
&amp;nbsp;&amp;nbsp;&amp;nbsp; if len(gp.listfields(inputLayer, inputFieldName)) == []:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; message = "ERROR: Input layer does not contain a " + str(inputFieldName) + " field! Exiting script..."; showPyError(); sys.exit()
&amp;nbsp;&amp;nbsp;&amp;nbsp; #Make sure a valid sort method is being provided
&amp;nbsp;&amp;nbsp;&amp;nbsp; if inputSortOrder not in ("ASCENDING","DESCENDING","UNSORTED"):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; message = "ERROR: Input sort order must be either ASCENDING, DESCENDING, or UNSORTED! Exiting script..."; showPyError(); sys.exit()
&amp;nbsp;&amp;nbsp;&amp;nbsp; elif inputSortOrder == "ASCENDING":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldSortString = inputFieldName + " A"
&amp;nbsp;&amp;nbsp;&amp;nbsp; elif inputSortOrder == "DESCENDING":
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldSortString = inputFieldName + " D"
&amp;nbsp;&amp;nbsp;&amp;nbsp; else:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldSortString = ""
&amp;nbsp;&amp;nbsp;&amp;nbsp; #Determine the field type of inputFieldName
&amp;nbsp;&amp;nbsp;&amp;nbsp; try:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inputFieldNameType = gp.listfields(inputLayer, inputFieldName)[0].type
&amp;nbsp;&amp;nbsp;&amp;nbsp; except:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; message = "ERROR: Could not determine the field type of the specified Input Field Name! Exiting script..."; showPyError(); sys.exit()
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; #Process: Create a string to return
&amp;nbsp;&amp;nbsp;&amp;nbsp; uniqueValueList = []
&amp;nbsp;&amp;nbsp;&amp;nbsp; uniqueValueCount = 0
&amp;nbsp;&amp;nbsp;&amp;nbsp; searchRows = gp.searchcursor(inputLayer, "", "", "", fieldSortString)
&amp;nbsp;&amp;nbsp;&amp;nbsp; searchRow = searchRows.next()
&amp;nbsp;&amp;nbsp;&amp;nbsp; while searchRow:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldValue = searchRow.getvalue(inputFieldName)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if fieldValue not in uniqueValueList:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uniqueValueCount = uniqueValueCount + 1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uniqueValueList.append(fieldValue)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; searchRow = searchRows.next()
&amp;nbsp;&amp;nbsp;&amp;nbsp; del searchRow
&amp;nbsp;&amp;nbsp;&amp;nbsp; del searchRows
&amp;nbsp;&amp;nbsp;&amp;nbsp; uniqueValueString = ""
&amp;nbsp;&amp;nbsp;&amp;nbsp; for uniqueValue in uniqueValueList:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if inputFieldNameType in ("String","Text"):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uniqueValueString = uniqueValueString + "'" + str(uniqueValue) + "',"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uniqueValueString = uniqueValueString + str(uniqueValue) + ","
&amp;nbsp;&amp;nbsp;&amp;nbsp; message = "UNIQUE VALUES: " + str(uniqueValueString[:-1]); showPyMessage()
&amp;nbsp;&amp;nbsp;&amp;nbsp; message = ""; showPyMessage()
&amp;nbsp;&amp;nbsp;&amp;nbsp; message = "BTW: There are " + str(uniqueValueCount) + " unique values!"; showPyMessage()
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
except:
&amp;nbsp;&amp;nbsp;&amp;nbsp; message = "\n*** PYTHON ERRORS *** "; showPyMessage()
&amp;nbsp;&amp;nbsp;&amp;nbsp; message = "Python Traceback Info: " + traceback.format_tb(sys.exc_info()[2])[0]; showPyMessage()
&amp;nbsp;&amp;nbsp;&amp;nbsp; message = "Python Error Info: " +&amp;nbsp; str(sys.exc_type)+ ": " + str(sys.exc_value) + "\n"; showPyMessage()&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 12 Dec 2021 00:21:40 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/script-in-arctoolbox-inspect-table-fc-input1-for/m-p/565280#M44250</guid>
      <dc:creator>ChrisSnyder</dc:creator>
      <dc:date>2021-12-12T00:21:40Z</dc:date>
    </item>
  </channel>
</rss>

