Make these fields with global storage. I'd format the second field (view/print) as radio buttons as these would appear to be values where you would choose one or the other rather than both.
The trick for processing the selections in the first checkbox is to understand how the selected values are stored in the underlying field in your database table. Each selected value is entered, separated from other selected values by a return character and they will be listed in the order in which the user clicked the corresponding checkboxes. You can see this directly if you put a copy of the check box field next to the original and then return the copy to edit box format instead of check boxes.
Your script to parse out the different report options would look like this:
IF [ ValueCount ( FilterValues ( YourTable::GlobalCheckBoxField ; "Customers by address" ) ) ]
Perform Script ["Customers By Address Report"]
Else If [ValueCount ( FilterValues ( YourTable::GlobalCheckboxField ; "Customers by demographics" ) ) ]
Perform Script ["Customers by Demographics Report"]
Else If [ ValueCount ( FilterValues ( YourTable::GlobalCheckboxField ; "Customers by xyz" ) ) ]
Perform Script ["Customers by xyz Report"]
Show Custom Dialog ["No report option was selected"]
Each of these scripts would check your view/Print field to determine what to do with a given report once it has been created.
Use Fields with global storage specified for this so different users can make these selections at the same time without interfering with one another. Also, with global storage, the values selected will be accessible from every layout in your file regardless of what relationships have or have not been defined.