szRelationship is a unique textual identifier for the relationship (although it's not defined as unique).
If my memory serves me correctly, in Access 97 (and probably lower) it was a GUID stored as text (technically not a CLSID), and from Access 2000 upwards it is the (slightly) more meaningful combination name of the two referenced objects (followed by a unique number if there are multiple relationships from/to the same tables). If you have any Access 2000+ databases that were converted from an old Access 97 database, they will also have the old GUIDs rather than the names.
The GUID itself is meaningless to you (other than as an ID). What are you trying to achieve?
although the table presents the fields in alphabetical order. The table has no PK, but the combination of the szRelationship and icolumn fields uniquely identify a row.
If the GUID's are from Access 97 and earlier, but aren't used from Access 2000 forward, then that problem is solved.
My questions now are how to reference the icolumn, ccolumn, szcolumn, and szreferenced column fields through the object model, as opposed to via a recordset (i.e. the items marked "???" above), and how to decode the grbit, each of which will be put in separate posts.
The integers are indices that represent the fields... e.g. db.Relations(i).Fields(ccolumn/icolumn).Name but you probably don't need to access them that way, since the table also gives you the name of the fields in the sz fields.
Also, remember that you can have multiple fields involved in a single relationship, so you can have multiple rows in the table for each relationship.
grbit is for referential integrity etc. I can't remember the mappings from the top of my head, but I have it written somewhere - I'll try to route it out for you.