in that case. make one query with ALL the data. make one report to house all that data. then create a form that you can filter whatever you want from the available data.
FIRST OF ALL - i think your table structure COULD possibly be non-normalised, from your statement about being forced to make a new report each new species that is added - you shouldn't need to do this with a proper setup. you haven't mentioned what tables you have and how they relate to each other (a pic would help too). i think this might need to be addressed in the first instance.
however, on the off-chance that your tables are fine and all we're missing is a filtration system, here's one of mine that i'm still working on:
so, basically, you have queries not selecting various things, but one query, then you filter it. i do this all frequently.
i am working on a database for a particular department at work. i will post it here to show you what i mean. it's not finished yet, so not all the buttons and checkboxes work.
first off, choose any user to login, it doesn't matter - it won't ask for a password and it's not for security, it's for auditing. if it makes you feel any better, i made those names up - they're not real people (as i'm sure you'll realise as soon as you reach the login screen).
on the next form after you login, click on the first button "1. Queue Orders". have a quick look at this form - press the first drop down - you will see a list of ALL the items available for ordering. don't select any, you don't need to (and if you do, just don't select an item without a price - i hvaen't fixed that yet - it errors out).
however, when you click on "Print Queued Items", it shows you two listboxes - one of these is 'suppliers' - now, the database has about 40-odd(?) suppliers in it BUT this listbox is only displaying the 5(?) or so that have been associated with the queued items.
even more cool than that - if you select just ONE of those in the list, you can filter the report to display JUST THAT ONE (or a selection - the list allows you to select many of them!) in the report (which, when run on its own will print ALL the queued items.
this is quite a complex example of what i mean for you, but it just shows you what's possible. there are much simpler ways to get just one or two things, and that's handled quite easily in the DoCmd.OpenReport comand, and is usually only one line, but of course, can be limited.
let me know what solution you think might suit you best, and we'll go through it step by step.
if you'll like me to look over your table structure, zip up YOUR database and post it here. we'll get it sorted!