[firebase-br] Duvida Delphi x Firebird

Escovador de Bits escovadordebits em gmail.com
Ter Fev 3 11:02:54 -03 2009


Bom dia Rodrigo.

Grande Rodrigo, no DBGrid só aparecem os registros retornados pelo 
respectivo DateSet, que em 99% dos casos foi gerado a partir de um SELECT.

Para fazer essa funcionalidade que você necessita, não seria no DBGrid.

Você teria duas alternativas:

1 - Quando registrar um novo item vendido, copiar o VLPRODUTO da tabela 
PRODUTOS no momento da inclusão na tabela ITENS, ou seja, algo desse tipo:

INSERT INTO ITENS I (NRVENDA, NRITEM, CDPRODUTO, QTVENDA, VLPRODUTO)
VALUES(Número-da-venda, Número-do-item, Código-do-produto, 
Quantidade-vendida, (SELECT P.VLPRODUTO FROM PRODUTOS P WHERE 
P.CDPRODUTO = I.CDPRODUTO));

2 - Se você não está gerando os comandos SQLs dinamicamente, e está 
apenas utilizando os próprios métodos do DataSet de itens para incluir o 
novo registro de item vendido, então você poderia criar uma TRIGGER na 
tabela ITENS no momento BEFORE INSERT para fazer esse SELECT na tabela 
PRODUTOS, pelo código do produto, e copiando o valor atual do produto no 
respectivo campo VLPRODUTO da tabela ITENS, ou seja, independente do 
valor que você informe no campo VLPRODUTO da tabela ITENS, na inclusão, 
essa trigger colocaria o valor atual do produto nesse campo.

Esse código abaixo é apenas um exemplo de como seria essa trigger:

SET TERM ^ ;

CREATE OR REPLACE TRIGGER TRG_ITENS_BI FOR ITENS BEFORE INSERT AS
BEGIN
  SELECT VLPRODUTO
  FROM PRODUTOS
  WHERE CDPRODUTO = NEW.CDPRODUTO
  INTO NEW.VLPRODUTO;
END ^

SET TERM ; ^

Espero ter ajudado mais que atrapalhado.

Rodrigo Beraldo Modica escreveu:
> Seguinte
>
>
> Tenho 2 tabelas Produtos(CDPRODUTO, DCPRODUTO, VLPRODUTO) e Itens(NRVENDA,
> NRITEM, CDPRODUTO, QTVENDA, VLPRODUTO) , quando registro a venda de
> determinado Item como faço para que o dbgrid puxe o VLPRODUTO da tabela
> produto e grave na tabela ITENS.
> Consegui fazer visualizar, mas não esta gravando no BD
>
> Tô usando Delphi com Firebird
> ______________________________________________
> 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
>
>   




Mais detalhes sobre a lista de discussão lista