solução p/ gerar relatório consistente....

Delphi

12/11/2004

bom dia a todos,

estou tendo um problema via programação, onde, possuo o código onde carrego minhas query´s para gerar um relatório, o q acontece é q nesse código a condição q está em negrito atinge o primeiro registro selecionado pela query(até ai tudo certo), mas quando ha mais de um registro selecionado(essa situção tem q fazer parte da regra de negócio) a condição se aplica somente ao primeiro, gerando um erro pois a condição define qual instrução sql devo utilizar para obter um total desejado (o erro ocasionaria na variavel dose_pulverizacao, como vcs podem observar)....resumindo, gostaria da opinião para onde eu encaixaria essa condição(visto q no lugar em q está gerará o erro)?

* o sistema está sendo implementado em delphi 7+interbase+QuickReport.

segue um trecho da rotina:

//tabela detalhamento ativ. agrícola
Campos:=´*´;
Tabela:=´PULVERIZACAO PU,ATIVIDADE A,PRODUTO P´;
Complemento:=´ where A.id_produto=P.id_produto and id_atividade=:id_atividade and A.idtipo_atividade=PU.id_pulverizacao´;
FRelatorio_AtividadePulverizacao.IBDetalhada.Close;
FRelatorio_AtividadePulverizacao.IBDetalhada.SQL.Clear;
FRelatorio_AtividadePulverizacao.IBDetalhada.SQL.Add(´select ´+Campos+´ from ´+Tabela+´ ´+Complemento+´´);
FRelatorio_AtividadePulverizacao.IBDetalhada.Open;
//subtotais
[b:e49c634ed1] if FRelatorio_AtividadePulverizacao.DSDetalhada.DataSet[´dose_pulverizacao´]<>´POR HA.´ then[/b:e49c634ed1] begin
//soma1
Campos:=´sum(PU.quant1_pulverizacao*(TA.area_talhao*(PU.vd_pulverizacao*TA.cm_talhao))/PU.[b:e49c634ed1]dose_pulverizacao[/b:e49c634ed1])as soma´;
Tabela:=´ATIVIDADETALHAO T,ATIVIDADE A,PRODUTO P,PULVERIZACAO PU,TALHAO TA´;
Complemento:=´ where A.id_produto=P.id_produto and id_atividade=:id_atividade and T.id_atividade=A.id_atividade and TA.id_talhao=T.id_talhao and id_fazenda=´´´+EIdFazenda.text+´´´´;
Complemento:=Complemento+´ and tipo_atividade=´´´+ETipo.text+´´´ and periodo_atividade=´´´+EPeriodo.text+´´´´;
Complemento:=Complemento+´ and safra_atividade=´´´+ESafra.text+´´´ and operacao_atividade=´´´+EOperacao.text+´´´ and PU.id_pulverizacao=A.idtipo_atividade order by id_talhao´;
FRelatorio_AtividadePulverizacao.IBSoma1.Close;
FRelatorio_AtividadePulverizacao.IBSoma1.SQL.Clear;
FRelatorio_AtividadePulverizacao.IBSoma1.SQL.Add(´select ´+Campos+´ from ´+Tabela+´ ´+Complemento+´´);
FRelatorio_AtividadePulverizacao.IBSoma1.Open;


Maikiperin

Maikiperin

Curtidas 0

Respostas

Maikiperin

Maikiperin

12/11/2004

bom dia a todos, estou tendo um problema via programação, onde, possuo o código onde carrego minhas query´s para gerar um relatório, o q acontece é q nesse código a condição q está em negrito atinge o primeiro registro selecionado pela query(até ai tudo certo), mas quando ha mais de um registro selecionado(essa situção tem q fazer parte da regra de negócio) a condição se aplica somente ao primeiro, gerando um erro pois a condição define qual instrução sql devo utilizar para obter um total desejado (o erro ocasionaria na variavel dose_pulverizacao, como vcs podem observar)....resumindo, gostaria da opinião para onde eu encaixaria essa condição(visto q no lugar em q está gerará o erro)? * o sistema está sendo implementado em delphi 7+interbase+QuickReport. segue um trecho da rotina: //tabela detalhamento ativ. agrícola Campos:=´*´; Tabela:=´PULVERIZACAO PU,ATIVIDADE A,PRODUTO P´; Complemento:=´ where A.id_produto=P.id_produto and id_atividade=:id_atividade and A.idtipo_atividade=PU.id_pulverizacao´; FRelatorio_AtividadePulverizacao.IBDetalhada.Close; FRelatorio_AtividadePulverizacao.IBDetalhada.SQL.Clear; FRelatorio_AtividadePulverizacao.IBDetalhada.SQL.Add(´select ´+Campos+´ from ´+Tabela+´ ´+Complemento+´´); FRelatorio_AtividadePulverizacao.IBDetalhada.Open; //subtotais [b:1cea0206ca] if FRelatorio_AtividadePulverizacao.DSDetalhada.DataSet[´dose_pulverizacao´]<>´POR HA.´ then[/b:1cea0206ca] begin //soma1 Campos:=´sum(PU.quant1_pulverizacao*(TA.area_talhao*(PU.vd_pulverizacao*TA.cm_talhao))/PU.[b:1cea0206ca]dose_pulverizacao[/b:1cea0206ca])as soma´; Tabela:=´ATIVIDADETALHAO T,ATIVIDADE A,PRODUTO P,PULVERIZACAO PU,TALHAO TA´; Complemento:=´ where A.id_produto=P.id_produto and id_atividade=:id_atividade and T.id_atividade=A.id_atividade and TA.id_talhao=T.id_talhao and id_fazenda=´´´+EIdFazenda.text+´´´´; Complemento:=Complemento+´ and tipo_atividade=´´´+ETipo.text+´´´ and periodo_atividade=´´´+EPeriodo.text+´´´´; Complemento:=Complemento+´ and safra_atividade=´´´+ESafra.text+´´´ and operacao_atividade=´´´+EOperacao.text+´´´ and PU.id_pulverizacao=A.idtipo_atividade order by id_talhao´; FRelatorio_AtividadePulverizacao.IBSoma1.Close; FRelatorio_AtividadePulverizacao.IBSoma1.SQL.Clear; FRelatorio_AtividadePulverizacao.IBSoma1.SQL.Add(´select ´+Campos+´ from ´+Tabela+´ ´+Complemento+´´); FRelatorio_AtividadePulverizacao.IBSoma1.Open;


+ uma obs.: essa variavel(dose_pulverizacao) e do tipo string, pois pode receber os seguintes valores:2000,1500,400, por ha.


GOSTEI 0
Maikiperin

Maikiperin

12/11/2004

up !


GOSTEI 0
POSTAR