Your Stored Procedure should be something like this:
USE [HRRecruitment]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[GenerateReport]
@StartDate DATE,
@EndDate DATE
as
begin
select * from tblPersonalDetails Inner Join tblFamilyDetails
on tblPersonalDetails.Email=tblFamilyDetails.Email Inner Join tblImageDetails
on tblPersonalDetails.Email=tblImageDetails.Email Inner Join tblEducationalDetails
on tblPersonalDetails.Email=tblEducationalDetails.Email Inner Join tblAcademicDetails
on tblPersonalDetails.Email=tblAcademicDetails.Email Left Join tblWorkExpDetails
on tblPersonalDetails.Email=tblWorkExpDetails.Email Left Join tblReferenceDetails
on tblPersonalDetails.Email=tblReferenceDetails.Email Left Join tblDeclarationDetails
on tblPersonalDetails.Email=tblPersonalDetails.Email where
tblPersonalDetails.JoinDate Between @StartDate and @EndDate
end
And also add the two dates as the parameters to your SqlCommand: using
sc.Parameters.Add()