Exemple #1
0
 private static void ProcessRunningTotalFieldDefinition(RunningTotalFieldDefinition rtfd, XmlWriter xmlw)
 {
     xmlw.WriteStartElement("RunningTotalFieldDefinition");
     xmlw.WriteAttributeString("EvaluationCondition", ProcessCondition(rtfd.EvaluationCondition));
     xmlw.WriteAttributeString("EvaluationConditionType", rtfd.EvaluationConditionType.ToStringSafe());
     xmlw.WriteAttributeString("IsPercentageSummary", rtfd.IsPercentageSummary.ToStringSafe());
     xmlw.WriteAttributeString("FormulaName", rtfd.FormulaName);
     xmlw.WriteAttributeString("Kind", rtfd.Kind.ToStringSafe());
     xmlw.WriteAttributeString("Name", rtfd.Name);
     xmlw.WriteAttributeString("NumberOfBytes", rtfd.NumberOfBytes.ToStringSafe());
     xmlw.WriteAttributeString("Operation", rtfd.Operation.ToStringSafe());
     xmlw.WriteAttributeString("OperationParameter", rtfd.OperationParameter.ToStringSafe());
     xmlw.WriteAttributeString("ResetCondition", ProcessCondition(rtfd.ResetCondition));
     xmlw.WriteAttributeString("ResetConditionType", rtfd.ResetConditionType.ToStringSafe());
     xmlw.WriteAttributeString("SummarizedField", rtfd.SummarizedField.FormulaName);
     xmlw.WriteAttributeString("UseCount", rtfd.UseCount.ToStringSafe());
     xmlw.WriteAttributeString("ValueType", rtfd.ValueType.ToStringSafe());
     if (rtfd.Group != null)
     {
         xmlw.WriteAttributeString("Group", rtfd.Group.ConditionField.FormulaName);
     }
     if (rtfd.SecondarySummarizedField != null)
     {
         xmlw.WriteAttributeString("SecondarySummarizedField", rtfd.SecondarySummarizedField.FormulaName);
     }
     xmlw.WriteEndElement();
 }
        static void Main(string[] args)
        {
            if (args.Count() >= 1 && args[0] == "-s")
            {
                Simplified = true;
                args       = args.Skip(1).ToArray();
            }

            if (args.Count() < 1 || args[0] == "-h")
            {
                Console.WriteLine("CrystalReportReaderFramework [-s]  report_file_name.rpt");
                Console.WriteLine("");
                Console.WriteLine("    -s  : Simplify output by removing numbers from sections and text fields and by removing location information.");
                Console.WriteLine("          Simplified output makes it easier to compare reports where layout is not important.");
                Console.WriteLine("");
                return;
            }

            string fileName = args[0];

            ReportDocument reportDocument = new ReportDocument();

            reportDocument.Load(fileName);

            Database db = reportDocument.Database;

            foreach (var t in db.Tables)
            {
                Table  tbl    = t as Table;
                string prefix = "Database:Table:Name:" + tbl.Name + ":";
                Console.WriteLine(prefix);
                Console.WriteLine(prefix + "Location:" + tbl.Location);
                foreach (var f in tbl.Fields)
                {
                    FieldDefinition fd          = f as FieldDefinition;
                    string          fieldPrefix = prefix + "Field:Name:" + fd.Name + ":";
                    Console.WriteLine(fieldPrefix);
                    Console.WriteLine(fieldPrefix + "Kind:" + fd.Kind);
                    Console.WriteLine(fieldPrefix + "ValueType:" + fd.ValueType);
                }
            }

            foreach (var l in db.Links)
            {
                TableLink lnk        = l as TableLink;
                string    linkPRefix = "Database:TableLink:SourceTable:" + lnk.SourceTable.Name + ":DestinationTable:" + lnk.DestinationTable.Name + ":";
                Console.WriteLine(linkPRefix);
                Console.WriteLine(linkPRefix + "JoinType:" + lnk.JoinType);
                for (int i = 0; i < lnk.SourceFields.Count; i++)
                {
                    DatabaseFieldDefinition sfd = lnk.SourceFields[i] as DatabaseFieldDefinition;
                    DatabaseFieldDefinition dfd = lnk.DestinationFields[i] as DatabaseFieldDefinition;
                    Console.WriteLine(linkPRefix + "SourceField:Name:" + sfd.Name + ":DestinationField:Name:" + dfd.Name);
                }
            }


            var ffs = reportDocument.DataDefinition.FormulaFields;

            foreach (var ff in ffs)
            {
                FormulaFieldDefinition ffd = ff as FormulaFieldDefinition;
                Console.WriteLine("Formula:FormulaName:" + ffd.FormulaName + ":");
                if (ffd.Text != null)
                {
                    Console.WriteLine("Formula:FormulaName:" + ffd.FormulaName + ":Text:'" + MakeSingleLine(ffd.Text));
                }
            }

            var rtfs = reportDocument.DataDefinition.RunningTotalFields;

            foreach (var rtf in rtfs)
            {
                RunningTotalFieldDefinition rtfd = rtf as RunningTotalFieldDefinition;
                Group  rc     = rtfd.ResetCondition as Group;
                string prefix = "RunningTotal:FormulaName:" + rtfd.FormulaName + ":";
                Console.WriteLine(prefix + "Operation:" + rtfd.Operation);
                Console.WriteLine(prefix + "SummarizedField:" + rtfd.SummarizedField.Name + "," + rtfd.SummarizedField.FormulaName);
                Console.WriteLine(prefix + "EvaluationCondition:" + rtfd.EvaluationCondition);
                Console.WriteLine(prefix + "ResetCondition:" + rc.ConditionField.FormulaName);
            }


            var groups = reportDocument.DataDefinition.Groups;

            foreach (var gp in groups)
            {
                Group  gpd    = gp as Group;
                string prefix = "Group:GroupName:" + RemoveNumbersIfSimplified(gpd.ConditionField.FormulaName) + ":";
                Console.WriteLine(prefix);
                Console.WriteLine(prefix + "GroupOptions.Condition:" + gpd.GroupOptions.Condition);
            }



            var parameterFields = reportDocument.DataDefinition.ParameterFields;

            foreach (var pf in parameterFields)
            {
                ParameterFieldDefinition pfd = pf as ParameterFieldDefinition;
                var x = "ParameterFields:FormulaName:" + pfd.FormulaName + ":" +
                        "ParameterFieldName:" + pfd.ParameterFieldName;
                Console.WriteLine(x);
            }


            var sections = reportDocument.ReportDefinition.Sections;

            foreach (var section in sections)
            {
                Section sd     = section as Section;
                string  prefix = "Section:Name:" + RemoveNumbersIfSimplified(sd.Name) + ":";
                Console.WriteLine(prefix);
                Console.WriteLine(prefix + "Kind:" + sd.Kind);
                Console.WriteLine(prefix + "EnableKeepTogether:" + sd.SectionFormat.EnableKeepTogether);
                Console.WriteLine(prefix + "EnableSuppress:" + sd.SectionFormat.EnableSuppress);
                if (!Simplified)
                {
                    Console.WriteLine(prefix + "Height:" + sd.Height);
                    Console.WriteLine(prefix + "Height:" + sd.Height);
                }


                AddReportObjects(prefix, sd.ReportObjects);
            }

            // Console.WriteLine(reportDocument);
            //Console.ReadLine();
        }