When using a relational table, you will need to modify the recordset on the results page to pull the name in from the child table. you accomplish this by creating a join Query.
The syntax for a JOIN query is:
SELECT table1.*, table2*
FROM table1
INNER JOIN table2 ON table1.KeyColumn = table2.keycolumn
in your case, your talking about a subcategory table, probably relating to a catagory table using the subcategory.SubcatCategoryID = category.categoryID
SELECT subcategory.*, category*
FROM subcategory
INNER JOIN category ON subcategory.SubcatCategoryID = category.categoryID
then you can get the name by changing the SubcatCategoryID reference with the category name column.
the insert record behavior just inserts a record. It does not check if a column contains duplicate information.
You would need to create a recordset to look up the information being entered to determine if it already existed in the database, then change the Insert Record trigger to happen if that recordset is empty.