none
Passagem de valores entre reports RRS feed

  • Pergunta

  • Ola pessoal

     

    Será que alguem ja fez isso:

     

    Criei dois reports por exemplo:

     

    ReportA chama o ReportB

     

    Eu quero fazer com que a seleção do ReportA passe para o ReportB e ja imprima automaticamente.

     

    Alguem pode me ajudar??

     

    Grato

    Por enquanto.

    Mheydi

    sexta-feira, 4 de julho de 2008 15:48

Todas as Respostas

  • No args não é passado um record pro novo report?

     

    Eu nunca fiz isso, mas como que você ta chamando o relatório B?

     

    []s

    sexta-feira, 4 de julho de 2008 17:08
  • Assm:

     

        args = new Args("_Previsao_Realizado");
        ReportRun = ClassFactory.ReportRunClass(args);
        ReportRun.init();
        ReportRun.run();
        ReportRun.wait();

     

     

    Tem esse link que mostra como passar valores entre forms, tentei fazer em cima desse mas é meio diferente.

     

    http://www.pichler.com.br/axblog/?p=32

     

    Veja se concorda?

     


     

    sexta-feira, 4 de julho de 2008 17:13
  • hehehehehe, esse blog é o melhor! Stick out tongue

     

    Seguinte cara, você mesmo já matou a charada, você ta usando a classe Args pra chamar o formulário, certo? Se você der uma olhada, você pode colocar vários outros parametros na classe Args e usá-los no outro form.

     

     

    Ai no form B, no método init() você faz as verificações necessárias, ex.:

     

    Report A:

    args = new Args("_Previsao_Realizado");

    args.record( myCustTable );
    ReportRun = ClassFactory.ReportRunClass(args);
    ReportRun.init();
    ReportRun.run();
    ReportRun.wait();

     

     

    Report B:

    no método init()

    if(element.args().record())

      myTable = element.args().record()

     

     

    É assim que funciona, o que eu acho que você precisa aprender é como passar valores entre formulários, ai isso serve também pra reports e quando você entender como funciona, conseguirá resolver seu problema. Tenta entender tudo que ta no post http://www.pichler.com.br/axblog/?p=32 , foi com ele que peguie 'o caminho das pedras'.

     

    Abraço,

    Ricardo Pichler

    sexta-feira, 4 de julho de 2008 17:23
  •  

    Blz vou estudar esse post, mas me explica só mais uma coisa que me confundi:

     

    Vc coloco assim:

     

    no método init()

    if(element.args().record())

      myTable = element.args().record()

     

    Esse mytable vc só coloca o mytable, e não coloca por exemplo:

    mytable.campo = element.args().parm()????

     

     

    sexta-feira, 4 de julho de 2008 17:37
  • Então, muitas vezes é mais fácil você passar o registro relecionado do que passar só uma valor. No caso, eu mandei o registro inteiro, passando o myTable como parametro. Do jeito que você ta querendo, ai você pode ao invés de usar o args.record você poderia usar o args.parm( strValue.text() ) e ai acaba passando só um valor. Fui claro?

     

    Vou tentar resumir:

    A classe Args é muito usada pra passar parametros entre objetos, sendo assim, ela implementa vários métodos que tem o objetivo de te facilitar a vida. Você pode passar uma tabela, um valor simples, um enum, um objeto e/ou vários outros tipos de dados, por isso cada um escolhe aquele que lhe atende melhor.

     

    Um exemplo, ainda usando o myTable:

    ClassDeclaration

    CustTable myTable;

     

    No método init()

    if(element.args().record())

      myTable = args().record()

     

    No momento que eu faço isso, eu disse que a myTable passa a ter os dados que estão no record(), claro, isso só funciona se as tabelas forem iguais. Para testar isso, você pode fazer:

     

    if(args().record() && args.dataset() == tableNum(CustTable ))

      myTable = args().record();

     

    No caso acima, você verificou se tinha um record no args e além disso, você viu se esse record era do tipo CustTable.

     

    Olha esse outro post também, acho que é melhor:

    http://www.pichler.com.br/axblog/?p=33

    sexta-feira, 4 de julho de 2008 17:55
  • Cara to tentando mas ta dificil, não estou conseguindo retornar o valor que é colocado na Tmpsysquery.rangevalue,

    que é o form onde coloco a seleção do relatorio.

     

    Tem alguma ideia???

     

     

    sexta-feira, 4 de julho de 2008 19:33
  • Os dois reports foi você quem criou?

     

    []s

    sexta-feira, 4 de julho de 2008 19:36
  • SIm fui eu...

    sexta-feira, 4 de julho de 2008 19:39
  • Pq tem alguma coisa que impossibilite pq fui eu que criei???

    sexta-feira, 4 de julho de 2008 19:59
  • nopz, é até melhor, assim você exporta os dois e me manda, ai eu tento ver o que você ta fazendo.

     

    Já saí do escritório hoje, de qualquer forma, só vou poder te ajudar na segunda-feira, mas me manda o xpo que eu dou uma olhada!

     

    Meu e-mail é ricardo at pichler dot com dot br

     

     

    []s

    sexta-feira, 4 de julho de 2008 20:10
  • Nossa ..não entendi seu email como é???

    se quiser envia um email no meu ai te envio, muekita83@hotmail.com

    sexta-feira, 4 de julho de 2008 20:13
  • Mheydi,

    Antes de aprender a passar parametros, esquecemos do basico!

     

    Temos que ter um evento atrelado ao registro (como um método click) para podermos chamar o outro forma e passar os parametros e agora que abri o AX e fui testar o que você precisa, eu vi que não tem isso assim tão simples.

     

    Vou dar uma pesquisada e se encontrar algo, volto a postar.

     

    Abraço.

    segunda-feira, 7 de julho de 2008 13:21
  • da uma olhada nisso:

     

    http://dynamicsuser.net/forums/p/23397/121871.aspx#121871

     

    Foi você?

     

    []

    quarta-feira, 9 de julho de 2008 23:39