[firebase-br] Select retorna campo errado
Alisson
alisson em ecosbr.com
Qui Ago 28 15:14:23 -03 2008
Pessoal..tenho uma procedure no banco de dados que realiza o cálculo da depreciação dos bens da empresa.
Cada bem tem um grupo ou seja: Tenho uma tabela GRUPOS_BENS e uma tabela BENS, onde a chave da tabela bens é uma conta da tabela GRUPO_BENS e o codigo do bem.
CREATE TABLE GRUPOS_BENS (
CONTA DOM_CONTA NOT NULL,
CONTA_DEPRECIACAO DOM_CONTA,
CONTA_DESPESA DOM_CONTA,
TAXADEPRE DOM_MONETARIO3,
DESCRICAO DOM_STRING80 COLLATE PT_PT
);
CREATE TABLE BENS (
CONTA DOM_CONTA NOT NULL,
CODIGO DOM_CODIGO_BEM NOT NULL,
DESCRICAO DOM_STRING80 COLLATE PT_PT,
DESCRICAO_DETALHADA DOM_BLOB,
NOTAFISCAL DOM_STRING8 COLLATE PT_PT,
FORNECEDOR DOM_STRING30 COLLATE PT_PT,
SETOR DOM_INTEGER,
DESCRICAOSETOR DOM_STRING50 COLLATE PT_PT,
DTAQUISICAO DOM_DATA,
VRAQUISICAO DOM_MONETARIO2,
TAXADEPREC DOM_PERCENTUAL1,
CPAQUISICAO DOM_CONTA,
DATABAIXA DOM_DATA,
DEPREAMORT DOM_TIPO COLLATE PT_PT,
FOTO_BEN BLOB SUB_TYPE 0 SEGMENT SIZE 80,
DATA DOM_DATAHOJE,
VALOR_ATU DOM_MONETARIO2,
DEPRE_ACUM DOM_MONETARIO2
);
em certo momento da procedure faço um for select na tabela de grupos e dentro deste outro FOR SELECT na tabela de bens que retorna somente os bens do que fazem parte do grupo.
/* Seleciona Grupos Para cálculo*/
for select gb.conta,gb.conta_depreciacao,gb.conta_despesa from grupos_bens gb
order by gb.conta into :CONTA_BEM,:CONTA_DEPRE,:CONTA_DESP do begin
Depre_Grupo=0;
/* Seleciona bens do grupo Para cálculo*/
for Select b.codigo,b.taxadeprec,b.depreamort from bens b
where (b.databaixa is null) and (b.conta=:CONTA_BEM)
and (( extract (year from b.dtaquisicao))<=:Ano)
or (( ( extract (month from b.dtaquisicao))<=:mes) and (( extract (year from b.dtaquisicao))=:Ano ))
order by b.codigo into :aux2,:TX,:tipo do
acontece que em alguns casos o for select dos bens retorna bens de um outro grupo.
por exemplo: a variável CONTA_BEM é '13201001' e ele traz 3 bens que pertencem a outro grupo, que no caso em questão é '13202003'.
alguem sabe por que isso está acontecendo??!
obrigado desde já!
Mais detalhes sobre a lista de discussão lista