Esempio n. 1
0
        private void Page_Load(object sender, System.EventArgs e)
        {
            CrystalDecisions.Enterprise.SessionMgr        boSessionMgr;
            CrystalDecisions.Enterprise.InfoStore         boInfoStore;
            CrystalDecisions.Enterprise.EnterpriseService boEnterpriseService;
            CrystalDecisions.Enterprise.InfoObjects       boInfoObjects;
            string boReportName;
            string boQuery;

            CrystalDecisions.ReportAppServer.ClientDoc.ReportAppFactory  boReportAppFactory;
            CrystalDecisions.ReportAppServer.DataDefModel.ParameterField boParameterField;
            CrystalDecisions.ReportAppServer.ReportDefModel.Section      boSection;
            CrystalDecisions.ReportAppServer.ReportDefModel.FieldObject  boFieldObject;

            if (Session["boEnterpriseSession"] != null)
            {
                boEnterpriseSession = (CrystalDecisions.Enterprise.EnterpriseSession)Session["boEnterpriseSession"];
            }
            else
            {
                //Log on to the Enterprise CMS
                boSessionMgr        = new CrystalDecisions.Enterprise.SessionMgr();
                boEnterpriseSession = boSessionMgr.Logon(Request.QueryString["username"], Request.QueryString["password"], Request.QueryString["cms"], Request.QueryString["authtype"]);
                Session.Add("boEnterpriseSession", boEnterpriseSession);
            }

            //get report object from session or create a new report object
            if (Session["boReportClientDocument"] != null)
            {
                boReportClientDocument = (CrystalDecisions.ReportAppServer.ClientDoc.ReportClientDocument)Session["boReportClientDocument"];
            }
            else
            {
                boEnterpriseService = boEnterpriseSession.GetService("", "InfoStore");
                boInfoStore         = new CrystalDecisions.Enterprise.InfoStore(boEnterpriseService);

                boReportName = "SimpleRCAPIReport.rpt";

                //Retrieve the report object from the InfoStore, only need the SI_ID for RAS
                boQuery = "Select SI_ID From CI_INFOOBJECTS Where SI_NAME = '" + boReportName +
                          "' AND SI_Instance=0";
                boInfoObjects = boInfoStore.Query(boQuery);
                boInfoObject  = boInfoObjects[1];

                boEnterpriseService = null;

                //Retrieve the RASReportFactory
                boEnterpriseService = boEnterpriseSession.GetService("RASReportFactory");
                boReportAppFactory  = (CrystalDecisions.ReportAppServer.ClientDoc.ReportAppFactory)boEnterpriseService.Interface;
                //Open the report from Enterprise
                boReportClientDocument = boReportAppFactory.OpenDocument(boInfoObject.ID, 0);

                //Create a parameter field.
                boParameterField = new CrystalDecisions.ReportAppServer.DataDefModel.ParameterField();
                //Set its name.
                boParameterField.Name = "boParameterField";
                //set its type.
                boParameterField.Type = CrystalDecisions.ReportAppServer.DataDefModel.CrFieldValueTypeEnum.crFieldValueTypeStringField;
                //add it to the report definition.
                boReportClientDocument.DataDefController.ParameterFieldController.Add(boParameterField);
                //This will not prompt as the parameter is not yet in use. We will have to add it to the report first

                //get the section we want to use.  In this case the report header.
                boSection = boReportClientDocument.ReportDefController.ReportDefinition.ReportHeaderArea.Sections[0];

                //Create a new field object.
                boFieldObject = new CrystalDecisions.ReportAppServer.ReportDefModel.FieldObject();
                //set where to get the data from. (The parameter field name.)
                boFieldObject.DataSourceName = "{?boParameterField}";
                //set the type.
                boFieldObject.FieldValueType = CrystalDecisions.ReportAppServer.DataDefModel.CrFieldValueTypeEnum.crFieldValueTypeStringField;
                //set the location
                boFieldObject.Top  = 120;
                boFieldObject.Left = 3000;
                //set the size
                boFieldObject.Height = 240;
                boFieldObject.Width  = 2115;
                //set the font info.
                boFieldObject.FontColor           = new CrystalDecisions.ReportAppServer.ReportDefModel.FontColor();
                boFieldObject.FontColor.Font.Name = "Arial";
                boFieldObject.FontColor.Font.Size = 10;
                //set the alignment
                boFieldObject.Format.HorizontalAlignment = CrystalDecisions.ReportAppServer.ReportDefModel.CrAlignmentEnum.crAlignmentLeft;
                //add the field to the report header.
                boReportClientDocument.ReportDefController.ReportObjectController.Add(boFieldObject, boSection, -1);

                //Add the reportClientDocument to session
                Session.Add("boReportClientDocument", boReportClientDocument);
            }

            //Set the ReportSource of the viewer to the report in Session
            boCrystalReportViewer.ReportSource = Session["boReportClientDocument"];
        }
