Attribute Assistant

From Wildsong
Jump to navigationJump to search

Attribute Assistant is an add-in for ESRI ArcMap written in C#

The version I am using was release January 2018

The good parts

  • They are still releasing new versions (so far).
  • The range of built in functions is pretty good.
  • The documentation is so-so.

The horrible part

Expressions have to be written in VBScript, which is like stepping back in time about 15 years for me. I stopped using it everywhere when ESRI started supporting Python and (until today) I never looked back.

The stupid part

The word is that ESRI now wants me to learn and use "Arcade" which is not Python and not Javascript. I am delaying in the hopes that it goes away before I have to learn it.

Tricks and pratfalls

In case you have not looked at it yet, the way it works is that you put a table in your MXD called DynamicValue and then populate it with rules. The add-in fires the rules when the events are tripped.

A trick: populate the AutoWho and AutoDate attributes

Table Name Field Name Value Method Value Info On Create On Change (Attribute) On Change (Geometry) Manual Only Rule Weight Comments
* AutoWho CURRENT_USER U 1 1 1 0 <Null>
* AutoDate TIMESTAMP DATE 1 1 1 0 <Null>

AutoWho: Putting U in the Value Info column makes it use only the user name, otherwise it puts DOMAIN\USERNAME which is ugly.

AutoDate: Putting DATE in the Value Info column makes it use only the date, no time stamp, which is what I want.

Pratfall category

Table Name Field Name Value Method Value Info On Create On Change (Attribute) On Change (Geometry) Manual Only Rule Weight Comments
taxlot MapTaxlot EXPRESSION Split( [MapNumber],".")(0)&Split( [MapNumber],".")(1)&" "&Split( [MapNumber],".")(2)&" "& [Taxlot] 1 1 1 0 <Null>

You have to cram your VBScript into the Value Info field, no matter how long or complex. It has to be on one line since there is no support for anything like a code block.

So in this case I had to call "Split" 3 times with the same arguments. Normally I'd say that's awful and it would be two lines, but I don't see any way to do that in Attribute Assistant. In ArcMap I'd use a code block.

s = Split([MapNumber],".")
s(0)&s(1)&" "&s(2)&" "& [Taxlot]