How to Find a Table, Field or Role Name from a Number shown in a System Error Message

Before you can find the name corresponding to a number, you need to know the name of the database that is causing the error. If the number is 4096 or above then the number is an application database table field or role number. Typically DP4 installations either use one application database, or two databases with the same structure, so this is unlikely to be a problem in practice.

If the number is less than 4096 then the number corresponds to something in the base dictionary, so it does not matter which database you use because this is the same on every database. A particularly important case is if the table number is 102 (this may show up as fail 6 0 20 error). This means that either your system database or your application database are 4.5xx series databases but you are using 4.6xx software to access them.

Either:

Or, if the database has too many tables to do this easily:

  1. From a command prompt, or using the Run command option on the DP4 menu (logging on as DP4), run browser -basedict

  2. Select the appropriate database, then press the Table button and then enter @name_table for the table name.If you cannot access the @name_table table then either you forgot to use -basedict, or you do not have the correct read and write access levels to see the @name_table table. In the latter case you need to use the User Preferences/ Colours and Miscellaneous option DFSETUP to boost your read and write access levels to 99 or above.

  3. Press the Index button, and then select the @NR_INDEX index.

  4. Press the Keys button, and enter the number shown in the error message

  5. Depending on your userdata.sys settings you may or may not need to press Enter a couple of times. Assuming the number corresponds to something on the database Browser will display "Existing Record" in the Record status field, and the name will be displayed as the first field in the list of fields.

  6. If Browser shows "No matching Record" then the number does not match anything in the data dictionary. Either: