Try this it work fine with me
the report must be in one Directory of the Executing Assembly Directory
try
{
string ReportPath = System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + @"\ReportFolder\ReportName.rpt";
rptDocument.Load(ReportPath);
CrystalDecisions.Shared.ConnectionInfo crConnectionInfo = new CrystalDecisions.Shared.ConnectionInfo();
crConnectionInfo.DatabaseName = DatabaseName;
crConnectionInfo.Password = Password;
crConnectionInfo.UserID = UserID;
crConnectionInfo.ServerName = ServerName;
rptDocument.SetDatabaseLogon(UserID, Password, ServerName, DatabaseName, False);
rptDocument.PrintOptions.PrinterName = PrinterName;
rptDocument.PrintToPrinter( 1, false, 0, 0);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}