Autor Tópico: [RESOLVIDO]Relatórios com IReport  (Lida 2953 vezes)

Vandacardoso

  • Avançado
  • ****
  • Mensagens: 272
Re:Relatórios com IReport
« Responder #45 Online: Outubro 15, 2015, 10:15:00 am »
Cada subconsulta é como se fosse um campo. Você pode incluí-la no formato livre.
Manda uma imagem do que vc tá tentando fazer pra gente entender melhor.
[]s
Allan, já mandei imagem do que estou a tentar fazer aqui e mostra o resultado do como não quero que apareça.

Vandacardoso

  • Avançado
  • ****
  • Mensagens: 272
Re:Relatórios com IReport
« Responder #46 Online: Outubro 15, 2015, 10:28:16 am »
Vanda se a subconsulta é uma grid de registros relacionados porque vocês esta fazendo a subconsulta com formato livre também? Faça como uma grid normal.

Saulo, funcionou. Fiz subconsulta como disse e deu certo. É claro que tive que formatar o css da consulta porque estava completamente diferente do layout html que fiz da consulta. Mas tudo bem.
Agora tenho um problema. A subconsulta devia estar associada a um determinado registo que aparece no relatório base, mas não está.
Explico melhor: se na consulta principal me mostra o registo 1 na subconsulta dele só devia aparecer tudo o que está relacionado com esse registo (a relação das tabelas está feita), mas aparece também do registo 2.
O que posso fazer neste caso? Pensei num select mas não sei como o fazer de forma correta (são ainda as minhas dificuldades nesta área). Se me quiserem ajudar agradeço.

Vandacardoso

  • Avançado
  • ****
  • Mensagens: 272
Re:Relatórios com IReport
« Responder #47 Online: Outubro 15, 2015, 10:29:02 am »
Vanda,


Olhou o exemplo que te passei?

AO montar o campo, você tem que montar numa  cabeçalho e rodapé da tabela html fora do loop de leitura dos registros.
Ok Haroldo vou ver melhor.

Vandacardoso

  • Avançado
  • ****
  • Mensagens: 272
Re:Relatórios com IReport
« Responder #48 Online: Outubro 15, 2015, 01:00:42 pm »
Tentei isto na grid da subconsulta no Evento onApplicationIni:

sc_select {id_agregado},{nome},{parentesco},{idade},{actprofissional},{telefone},{id_idoso}
   from agregado
   where id_idoso =(select id_idoso
                from agregado
                where id_idoso ="1");

Dá erro:Parse error: syntax error, unexpected '$this' (T_VARIABLE)
Já entendi que está a pedir uma variável. Quem me pode ajudar? Obrigada

Haroldo

  • Expert
  • *****
  • Mensagens: 6276
  • Conhecimento diminui limitações.△TFA△
    • Infinitus Web Gestão Empresarial/Gestão ITIL/Consultoria Scriptcase
Re:Relatórios com IReport
« Responder #49 Online: Outubro 15, 2015, 01:48:48 pm »
Seu select está errado, de uma olhadinha no webhelp.

Allan Medeiros

  • Expert
  • *****
  • Mensagens: 504
    • Email
Re:Relatórios com IReport
« Responder #50 Online: Outubro 15, 2015, 05:02:13 pm »
Vanda,
O SQL da subconsulta seria como abaixo e na ligação entre a consulta e a subconsulta vc passa o campo {id_idoso} como parâmetro para [pIdIdoso].
[]s


SELECT id_agregado,nome,parentesco,idade,actprofissional,telefone,id_idoso
FROM agregado
WHERE id_idoso = '[pIdIdoso]'
Allan Medeiros
Analista de Informática
__________________________________________
Companhia de Processamento de Dados da Paraíba
medeiros@codata.pb.gov.br

saulobborges

  • Expert
  • *****
  • Mensagens: 1392
    • SGi Sistemas
    • Email
Re:Relatórios com IReport
« Responder #51 Online: Outubro 15, 2015, 10:16:10 pm »
É isso aí como disse o Allan, na subconsulta você tem que definir uma variável de entrada, Ex: [idoso], ao fazer a ligação da subconsulta o próprio scriptcase vai pedir pra você informar quem vai preencher o valor dessa variável.

