on 05-23-2016 5:00 PM
I'm creating a Crystal Report viewer in an ASP.NET web page and all works fine (except I can't go beyond page 2 but that's another problem). However I now want to add some extra selection criteria to any that may already be present in the report.
I have a class which loads the existing .rpt file and adds the connection info :
protected ReportDocument LoadCrystalReport(string reportFile) | |
{ | |
if (!string.IsNullOrEmpty(reportFile)) | |
{ | |
// Get the required report and load it into the viewer | |
ReportDocument crRpt = new ReportDocument(); | |
crRpt.Load(reportFile); |
// now logon to the files used by the current report | |
ConnectionInfo connectionInfo = new ConnectionInfo(); | |
TableLogOnInfo crtableLogoninfo = new TableLogOnInfo(); |
connectionInfo.ServerName = dbServer.Value; | |
connectionInfo.DatabaseName = addrBook.Value; | |
connectionInfo.UserID = userName.Value; | |
SymCrypt sc = new SymCrypt(); | |
connectionInfo.Password = sc.Decrypt(userPass.Value); |
foreach (CrystalDecisions.CrystalReports.Engine.Table crTable in crRpt.Database.Tables) | |
{ | |
crtableLogoninfo = crTable.LogOnInfo; | |
crtableLogoninfo.ConnectionInfo = connectionInfo; | |
crTable.ApplyLogOnInfo(crtableLogoninfo); | |
} |
return crRpt; | |
} |
return null; | |
} |
And the code to call this class and display the report and extend the selection is:
// load our report |
crRpt = LoadCrystalReport(Path.Combine(reportPath.Value, reportName.Value)); |
crystalReportViewer.ReportSource = crRpt; |
crystalReportViewer.PrintMode = CrystalDecisions.Web.PrintMode.Pdf; |
string extraSelects = string.Empty; |
// This checks for additional select criteria |
if (!string.IsNullOrEmpty(extraSelects = SetRecordSelectionForReport())) |
{ // Do we have to add this to existing criteria ?? |
if (string.IsNullOrEmpty(crRpt.RecordSelectionFormula)) |
{ |
crRpt.RecordSelectionFormula = extraSelects; |
} |
else |
{ |
crRpt.RecordSelectionFormula = string.Format("{0} and {1}", crRpt.RecordSelectionFormula, extraSelects); |
} |
} |
However when I assign my joined selection criteria to crRpt.ReportSelectionFormula it immediately clears all existing data and leaves the value empty. If I check the value of RecordSelectionFormula prior to any assignment it has the value : " ( ( {Opportunity.Status} = 3 AND {@0 £ balance remains 24 months} ) AND ( {Address.Country} <> \"Channel Islands\" ) ) ". I then want to append further criteria: "( {Opportunity.Opp_Id} IN [ \"060918022732098261889C\", \"060908008692098261889C\" ] )" so i concatenate the 2 strings with an "AND" giving : " ( ( {Opportunity.Status} = 3 AND {@0 £ balance remains 24 months} ) AND ( {Address.Country} <> \"Channel Islands\" ) ) AND ( {Opportunity.Opp_Id} IN [ \"060918022732098261889C\", \"060908008692098261889C\" ] )" but this clears the existing criteria and doesn't assign my new selection. Is there something I'm missing with regard to setting a new selection criteria ?? |
OK, I think I've got this resolved. It looks like it might have been down to running a web app under debug. If it runs normally the selection appears to be working however I need to do some more tests to confirm it.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
83 | |
10 | |
10 | |
9 | |
7 | |
6 | |
5 | |
5 | |
4 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.