[firebase-br] RES: Select retorna campo errado
Alisson
alisson em ecosbr.com
Sex Ago 29 11:36:08 -03 2008
Era isso mesmo pessoal.. muito obrigado!
Incrível como eu não consegi perceber isso antes.
Obrigado!
----- Original Message -----
From: "Marco Antonio" <marcobolacha em vicoldobrasil.com.br>
To: "'FireBase'" <lista em firebase.com.br>
Sent: Thursday, August 28, 2008 6:54 PM
Subject: [firebase-br] RES: Select retorna campo errado
Repare que ele so esta filtranto o CONTA_BEM acima do traço.
Ele esta fazendo duas comparações e aceitando (OR) qualquer condicao. A de
baixo ou a de cima do traço atende.
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 ))
where (b.databaixa is null) and (b.conta=:CONTA_BEM)
and ( /* este e */
(( extract (year from b.dtaquisicao))<=:Ano)
or (( ( extract (month from b.dtaquisicao))<=:mes) and (( extract
(year from b.dtaquisicao))=:Ano ))
) /*este */ une qualquer uma das opcoes (OR) com o CONTA_BEM
Marco Antonio
Gerência Informática
( (35) 3821.5009
e-mail: marco.castro em vicoldobrasil.com.br
P Antes de imprimir pense em sua responsabilidade e compromisso com o MEIO
AMBIENTE
-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Adriano dos Santos Fernandes
Enviada em: quinta-feira, 28 de agosto de 2008 15:43
Para: lista em firebase.com.br
Assunto: Re: [firebase-br] Select retorna campo errado
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
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use:
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use:
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa
--
No virus found in this incoming message.
Checked by AVG.
Version: 7.5.524 / Virus Database: 270.6.13/1641 - Release Date: 29/08/2008
07:07
Mais detalhes sobre a lista de discussão lista