¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Como definir uma fórmula de condição de seção com a API do RAS?

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

É possível estabelecer uma fórmula de condição de seção através da API do RAS?

Outra pergunta semelhante foi feita alguns meses atrás por outro usuário, mas ficou sem resposta ( )

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

4 Respuestas

0
Cargando...

Olá Don,
Talvez meu comentário não tenha sido claro. Adicionar uma expressão de cadeia ("""algum texto""") a um objeto de fórmula numérica altera seu tipo de dados para cadeia (anula o tipo de dados estabelecido explicitamente no código). Isso faz com que o método .Check() falhe ao detectar o problema.

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

Obrigado Ido,

Acabei de publicar um tipo de condição para testar, Inteli-sense e Object Browser listarão todos eles...

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

°Obrigado, Don!

Tenha em mente que a verificação da expressão condicional parece não funcionar para expressões de cor de fundo (que são numéricas). Depois de definir o tipo de fórmula como numérico usando:

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

O ato de atribuir o texto à fórmula reverte o tipo para StringField se a expressão for uma string. Não importa se a atribuição de TEXTO ocorre antes ou depois de tentar definir o tipo de dados da fórmula.

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

Olá,

Deveria funcionar. Estou usando isso para obter a coleção, então a adição está comentada, mas deve funcionar para você:

{

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 condição: " + formula.Text.ToString() + "\n";

textBox1 += "Seção " + reportSection.Name + "\n";

}

}

catch (Exception ex)

{

btnReportObjects.Text += "\nExceção: " + ex.ToString();

}

btnReportObjects.Text += textBox1;

btnReportObjects.AppendText("\n");

++flcnt;

btnCount.Text = flcnt.ToString();

//// Verifica a fórmula adicionando-a ao relatório para verificar a sintaxe

//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)

//{

//††† // então adiciona a fórmula condicional se estiver correta

//††† string newFormulaText = "'Funcionar' = 'Funcionar'";

//††† // Clona um formato de seção e usa ReportSectionController.SetPropety para modificar as 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 += "Há erros na 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?