Isso aqui não vai funcionar como você pretende, o uso da macro esta incorreto, além de outras coisas que explico mais abaixo:
Código: [Selecionar]
sc_select {id_agregado},{nome},{parentesco},{idade},{actprofissional},{telefone},{id_idoso}
   from agregado
   where id_idoso =(select id_idoso
                from agregado
                where id_idoso ="1");
O que você esta tentando fazer não tem como, você deve informar o select na opção select da aplicação de consulta, além de não dar certo o veento onde você esta tentando usar o sc_select só esta disponível a partir do evento OnScriptInit.
Pra alterar o select você tem algumas opções, por exemplo você pode alterar o WHERE dianmicamente, pode alterar quais campos a consulta vai trazer dinamicamente, pode alterar a ordenação, mas não pode alterar a estrutura básica do select da consulta, no manual tem melhores referências sobre isso na parte das Macros.

Vandacardoso

  • Avançado
  • ****
  • Mensagens: 272
Re:Relatórios com IReport
« Responder #52 Online: Outubro 16, 2015, 07:06:23 am »
Seu select está errado, de uma olhadinha no webhelp.

Haroldo, já li e reli o webhelp. Já sei que a sua filosofia de ajuda é mandar ler o manual rsrsr. E eu faço isso, tento entender. Mas sabe eu de programação é a primeira vez, com o SC, que estou a começar a aprender. Sei desenvolver html, sei trabalhar com access. Mas nunca trabalhei nem com php, nem com java. A minha dificuldade, neste caso das variáveis é onde vou para criar a variável. Vou no criar um método, vou na Configuração? Com o DW nós temos a parte de design e de código e eu sei que para escrever o código tenho que ir a essa área.  Não sei se dá para entender a minha dúvida.
De qualquer forma obrigada pela sua ajuda.

Vandacardoso

  • Avançado
  • ****
  • Mensagens: 272
Re:Relatórios com IReport
« Responder #53 Online: Outubro 16, 2015, 07:20:56 am »
Vanda,
O SQL da subconsulta seria como abaixo e na ligação entre a consulta e a subconsulta vc passa o campo {id_idoso} como parâmetro para [pIdIdoso].
[]s


SELECT id_agregado,nome,parentesco,idade,actprofissional,telefone,id_idoso
FROM agregado
WHERE id_idoso = '[pIdIdoso]'
Allan, muito obrigada. Funcionou certinho. E você explicou muito bem, deu para entender onde tinha que fazer o quê. A única coisa que tive de fazer a mais foi na subconsulta na Configuração do SQL em variáveis para campos dizer que a variável era [pIdIdoso] e escolher o campo id_idoso. Depois bastou na Consulta dar a instrução do parâmetro. Agora já aparece cada detalhe associado ao registo certo.
Agradeço também ao Saulo pela ajuda.
Mais um problema resolvido. Obrigada

Haroldo

  • Expert
  • *****
  • Mensagens: 6276
  • Conhecimento diminui limitações.△TFA△
    • Infinitus Web Gestão Empresarial/Gestão ITIL/Consultoria Scriptcase
Re:[RESOLVIDO]Relatórios com IReport
« Responder #54 Online: Outubro 16, 2015, 12:33:06 pm »
Importante é que resolveu e que percebeu também que seu select estava errado, pois nas colunas do select você estava usando entre {}, como demonstra a citação aqui.
Nem sempre solicito que o membro vá ao webhelp, somente quando percebo que este não entendeu como a macro funciona ou a desconhece.



Tentei isto na grid da subconsulta no Evento onApplicationIni:

sc_select {id_agregado},{nome},{parentesco},{idade},{actprofissional},{telefone},{id_idoso}
   from agregado
   where id_idoso =(select id_idoso
                from agregado
                where id_idoso ="1");

Dá erro:Parse error: syntax error, unexpected '$this' (T_VARIABLE)
Já entendi que está a pedir uma variável. Quem me pode ajudar? Obrigada