Quick reminder on Codd’s laws – the first 3 anyway:
First Normal Form
Any repeating groups must be but into a separate table
Second Normal Form
All nonkey columns must depend on the primary key. This only applies to composite primary keys.
Third Normal Form
Every nonkey column must be about the primary key.
I think ESRI may be wrong on how to properly set up a custom installer for your custom dll’s for ArcMap etc.
How to deploy a custom component using a setup project
It’s basically implying that you should use:
Which translates to soemthing like “C:\Program Files(x86)\MyCompany\bin\foo.dll”
But this may not always be true, what happens when your user wants to install to a custom installation directory? The ESRIRegAsm.exe tool will always fire against – C:\Program Files(x86)\MyCompany\bin\foo.dll, and not where the user selected to install! – it’s basically hard wired so that means your customers could have problems trying to install your software. It’s better to use:
Which is basically the value you get back from this stage in the installation process (although it’s not very clear as you don’t see that as a variable in the properties window for this stage!):
This will then run ESRIRegAsm.exe against where the user decided to install your dll’s, properly installing the dlls into ArcMap etc. This is, I believe more foolproof. However if I have got this wrong, I’m happy to be proved wrong 🙂
I had a problem trying to do a field calculation with field values that had <Null> ‘s. You need to convert these to strings first apparently!! Read below!
When Calculate Field evaluates your expression, it looks for null values and if any are found, the expression is not evaluated. This prevents divide-by-zero errors and other undefined operations.
If your field contains null values, you need to turn it into a string (using str()) in the expression, even if it’s already a string field e.g
Plus, if you want to return a null value back to the cell, then just return “None” – without quotes 🙂
When running a script sometimes you can get an error, especially when trying to delete a featureclass – something like:
ExecuteError: ERROR 000601: Cannot delete Database Connections\foo.sde\foo.barfc. May be locked by another application.
Use the following to get rid of any SDE connections:
Skipping optional arguments using keyword arguments when running Python tools
arcpy.AddField_management("schools", "school_id", "LONG", field_is_nullable="NON_NULLABLE")
Quick way to get a DataReader result into a Dictionary:
Dictionary<string, object> surveyDict = new Dictionary<string, object>();
aDict = Enumerable.Range(0, dr.FieldCount).ToDictionary(dr.GetName, dr.GetValue);