Amigo, ESTOQUE dentro do select está apenas como alias do campo TPRODUTO.QUANTIDADE mais só por curiosidade eu já tirei o alias fazendo referencia apenas no campo QUANTIDADE e mesmo assim me retorna 0, ficando da seguinte forma:
strSql := 'SELECT TPRODUTO.ID, TPRODUTO.DESCRICAO, TPRODUTO.QUANTIDADE '; strSql := strSql + 'FROM TMOV, TITMOV, TPRODUTO '; strSql := strSql + 'WHERE TMOV.ID = TITMOV.IDMOV '; strSql := strSql + 'AND TITMOV.IDPRODUTO = TPRODUTO.ID '; strSql := strSql + 'AND TPRODUTO.ID = ' + IntToStr(IdProduto) ; With IBQueryEstoque do begin Close; SQL.Clear; SQL.Add(strSql) ; Open; end; EstoqueAtual := IBQueryEstoque. FieldByName( 'QUANTIDADE' ).AsFloat; ----- Mensagem original ---- De: Ricardo LG <linogonzalez@ gmail.com> Para: [EMAIL PROTECTED] os.com.br Enviadas: Terça-feira, 15 de Janeiro de 2008 15:35:36 Assunto: Re: [delphi-br] Dúvida na utilização do IBQuery Desculpe Angelo Dentro do seu select você não tem um campo ESTOQUE apenas a quantidade. Por isso o valor 0. nesse caso acredito que você deveria fazer ou um select sum(Quantidade) as estoque, em outra query. Em 15/01/08, Angelo Louzada <angelolouzada@ yahoo.com. br> escreveu: > > Amigos, estou utilizando Delphi 7 + Interbase 6 e estou com uma dúvida: > > No Interbase quando eu executo o script abaixo me retorna o resultado > correto. > > SELECT TPRODUTO.ID <http://tproduto. id/>, TPRODUTO.DESCRICAO, > TPRODUTO.QUANTIDADE > FROM TMOV, TITMOV, TPRODUTO > WHERE TMOV.ID <http://tmov. id/> = TITMOV.IDMOV > AND TITMOV.IDPRODUTO = TPRODUTO.ID <http://tproduto. id/> > AND TPRODUTO.ID <http://tproduto. id/> = 13 > > Eu preciso acessar o valor do campo tproduto.quantidade no delphi e para > isso estou fazendo da seguinte maneira: > > strSql := 'SELECT TPRODUTO.ID <http://tproduto. id/>, TPRODUTO.DESCRICAO, > TPRODUTO.QUANTIDADE '; > strSql := strSql + 'FROM TMOV, TITMOV, TPRODUTO '; > strSql := strSql + 'WHERE TMOV.ID <http://tmov. id/> = TITMOV.IDMOV '; > strSql := strSql + 'AND TITMOV.IDPRODUTO = TPRODUTO.ID<http://tproduto. id/>'; > strSql := strSql + 'AND TPRODUTO.ID <http://tproduto. id/> = ' + > IntToStr(IdProduto) ; > With IBQueryEstoque do > begin > Close; > SQL.Clear; > SQL.Add(strSql) ; > Open; > end; > > strSql é uma variável do tipo String, IdProduto é uma variável que possui > o ID do produto que selecionei em um grid. > > IdProduto := IBQueryMovimento. FieldByName( 'CODPRODUTO' ).AsInteger; > > Em modo de depuração eu passo o mouse em cima da variável strSql após o > recebimento de todo o sql e certifico que o mesmo recebeu de forma correta o > valor do id do produto ficando exatamente igual ao script que testei no > Interbase. > > A grande questão: Declarei uma variável do tipo Double chamada > EstoqueAtual para receber o valor do campo TPRODUTO.QUANTIDADE da seguinte > forma: > > EstoqueAtual := IBQueryEstoque. FieldByName( 'ESTOQUE' ).AsFloat; > > Só que o valor retornado é sempre 0 e quando rodo o script no Interbase > tenho a absoluta certeza que possuo valor no campo, nesse exemplo era para > obter o valor 78. > > Alguém sabe me dizer aonde estou errando? > > Abraço a todos. > > Angelo Louzada > > Abra sua conta no Yahoo! Mail, o único sem limite de espaço para > armazenamento! > http://br.mail. yahoo.com/ > > [As partes desta mensagem que não continham texto foram removidas] > > > [As partes desta mensagem que não continham texto foram removidas] Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento! http://br.mail. yahoo.com/ [As partes desta mensagem que não continham texto foram removidas] Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento! http://br.mail.yahoo.com/ [As partes desta mensagem que não continham texto foram removidas]