I have read in many forums about the disadvantages of using bound controls in a VB project. However, I was wondering what to use in my case:-

I have a users table and a category table.
Users table has (userId, FirstName, LastName, catID).
Category table has:- (catId, catDescription)

The catId field in the users table , is a number that corresponds to a value in the catId field of the Category table. I need to use either of the controls to act as a lookup table. It displays the description of the categories but passes the catId to the users table. In so doing, the users must NOT know the catId inorder to choose category id's for the users since they will read the descriptions and choose from the drop down. I need to INSERT new users and UPDATE. I also want to enable a user to be able to add categories that might be missing from the already created categories.

Now how can I implement this? Can the same be implemented using code instead of bound controls?