Looking for a way in model builder or python to iterate through all domains in a GDB and Sort Coded Value on ASC order.
In addition to using 'domain.name', I would move the line to just after the 'if domainType == CodedValue' line; you only need to sort it once.
<SPAN class="keyword token">import</SPAN> arcpy domains <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>da<SPAN class="punctuation token">.</SPAN>ListDomains<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Database Connections\\Server DB Owner.sde"</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">for</SPAN> domain <SPAN class="keyword token">in</SPAN> domains<SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'Domain name: {0}'</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>domain<SPAN class="punctuation token">.</SPAN>name<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">if</SPAN> domain<SPAN class="punctuation token">.</SPAN>domainType <SPAN class="operator token">==</SPAN> <SPAN class="string token">'CodedValue'</SPAN><SPAN class="punctuation token">:</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>SortCodedValueDomain_management<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Database Connections\\Server DB Owner.sde"</SPAN><SPAN class="punctuation token">,</SPAN> domain<SPAN class="punctuation token">.</SPAN>name<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"CODE"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"ASCENDING"</SPAN><SPAN class="punctuation token">)</SPAN> coded_values <SPAN class="operator token">=</SPAN> domain<SPAN class="punctuation token">.</SPAN>codedValues <SPAN class="keyword token">for</SPAN> val<SPAN class="punctuation token">,</SPAN> desc <SPAN class="keyword token">in</SPAN> coded_values<SPAN class="punctuation token">.</SPAN>items<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'{0} : {1}'</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>val<SPAN class="punctuation token">,</SPAN> desc<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">elif</SPAN> domain<SPAN class="punctuation token">.</SPAN>domainType <SPAN class="operator token">==</SPAN> <SPAN class="string token">'Range'</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'Min: {0}'</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>domain<SPAN class="punctuation token">.</SPAN>range<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'Max: {0}'</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>domain<SPAN class="punctuation token">.</SPAN>range<SPAN class="punctuation token">[</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>
EDIT: I'm not sure if it will print the domain sorted within the loop. You could change lines 8-9:
<SPAN class="keyword token">for</SPAN> val<SPAN class="punctuation token">,</SPAN> desc <SPAN class="keyword token">in</SPAN> sorted<SPAN class="punctuation token">(</SPAN>coded_values<SPAN class="punctuation token">.</SPAN>items<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'{0} : {1}'</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>val<SPAN class="punctuation token">,</SPAN> desc<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN></SPAN>
Thank you, Randy. The 'domain.name' expression was the key.
You code is a little tough to decipher: My old eyes prefer tabs over single spaced indents. I've copied and pasted it below with what I think they should be:
<SPAN class="keyword token">import</SPAN> arcpy domains <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>da<SPAN class="punctuation token">.</SPAN>ListDomains<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Database Connections\\Server DB Owner.sde"</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">for</SPAN> domain <SPAN class="keyword token">in</SPAN> domains<SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'Domain name: {0}'</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>domain<SPAN class="punctuation token">.</SPAN>name<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">if</SPAN> domain<SPAN class="punctuation token">.</SPAN>domainType <SPAN class="operator token">==</SPAN> <SPAN class="string token">'CodedValue'</SPAN><SPAN class="punctuation token">:</SPAN> coded_values <SPAN class="operator token">=</SPAN> domain<SPAN class="punctuation token">.</SPAN>codedValues <SPAN class="keyword token">for</SPAN> val<SPAN class="punctuation token">,</SPAN> desc <SPAN class="keyword token">in</SPAN> coded_values<SPAN class="punctuation token">.</SPAN>items<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>SortCodedValueDomain_management<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Database Connections\\Server DB Owner.sde"</SPAN><SPAN class="punctuation token">,</SPAN> Which Value?<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"CODE"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"ASCENDING"</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'{0} : {1}'</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>val<SPAN class="punctuation token">,</SPAN> desc<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">elif</SPAN> domain<SPAN class="punctuation token">.</SPAN>domainType <SPAN class="operator token">==</SPAN> <SPAN class="string token">'Range'</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'Min: {0}'</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>domain<SPAN class="punctuation token">.</SPAN>range<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'Max: {0}'</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>domain<SPAN class="punctuation token">.</SPAN>range<SPAN class="punctuation token">[</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>
I'm trying your code as I've shown it, and haven't yet figured out which value either.... I'll keep trying as I have time...
edited moments later- looks like Randy got it. Just an FYI: when I run the code on an egdb that we have with domains, I get an error because I can't get an exclusive lock due to several users being connected...
SortCodedValueDomain_management (in_workspace, domain_name, sort_by, sort_order)
You need the domain name. I would try 'domain.name' :
arcpy<SPAN class="punctuation token">.</SPAN>SortCodedValueDomain_management<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Database Connections\\Server DB Owner.sde"</SPAN><SPAN class="punctuation token">,</SPAN> domain<SPAN class="punctuation token">.</SPAN>name<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"CODE"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"ASCENDING"</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN></SPAN>
Thank you, Joe,
It is a start, but seem to be missing the value for the SortCodedValueDomain_management command.
<SPAN class="keyword token">import</SPAN> arcpy domains <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>da<SPAN class="punctuation token">.</SPAN>ListDomains<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Database Connections\\Server DB Owner.sde"</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">for</SPAN> domain <SPAN class="keyword token">in</SPAN> domains<SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'Domain name: {0}'</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>domain<SPAN class="punctuation token">.</SPAN>name<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">if</SPAN> domain<SPAN class="punctuation token">.</SPAN>domainType <SPAN class="operator token">==</SPAN> <SPAN class="string token">'CodedValue'</SPAN><SPAN class="punctuation token">:</SPAN> coded_values <SPAN class="operator token">=</SPAN> domain<SPAN class="punctuation token">.</SPAN>codedValues <SPAN class="keyword token">for</SPAN> val<SPAN class="punctuation token">,</SPAN> desc <SPAN class="keyword token">in</SPAN> coded_values<SPAN class="punctuation token">.</SPAN>items<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>SortCodedValueDomain_management<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Database Connections\\Server DB Owner.sde"</SPAN><SPAN class="punctuation token">,</SPAN> Which Value?<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"CODE"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"ASCENDING"</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'{0} : {1}'</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>val<SPAN class="punctuation token">,</SPAN> desc<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">elif</SPAN> domain<SPAN class="punctuation token">.</SPAN>domainType <SPAN class="operator token">==</SPAN> <SPAN class="string token">'Range'</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'Min: {0}'</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>domain<SPAN class="punctuation token">.</SPAN>range<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'Max: {0}'</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>domain<SPAN class="punctuation token">.</SPAN>range<SPAN class="punctuation token">[</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>
Does this help?
ListDomains—Help | ArcGIS Desktop
Signed in members can post, follow updates, and more. New here? Register a free account.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.