'------------- >' Create a report interface class, e.g. IReport >' function must be empty - just the function interface >Public Function RunReport(Optional ByVal param1 As Variant = "", _ > Optional ByVal param2 As Variant = "", ....) >End Function > >'------------- >' Create specific report class(es) >' e.g. MonthlyReport >' Declarations >Option Explicit >Implements IReport > >' this function will have to be coded >' since it is an Implemented function >Public Function IReport_RunReport(Optional ByVal param1 As Variant = "", _ > Optional ByVal param2 As Variant = "", ....) > > '------------- > ' code to run the specific report here > '------------- > >End Function > >'------------- >' in your COM object called from the ASP page >' add a reference to the project to the interface class >' or add the cls itself to the project > >' e.g. in the ASP page, the report factory is called, which then calls >' the specific type of report - e.g. >' ReportFactory.RunReportFromASP("MyReports.MonthlyReport", #2001/01#) > >Public Function RunReportFromASP(cClassName As String, _ > Optional ByVal param1 As Variant = "", _ > Optional ByVal param2 As Variant = "", ....) > > Dim oReport As IReport > > Set oReport = CreateObject(cClassName) > > oReport.RunReport(param1, param2, ....) > >End Function>When the MonthlyReports class (or any other class implementing the IReport interface) is compiled, if the IReport_RunReport() function is empty, an error will be thrown. This way, you ensure that the RunReport() function will be available for the object created inside your COM server, since the object created will be assumed to implement the IReport interface.
Public Function printReport(reportName As String) As String Dim strFileName As String, oDataReport As DataReport strFileName = CreateTempFile("rpt") 'need some way to set oDataReport to reportName object Set oDataReport = rptHTML oDataReport.ExportReport rptKeyHTML, strFileName, True, False, rptRangeAllPages While oDataReport.AsyncCount > 0 DoEvents Wend Unload oDataReport Dim outStr As String, F As Integer F = FreeFile 'Get a file handle Open strFileName For Input As F 'Open the file outStr = Input$(LOF(F), F) 'Read entire file into text box Close F 'Close the file. Kill strFileName printReport = outStr End FunctionrptHTML is the DataReport object that is part of the project. I want to be able to add several reports and call them with this method without having to add any code to the class itself, just add the DataReport and the DataEnvironment to the project. Does this make sense or is there a better way?