Database objects are identified by name. Name check is case-insensitive, so for example table myTable vs MyTable is considered as the same table.
Modules, macros, data macros, forms and reports definitions are retrieved using Access Application.SaveAsText method, by saving object text to the temporary file. Table definitions, relations, queries, references, import/export specifications and database properties are retrieved using the corresponding Access object model properties.
All objects are compared as their text presentation, that's the text you observe if you open an object in a Text diff tab. In the Standard you can set up text diff options to ignore some general text-related changes like case-insensitive or ignore-whitespace.
Table definition is considered as changed if it has changed list of fields or fields have changed data type. Changed column order also makes table definition changed. Linked tables are considered as changed if they have changed linked source definition (Connect and SourceTableName Access properties, list of indexes or index properties). It can be also configured to ignore linked table definition changes.
In many other database management systems foreign keys (same as Relations in Access) are defined as table constraints and can be considered as part of table definition. But in Access Relations are separate objects and in AccdbMerge changed relation does not make table definition to be considered as changed. However the Table structure diff tab shows table relations for convenience.
In the Standard version table is also considered as changed if it has changed data macros XML, or if one side has data macros but the other side has no data macros at all. In some cases this may cause false positive changes if data macros XML is changed but these changes do not represent actual data macros changes.
In addition to text diff options, in the Standard version you can set up additional diff options - to compare only layout or module or both, ignore binary content and some other layout noise.
Ribbons are not presented as a separate object type but they can be processed using USysRibbons table data diff. Table definition, if missing in the other-side database, can be merged from table definitions object list.
Last updated: 2023-09-20