Relatório ´Complicado´ em QR MasterDetail e uma Query

19/08/2004

Pessoal

Há algum tempo estou com um serio problema pra fazer um relatório...
Gostaria q os amigos, analisassem com alma este ´relatório´ e me dessem alguma luz...

Este relatório é Master Datail com varias tabelas detail... (vejam o select)

O fato é que com uma union, eu consegui organizar tudo direito, mas nao consigo manipular os componentes do Quick report. Estou usando os seguintes componentes:

TQRBAND = NAME = FORMULAS = BANDTYPE = RBDETAIL - vai exibir todos os dados de uma formula (tabela mestre) TQRCHILBAND = NAME = CHILDBAND1 = PARENTBAND = FORMULAS - exibir dados da Substancias, de cada formula TQRCHILBAND = NAME = CHILDBAND2 = PARENTBAND = FORMULAS -
exibir dados do tratamentos, de cada formula
Estou usando uma unica query...

Observem o resultado do select:

IDDESCRICAOVALORIDSUBSTANCIA IDDESCRICAO
1TESTE151NULL
1TESTE152NULL
1TESTE153NULL
1TESTE15NULL1
1TESTE15NULL2
2TESTE2168NULL
2TESTE2169NULL
2TESTE216NULL3
2TESTE216NULL4
2TESTE216NULL5

Então,

é Possível perceber que quando uma substancia está nula, o tratamento contem valor, e vice-versa.
Mas eu nao consigo manipular os componentes do QR!
Eu já usei todos os componentes do QR de todas as formulas possíveis, inclusive já coloquei outros códigos dentro do AfterPrint e BeforePrint de cada componete pra ver se sai algo e nada...
Gostaria q os amigos, analisassem com alma este ´relatório´ e me dessem alguma luz...



Este é o Select

SELECT
  FORMULA.ID,
  FORMULA.DESCRICAO_FORMULA,
  FORMULA.ACAO,
  FORMULA.INDICACAO,
  FORMULA.OBSERVACAO,
  FORMULA.USO,
  VEICULOS.DESCRICAO_VEICULO,
  CAST(´´ AS VARCHAR(60)) AS cTRATAMENTO,
  CAST((SUBSTANCIA.DESCRICAO_SUBSTANCIA || ´ - ´ || SUBSFORM.CONCENTRACAO) AS VARCHAR(60)) AS cSUBSTANCIA

FROM
  VEICULOS
  INNER JOIN FORMULA ON (VEICULOS.ID = FORMULA.COD_VEICULO)
  INNER JOIN SUBSFORM ON (FORMULA.ID = SUBSFORM.COD_FORMULA)
  INNER JOIN SUBSTANCIA ON (SUBSFORM.COD_SUBSTANCIA = SUBSTANCIA.ID)

UNION

SELECT
  FORMULA.ID,
  FORMULA.DESCRICAO_FORMULA,
  FORMULA.ACAO,
  FORMULA.INDICACAO,
  FORMULA.OBSERVACAO,
  FORMULA.USO,
  VEICULOS.DESCRICAO_VEICULO,
  CAST(TRATAMENTO.DESCRICAO_TRATAMENTO AS VARCHAR(60)) AS cTRATAMENTO,
  CAST(´´ AS VARCHAR(60)) AS cSUBSTANCIA
FROM
  VEICULOS
  INNER JOIN FORMULA ON (VEICULOS.ID = FORMULA.COD_VEICULO)
  INNER JOIN TRATFORM ON (FORMULA.ID = TRATFORM.COD_FORMULA)
  INNER JOIN TRATAMENTOESPEC ON (TRATFORM.COD_TRAT_ESPEC = TRATAMENTOESPEC.ID)
  INNER JOIN TRATAMENTO ON (TRATAMENTOESPEC.COD_TRATAMENTO = TRATAMENTO.ID)


Estou usando banco IB... E apenas uma Query porque achei mais fácil assim... :?


Rafaelunp

Respostas

19/08/2004

Afarias

coloque um QRLabel (não DB) na banda Detail e no evendo OnPrint dele coloque um código tipo::

  

  if (Query1.FieldByName(´IDSUBSTANCIA´).IsNull then
    Value := Query1.FieldByName(´IDDESCRICAO´).AsString
  else
    Value := Query1.FieldByName(´IDSUBSTANCIA´).AsString;




T+


Responder Citar