Hi David, Thanks for the reply. I am using stored procedures that require three parameters from the its caller. Based on the data supplied to the stored procedure data will be generated from various table. Can u give me some hint on how to do so using sub-reports. here is my sample code for calling stored procedure to generate report. dim rpt as new myreportname rpt.SetParameterValue("@studid", DataGridView1.CurrentCell.Value) If ComboBox3.SelectedItem IsNot Nothing And TextBox3.Text IsNot Nothing Then rpt.SetParameterValue("@term", CInt(ComboBox3.SelectedItem)) rpt.SetParameterValue("@academicyear", TextBox3.Text) GradeReportForm.CrystalReportViewer1.ReportSource = rpt GradeReportForm.StartPosition = FormStartPosition.CenterParent GradeReportForm.WindowState = FormWindowState.Maximized GradeReportForm.CrystalReportViewer1.PrintReport() Else MsgBox("Please Set Term and Academic year to Generate Report") End If I am grateful for any help you may give me. with regards,