Jump to content
Fórum Script Brasil
  • 0

Crystal report


Marcio_Garca

Question

alguém já viu essa mensagem no crystal?

The formula is too complex. Try simplifying it.

Estou gerando um rlt que tem um subreport na Report Footer.

É passado um parameter field para esse subreport com mais ou menos 3 mil registros....daí ele gera o relatorio, mas dá o erro acima... alguém pode me ajudar, por favor??

Link to comment
Share on other sites

8 answers to this question

Recommended Posts

  • 0
The formula is too complex. Try simplifying it.

A formula esta muito complexa. Tente simplifica-la

Reveja a passagem do parametro

abraço

Então, eu passo 3 mil códigos um a um no parameter field.... foram códigos selecionados pelo usuário na tela.... parameter field tem limite?

Antes eu usava selectionFormula, mas como estourava o limite passei a usar parameter field. Mas agora dá essa mensagem.

Link to comment
Share on other sites

  • 0

mas ele aponta qual formula q é??

seria um campo formula ou é a formula da selecao??

posta ai qual o codigo da formula pra gente ver.

e ai não entendi essa parte de 3000 registros no parameter field. você diz q passa os 3000 pro usuario escolher um deles, é isso??

Link to comment
Share on other sites

  • 0

Conforme o código abaixo, o ParameterField de um subreport está sendo alimentado um a um... o array informado, nesse caso, possui mais de 3 mil registros.... ao processar o relatorio aparece a mensagem citada acima.... se suprimir o subreport o erro não ocorre.... e se a qtde de registros for menor o erro tb não ocorre.... mas eu preciso exibir esses registros.

Tentei tirar o ParameterField do subreport, dai ele exibe todos os registros da tabela normalmente, só que fica sem o filtro né, então acho que o problema seja o ParameterField.

For Each oParameterFieldDefinition In oReport.OpenSubreport("SubUP").ParameterFields

Select Case oParameterFieldDefinition.ParameterFieldName

Case "peCdCelula"

For lngArray = 0 To UBound(avUP, 2)

oParameterFieldDefinition.AddCurrentValue avUP(0, lngArray)

Next

End Select

Next

Link to comment
Share on other sites

  • 0
o ParameterField de um subreport está sendo alimentado um a um... o array informado, nesse caso, possui mais de 3 mil registros.... ao processar o relatorio aparece a mensagem citada acima.... se suprimir o subreport o erro não ocorre.... e se a qtde de registros for menor o erro tb não ocorre.... mas eu preciso exibir esses registros.

For Each oParameterFieldDefinition In oReport.OpenSubreport("SubUP").ParameterFields

Select Case oParameterFieldDefinition.ParameterFieldName

Case "peCdCelula"

For lngArray = 0 To UBound(avUP, 2)

oParameterFieldDefinition.AddCurrentValue avUP(0, lngArray)

Next

End Select

Next

se a qtde de registros for menor o erro tb não ocorre ... então voce pode perceber o motivo do erro:

The formula is too complex. Try simplifying it.

A formula esta muito complexa. Tente simplifica-la

O modo como é passado o parametro é que tem quer ser modificado

veja nestes endereços:

http://www.willydev.net/InsiteCreation/v1....oparametros.pdf

http://www.dynalivery.com/products/paralle...Definition.html

http://devlibrary.businessobjects.com/busi...nclasstopic.htm

http://74.125.47.132/search?q=cache:cPnQnx...=clnk&gl=br

http://bytes.com/groups/net-c/262325-date-...fielddefinition

abraço

Link to comment
Share on other sites

  • 0

marcio, se o selection formula não tava aceitando e os parametros tb não, não sei se tem jeito.

o filtro q você quer fazer é muito complexo, mesmo.

uma otra alternativa seria você passar os dados a partir do recordset, como explicado nesse tópico: http://scriptbrasil.com.br/forum/index.php...mp;#entry477615

agora, não duvido q ocorra erro tb na hora de fazer o where no select.

3000 ORs é mta coisa mesmo. você podia usar o IN (Where Campo In ('valor1', 'valor2', ..., 'valor3000')), entretanto tb não duvido q va dar erro.

acho q você devia rever uma forma pra simplificar esse filtro.

Link to comment
Share on other sites

  • 0
o ParameterField de um subreport está sendo alimentado um a um... o array informado, nesse caso, possui mais de 3 mil registros.... ao processar o relatorio aparece a mensagem citada acima.... se suprimir o subreport o erro não ocorre.... e se a qtde de registros for menor o erro tb não ocorre.... mas eu preciso exibir esses registros.

For Each oParameterFieldDefinition In oReport.OpenSubreport("SubUP").ParameterFields

Select Case oParameterFieldDefinition.ParameterFieldName

Case "peCdCelula"

For lngArray = 0 To UBound(avUP, 2)

oParameterFieldDefinition.AddCurrentValue avUP(0, lngArray)

Next

End Select

Next

se a qtde de registros for menor o erro tb não ocorre ... então voce pode perceber o motivo do erro:

The formula is too complex. Try simplifying it.

A formula esta muito complexa. Tente simplifica-la

O modo como é passado o parametro é que tem quer ser modificado

veja nestes endereços:

http://www.willydev.net/InsiteCreation/v1....oparametros.pdf

http://www.dynalivery.com/products/paralle...Definition.html

http://devlibrary.businessobjects.com/busi...nclasstopic.htm

http://74.125.47.132/search?q=cache:cPnQnx...=clnk&gl=br

http://bytes.com/groups/net-c/262325-date-...fielddefinition

abraço

Desculpe, mas não entendi. Estou lendo o documento do primeiro link enviado, mas não entendo como devo modificar a forma com que passo os valores.

Link to comment
Share on other sites

  • 0
o ParameterField de um subreport está sendo alimentado um a um... o array informado, nesse caso, possui mais de 3 mil registros

porque fazer esta alimentação um a um ? porque não aplica um Range ? qual é o valor corrente passado ?

quando diz que: A formula esta muito complexa. Tente simplifica-la....

voce deve tirar do subreport essa passagem de um a um, porque o número de interações extrapola.

For Each oParameterFieldDefinition In oReport.OpenSubreport("SubUP").ParameterFields
Select Case oParameterFieldDefinition.ParameterFieldName
Case "peCdCelula"
For lngArray = 0 To UBound(avUP, 2)
oParameterFieldDefinition.AddCurrentValue avUP(0, lngArray)
Next
End Select
Next

ao executar

For lngArray = 0 To UBound(avUP, 2)

oParameterFieldDefinition.AddCurrentValue avUP(0, lngArray)

voce esta adicionando no parametro de definição do campo todos os valores do array ... isso para cada interação do < For Each >

pense numa maneira de agrupá-los

abraço

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...