There are two fundamental problems with what you set up:
1. You should have 2 separate forms. 1 bound form to display your records. 1 unbound to let the user pick values in your listbox and open the report.
Having that listbox on the bound form, you create a situation where, in the current record, the value of the field your listbox is based on gets LOST.
Check it:
-complete all the fields for the first record, directly in your table.
-launch the form and a report.
-go and see in the table: the value got eliminated.
2 You are gathering text values in your code while the field you use as a criteria, based on a lookup table, is in fact a numeric field. Adapt the recordsource query of your listbox to gather two fields: the ID and the description. Then set the properties of the listbox to 2 columns, widths: 0;6 cm (thus hiding the first column), bound column:1.
This will display the descriptions while actually working with the IDs. Then adapt your code to supress all the unecessary Chr(34)
Otherwise your code is pretty good for someone saying he is a begginer.
Finally, do not forget to complete your relationships (relationship with the Distribution lookup table is missing) and to inforce relational integrity between your lookup and main tables.