Avalados por :

¿Cómo establecer una fórmula de condición de sección con la API de RAS?

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 2 Vistas
0
Cargando...

¿Es posible establecer una fórmula de condición de sección a través de la API de RAS?

Otra pregunta similar fue publicada hace unos meses por otro usuario, pero quedó sin respuesta ( )

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Hola Don,
Quizás mi comentario no fue claro. Agregar una expresión de cadena ("""some text""") a un objeto de fórmula numérica cambia su tipo de datos a cadena (anula el tipo de datos establecido explícitamente en el código). Esto hace que el método .Check() falle al detectar el problema.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Gracias Ido,

Acabo de publicar un tipo de condición para probar, Inteli-sense y Object Browser listarán todos ellos...

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

¡Gracias, Don!

Ten en cuenta que la verificación de la expresión de condición no parece funcionar para las expresiones de color de fondo (que son numéricas). Después de establecer el tipo de fórmula como numérico usando:

oFormulaField.Type = CrystalDecisions.ReportAppServer.DataDefModel.CrFieldValueTypeEnum.crFieldValueTypeNumberField

El acto de asignar el texto de la fórmula revierte el tipo a StringField si la expresión es una cadena. No importa si la asignación de TEXTO ocurre antes o después de intentar establecer el tipo de datos de la fórmula.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola ido,

Debería funcionar. Utilizo esto para obtener la colección, por lo que la adición está comentada pero debería funcionar para ti:

{

btnReportObjects.Text = "";

flcnt = 0;

foreach (CrystalDecisions.ReportAppServer.ReportDefModel.ReportObject reportObject in rptClientDoc.ReportDefController.ReportObjectController.GetAllReportObjects())

{

var reportSection = rptClientDoc.ReportDefController.ReportDefinition.FindSectionByName(reportObject.SectionName);

for (int index = 0;

index < reportSection.Format.ConditionFormulas.Count;

++index)

{

var formula = reportSection.Format.ConditionFormulas[(CrystalDecisions.ReportAppServer.ReportDefModel.CrSectionAreaFormatConditionFormulaTypeEnum)index];

var NewFormula = reportSection.Format.ConditionFormulas[(CrystalDecisions.ReportAppServer.ReportDefModel.CrSectionAreaFormatConditionFormulaTypeEnum)index];

try

{

if (formula.Text != null)

{

textBox1 = "Fórmula de condición: " + formula.Text.ToString() + "\n";

textBox1 += "Sección " + reportSection.Name + "\n";

}

}

catch (Exception ex)

{

btnReportObjects.Text += "\nExcepción: " + ex.ToString();

}

btnReportObjects.Text += textBox1;

btnReportObjects.AppendText("\n");

++flcnt;

btnCount.Text = flcnt.ToString();

//// Verifica la fórmula agregándola al informe para verificar la sintaxis

//CrystalDecisions.ReportAppServer.ObjectFactory.ObjectFactory objFactory = new CrystalDecisions.ReportAppServer.ObjectFactory.ObjectFactory();

//CrystalDecisions.ReportAppServer.DataDefModel.FormulaField Formula = (CrystalDecisions.ReportAppServer.DataDefModel.FormulaField)objFactory.CreateObject("CrystalReports.FormulaField");

//Formula.Type = CrystalDecisions.ReportAppServer.DataDefModel.CrFieldValueTypeEnum.crFieldValueTypeStringField;

//Formula.Syntax = CrystalDecisions.ReportAppServer.DataDefModel.CrFormulaSyntaxEnum.crFormulaSyntaxCrystal;

//Formula.Text = @"whilereadingrecords; ""A"""; // "hello Ludek = 1"; // resultField.Text; // "n=3"; {Customer.Customer Credit ID} + 1 @"whilereadingrecords; ""A"""

//Formula.Name = "TestDon"; // "TestDon"; //  resultField.Name; //"testformula";

//String FormulaMessage = rptClientDoc.DataDefController.FormulaFieldController.Check(Formula);

//if (FormulaMessage == null)

//{

//    // luego agrega la fórmula condicional si está correcta

//    string newFormulaText = "'Funcionó' = 'Funcionó'";

//    // Clona un formato de sección y usa ReportSectionController.SetPropety para modificar las ConditionFormulas

//    CrystalDecisions.ReportAppServer.ReportDefModel.SectionFormat newFormat = reportSection.Format.Clone(true);

//    newFormat.ConditionFormulas[(CrystalDecisions.ReportAppServer.ReportDefModel.CrSectionAreaFormatConditionFormulaTypeEnum)index].Text = newFormulaText;

//    rptClientDoc.ReportDefController.ReportSectionController.SetProperty(reportSection, CrReportSectionPropertyEnum.crReportSectionPropertyFormat, newFormat);

//}

//else

//    btnReportObjects.Text += "Hay errores en la fórmula: " + FormulaMessage.ToString() + "\n";

}

}

}

Don

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?