This sounds like a pretty classic one-to-many relationship, and it looks like you are on the right track with your table setup. In this case I would use either a listbox or a subform, but not both - seems redundant to me. My first choice would be a listbox. Assuming your form is bound to tblMain, in general terms, here's how I would set it up:
1) Create a combo box on your form and set its Row Source Type to Table/Query, then set the Row Source to tblProduct. Then you'll have to set your bound column and which column(s) you wish to be displayed in the combo drop-down.
2) Create a list box on your form and set its Row Source Type to Table/Query, then use the query builder to set your Row Source (i.e. click in the Row Source field, then click the button with 3 little dots at the right end of the field). Here you basically design a query. You'll want to include tblProductUse in your query, and select whatever fields you wish to display. Assuming you have a field on your form which displays the record ID field (I'll call it "RecID" for our purpose), include the RecID field in the query grid, and set the criteria for the field to [Forms]![frmMyForm]![RecID] (where frmMyForm is the name of your form).
3) Create a command button and name it something appropriate, i.e. btnAddProduct. In the On Click event, create an event procedure, and put in code that looks something like this:
Code:
Dim CurDB As Database
Dim Rs As Recordset
Dim SQLStmt As String
Set CurDB = CurrentDb()
Set Rs = CurDB.OpenRecordset("tblProductUse")
Rs.AddNew
'change the field names in the next 2 lines
'as appropriate for your form and your table
Rs![RecID] = Me![RecID]
Rs![ProductName] = Me![ProductName]
Rs.Update
Rs.Close
Set CurDB = Nothing
Set Rs = Nothing
SQLStmt = vbNullString
That should get you started. Post back if you need more details.
Ken S.