Esempio n. 2
0
        private static void TransformReportTest()
        {
            var rpt = new ReportDocument();

            rpt.Load(@"Reports\SimpleReport.rpt");
            var doc = rpt.ReportClientDocument;

            // var fieldObjects = rpt.ReportDefinition.ReportObjects.OfType<FieldObject>().ToList();
            var fields = doc.ReportDefController.ReportObjectController.GetReportObjectsByKind(CrystalDecisions.ReportAppServer.ReportDefModel.CrReportObjectKindEnum.crReportObjectKindField);

            // var q = doc.ReportDefController.ReportDefinition.DetailArea.Sections.Count;

            var textObject = new CrystalDecisions.ReportAppServer.ReportDefModel.TextObject();

            var sectionStart = doc.ReportDefController.ReportDefinition.DetailArea.Sections[0];

            sectionStart.Format.BackgroundColor = 16;

            var fontColor = new CrystalDecisions.ReportAppServer.ReportDefModel.FontColor();
            var font      = new CrystalDecisions.ReportAppServer.ReportDefModel.Font();

            font.Bold       = true;
            font.Name       = "Arial";
            fontColor.Font  = font;
            fontColor.Color = 0;

            var header1 = new CrystalDecisions.ReportAppServer.ReportDefModel.FieldHeadingObject();

            header1.FieldObjectName = "headerPole";
            header1.FontColor       = fontColor;

            //  doc.ReportDefController.ReportObjectController.Add(textObject, sectionStart, -1);

            foreach (CrystalDecisions.ReportAppServer.ReportDefModel.ISCRReportObject fieldObject in fields)
            {
                // Utworzenie nowej sekcji
                CrystalDecisions.ReportAppServer.ReportDefModel.Section newSection = new CrystalDecisions.ReportAppServer.ReportDefModel.Section();
                newSection.Kind   = CrystalDecisions.ReportAppServer.ReportDefModel.CrAreaSectionKindEnum.crAreaSectionKindDetail;
                newSection.Name   = "Detail" + fieldObject.Name;
                newSection.Height = 300;
                newSection.Width  = 11520;

                //   var area = doc.ReportDefController.ReportDefinition.DetailArea;

                var index = fields.FindIndexOf(fieldObject);

                if (index % 2 == 0)
                {
                    newSection.Format.BackgroundColor = 14803425;
                }

                doc.ReportDefController.ReportSectionController.Add(newSection, doc.ReportDefController.ReportDefinition.DetailArea, -1);

                fieldObject.Format.HorizontalAlignment = CrystalDecisions.ReportAppServer.ReportDefModel.CrAlignmentEnum.crAlignmentLeft;
                fieldObject.Left  = 200;
                fieldObject.Top   = 0;
                fieldObject.Width = 6 * 1440;

                // Przesuwamy pole
                doc.ReportDefController.ReportObjectController.Remove(fieldObject);
                doc.ReportDefController.ReportObjectController.Add(fieldObject, newSection);
            }

            // Utworzenie grupy

            var group      = new CrystalDecisions.ReportAppServer.DataDefModel.Group();
            var tableIndex = doc.DatabaseController.Database.Tables.FindByAlias("Orzeczenia");
            var table      = (CrystalDecisions.ReportAppServer.DataDefModel.Table)doc.DatabaseController.Database.Tables[tableIndex];

            // Pobranie pola z raportu
            var field = (CrystalDecisions.ReportAppServer.DataDefModel.Field)table.DataFields.FindField("{Orzeczenia.OsobaId}",
                                                                                                        CrystalDecisions.ReportAppServer.DataDefModel.CrFieldDisplayNameTypeEnum.crFieldDisplayNameFormula,
                                                                                                        CrystalDecisions.ReportAppServer.DataDefModel.CeLocale.ceLocaleUserDefault);

            // Ustawienie pola do grupowania
            group.ConditionField = field;


            // Dodanie grupy do raportu
            doc.DataDefController.GroupController.Add(-1, group);

            // Dodanie pola z bazy danych
            var field2 = new CrystalDecisions.ReportAppServer.ReportDefModel.FieldObject();

            field2.DataSourceName             = "{Orzeczenia.OsobaId}";
            field2.FieldValueType             = CrystalDecisions.ReportAppServer.DataDefModel.CrFieldValueTypeEnum.crFieldValueTypeInt32sField;
            field2.Left                       = 4 * 1440; //1440 twips per inch
            field2.Width                      = 3 * 1440;
            field2.FontColor                  = new CrystalDecisions.ReportAppServer.ReportDefModel.FontColor();
            field2.FontColor.Font.Name        = "Arial";
            field2.FontColor.Font.Size        = 10;
            field2.Format.HorizontalAlignment = CrystalDecisions.ReportAppServer.ReportDefModel.CrAlignmentEnum.crAlignmentLeft;

            //   var sectionStart = doc.ReportDefController.ReportDefinition.DetailArea.Sections[0];

            var groupSection = doc.ReportDefController.ReportDefinition.GroupHeaderArea[0].Sections[0];

            //Add the object to the report
            doc.ReportDefController.ReportObjectController.Add(field2, groupSection, -1);



            rpt.SaveAs(@"Reports\TransformReport.rpt");

            rpt.ExportToDisk(ExportFormatType.PortableDocFormat, "TransformReport.pdf");

            rpt.Close();

            rpt.Dispose();

            System.Diagnostics.Process.Start("TransformReport.pdf");
        }