Fórum Não consigo atualizar meu banco... #255249

20/10/2004

0

Ola pessoal.
Estou com um probleminha.
Uso o componente IBTable para acessar minha tabela, criei um TRIGGER no meu banco de dados para que dispare quando uma nova quantidade for inserida no estoque, este é atualizado pelo COD_Produto.
quando peço Clicko no botão ´confirmar operação´ não atualiza na hora o meu registro.
Coloquei logo após o post um ´IBTransation.Commit´, mas ai ele fecha todas as minha tabelas e tenho que sair do programa.
Alguém pode me ajudar com mais esta.
Peninha.


Peninha

Peninha

Responder

Posts

20/10/2004

Gandalf.nho

Bem, sempre que se dá um COMMIT as tabelas associadas a transação são sempre fechadas. Para evitar isso, só dando um CommitRetainning. Outra sugestão é não usar Table que é totalmente desaconselhável numa base de dados C/S com o IB/FB. Use o IBDataSet ou a dupla IBQuery + IBUpdateSQL.


Responder

Gostei + 0

21/10/2004

Peninha

Ola Pessoal.
Bom segui o seu exemplo e passei a usar o ´IBDATASET´, pois estava usando o ´IBTABLE´. Mas agora o TRIGGER que atualizava minha minha tabela de estoque via entrada_Estoque não esta funcionando mais.
Não conheço muito bem o ´IBDATASET´, será que estou fazendo alguma coisa errada?
peninha..


Responder

Gostei + 0

21/10/2004

Gandalf.nho

Você setou corretamente as propriedades SQL associadas com o IBDataSet (DeleteSQL, InsertSQL, ModifySQL e RefreshSQL)? Coloque o código da trigger para poder dar uma olhada.


Responder

Gostei + 0

21/10/2004

Peninha

Bom, este é o TIGGER:
SET TERM ^;
CREATE TRIGGER ATUALIZA_ESTOQUE FOR TAB_ENTRAPROD
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  UPDATE TAB_ESTOQUE
   SET QUANTIDADE =  QUANTIDADE + NEW.QUANTIDADE_ENTRA
   WHERE COD_PRODUTO = NEW.COD_PRODUTO;
END ^
SET TERM ; ^

E estas são as propriedades SQL do IBDataset.
Modify:
update TAB_ENTRAPROD

set
  NOVA_ENTRADA = :NOVA_ENTRADA
where
  NOVA_ENTRADA = :OLD_NOVA_ENTRADA
Insert:
insert into TAB_ENTRAPROD
  (NOVA_ENTRADA)
values
  (:NOVA_ENTRADA)
DElete:
delete from TAB_ENTRAPROD
where
  NOVA_ENTRADA = :OLD_NOVA_ENTRADA
Refresh:
Select 
  NOVA_ENTRADA,
  COD_PRODUTO,
  DESCRICAO,
  COD_FORNECE,
  NOME_FORNECE,
  QUANTIDADE_ENTRADA,
  NUMERO_NOTA,
  VALOR_NOTA,
  VALOR_UNIT,
  PERC_LUCRO,
  PERC_ICMS,
  PREC_VENDA,
  RESPONSAVEL,
  OBS,
  GRUPO,
  UNIDADE
from TAB_ENTRAPROD 
where
  NOVA_ENTRADA = :NOVA_ENTRADA


Quanto a tabela de Estoque, as propriedades do componente IBdataset estão todos setados para o campo cod_Produto.
Peninha.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar