[firebase-br] Select retorna campo errado
Adriano dos Santos Fernandes
adrianosf em uol.com.br
Qui Ago 28 15:43:07 -03 2008
Alisson escreveu:
> 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??!
>
Verifique os parênteses... Está caindo do lado direito do OR.
Adriano
Mais detalhes sobre a lista de discussão lista