as far as i understood your question i can say that you must create a general class for that which will have everything a crystal report needs...
for example... that class should include the following members... you can have more but these are the basic ones...
CrystalReport (CRPT)
CrystalReportViewer (CRV)
Table
Query
on the other hand you must have function which will accept the following parameters...
ShowReport(ByVal TableName As String, ByVal CRV As Object, ByVal CRPT As Object, ByVal Query As String, Optional ByVal ParameterValue As Object = Nothing)
and the rest is upto you...