Установить формат даты полей в Crystal Report динамически C# - PullRequest
0 голосов
/ 14 июля 2020

Я хочу динамически установить формат даты поля типа даты с помощью моего C# кода.

Я должен был написать этот код для циклического просмотра полей, поиска нужного поля и установки нового формата даты, но это не сработало.

Я сделал это, но это не сработало:

   CrystalDecisions.CrystalReports.Engine.ReportDocument rpt = new CrystalDecisions.CrystalReports.Engine.ReportDocument();
        rpt.Load("path to .rpt file");

   CrystalDecisions.ReportAppServer.ReportDefModel.ReportObjects reportObjects =
     rpt.ReportClientDocument.ReportDefController.ReportObjectController.GetReportObjectsByKind(CrReportObjectKindEnum.crReportObjectKindField);
        
        foreach (CrystalDecisions.ReportAppServer.ReportDefModel.ReportObject reportObject in reportObjects)
        {
            if (reportObject != null && reportObject.Kind == CrReportObjectKindEnum.crReportObjectKindField)
            {
                ISCRFieldObject oldFieldObject = (ISCRFieldObject)reportObject;

                CrystalDecisions.ReportAppServer.ReportDefModel.FieldFormat fieldFormat = new CrystalDecisions.ReportAppServer.ReportDefModel.FieldFormat();
                
                if (oldFieldObject.FieldValueType == CrFieldValueTypeEnum.crFieldValueTypeDateField
                    || oldFieldObject.FieldValueType == CrFieldValueTypeEnum.crFieldValueTypeDateTimeField)
                {
                    fieldFormat.DateFormat.SystemDefaultType = CrDateSystemDefaultTypeEnum.crDateSystemDefaultTypeNotUsingDefaults;
                    fieldFormat.DateFormat.CalendarType = CrDateCalendarTypeEnum.crDateCalendarTypeGregorianCalendar;
                    fieldFormat.DateFormat.DateOrder = CrDateOrderEnum.crDateOrderDayMonthYear;
                    fieldFormat.DateFormat.EraType = CrDateEraTypeEnum.crDateEraTypeLongEra;

                    fieldFormat.DateFormat.DateFirstSeparator = "+";
                    fieldFormat.DateFormat.DateSecondSeparator = "=";

                    fieldFormat.DateFormat.DayFormat = CrDayFormatEnum.crDayFormatNumericDay;
                    fieldFormat.DateFormat.MonthFormat = CrMonthFormatEnum.crMonthFormatLeadingZeroNumericMonth;
                    fieldFormat.DateFormat.YearFormat = CrYearFormatEnum.crYearFormatLongYear;

                    oldFieldObject.FieldFormat.DateFormat = fieldFormat.DateFormat;
                }
            }
        }

Что я делаю неправильно в этом

...