[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