Array
(
)

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

Rafaelunp
   - 19 ago 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:


Citação:
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:

#Código

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

#Código
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... :?


Afarias
   - 19 ago 2004

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

#Código



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




T+