GARANTIR DESCONTO

Fórum Trigger Com tres tabelas #56652

27/07/2006

0

tenho tres tabelas

Tabela materia_Prima Descricao Saldo_Peso


Tabela Produto CodProduto Descricao


Tabela Producao CodProduto Peso_Gasto


Guando estou fazendo uma inserção na Tabela Produção , o Que eu Gastei com O peso deve dar Baixa Na Tabela MatPrima

Mas não estou conseguindo Compilar Uma StoreProcedure Para Isto

estou tentando assim :

AS
DECLARE VARIABLE
DesProduto varchar(50);
begin
   select descricao_produto,codigo_produto from produtos
    where produtos.codigo_produto = NEW.codigo_produto
    INTO :Desproduto;
     update materia_prima set
     materia_prima.saldo=materia_prima.saldo - New.peso_final,
     materia_prima.data=new.data
     where
      materia_prima.descricao = Desproduto;
  end


[b:d21c79d015]Não compila ... Da erro na ultima linha[/b:d21c79d015]
ja tentei também


[b:d21c79d015]materia_prima.Descricao = Produto.Descricao[/b:d21c79d015]

Estou fazendo isto no IbExpert e uso Firebird 1.5.3

a idiea é achar na tabela produtos a descrição do Produto usado na Tabela Produção... De pose da Descrição , fazer um insert na Tabela Materi_Prima e atualiza-la..



Marco Salles

Marco Salles

Responder

Posts

27/07/2006

Marco Salles

eu não sei se fui claro , mas o que eu quero fazer é

quando salvar um novo registro na Tabela Produção , o Que eu ´Gastei´ com O peso devo dar Baixa No Saldo_Peso na Tabela MatPrima

tenho tres tabelas

Citação: Tabela materia_Prima Descricao Saldo_Peso


Citação: Tabela Produto CodProduto Descricao


Citação: Tabela Producao CodProduto Peso_Gasto


Acho que deu né...


Responder

Gostei + 0

27/07/2006

Renato.pavan

[quote:b16cb39a28=´Marco Salles´]tenho tres tabelas

Tabela materia_Prima Descricao Saldo_Peso


Tabela Produto CodProduto Descricao


Tabela Producao CodProduto Peso_Gasto


Guando estou fazendo uma inserção na Tabela Produção , o Que eu Gastei com O peso deve dar Baixa Na Tabela MatPrima

Mas não estou conseguindo Compilar Uma StoreProcedure Para Isto

estou tentando assim :

AS
DECLARE VARIABLE
DesProduto varchar(50);
begin
   select descricao_produto,codigo_produto from produtos
    where produtos.codigo_produto = NEW.codigo_produto
    INTO :Desproduto;
     update materia_prima set
     materia_prima.saldo=materia_prima.saldo - New.peso_final,
     materia_prima.data=new.data
     where
      materia_prima.descricao = Desproduto;
  end


[b:b16cb39a28]Não compila ... Da erro na ultima linha[/b:b16cb39a28]
ja tentei também


[b:b16cb39a28]materia_prima.Descricao = Produto.Descricao[/b:b16cb39a28]

Estou fazendo isto no IbExpert e uso Firebird 1.5.3

a idiea é achar na tabela produtos a descrição do Produto usado na Tabela Produção... De pose da Descrição , fazer um insert na Tabela Materi_Prima e atualiza-la..
[/quote:b16cb39a28]

Colela, simulei suas tabelas e colei sua trigger a unica coisa que faltou foi os ´: dois pontos´ da variavel abaixo codigo correto
AS 
DECLARE VARIABLE 
DesProduto varchar(50); 
begin 
   select descricao_produto,codigo_produto from produtos 
    where produtos.codigo_produto = NEW.codigo_produto 
    INTO :Desproduto; 
     update materia_prima set 
     materia_prima.saldo=materia_prima.saldo - New.peso_final, 
     materia_prima.data=new.data 
     where 
      materia_prima.descricao = :Desproduto; /* faltou os : no Desproduto*/ 
  end


Espero ter ajudado

Renato


Responder

Gostei + 0

27/07/2006

Marco Salles

Espero ter ajudado Renato


obrigado renato pela sua gentileza. Coloquei os dois pontos e agora da um erro

count of column list and variable list do not match. Dynamic SQL Error. SQL error code = -313. count of column list and variable list do not match.


Algue sabe o que signigfica


Responder

Gostei + 0

27/07/2006

Renato.pavan

[quote:3d193903a4=´Marco Salles´]
Espero ter ajudado Renato


obrigado renato pela sua gentileza. Coloquei os dois pontos e agora da um erro

count of column list and variable list do not match. Dynamic SQL Error. SQL error code = -313. count of column list and variable list do not match.


Algue sabe o que signigfica[/quote:3d193903a4]

esqueci de mencionar, no primeiro select deixe apenas a descricao_produto q vai ser a saida pra variavel Desproduto
AS 
DECLARE VARIABLE 
DesProduto varchar(50); 
begin 
   select descricao_produto /* tire essa parte - ,codigo_produto*/ from produtos 
    where produtos.codigo_produto = NEW.codigo_produto 
    INTO :Desproduto; 
     update materia_prima set 
     materia_prima.saldo=materia_prima.saldo - New.peso_final, 
     materia_prima.data=new.data 
     where 
      materia_prima.descricao = :Desproduto; /* faltou os : no Desproduto*/ 
  end



Responder

Gostei + 0

27/07/2006

Marco Salles

Belza amigo .. Compilar compilou.. Na verdade não é nen compilar e sim Commitar.. Commitar Commitou... Porem , não sei o que esta ocorrendo que a logica não esta funcionando

Isto é , não esta dando baixa na Tabela MatPrima :cry: :cry: :cry:

Sera que este conjunto de instruçoes estão certos ????

Do desde cedo com isto , ja estou com os cabelos em pé :cry: :cry:


Responder

Gostei + 0

27/07/2006

Renato.pavan

[quote:7553ebec0c=´Marco Salles´]Belza amigo .. Compilar compilou.. Na verdade não é nen compilar e sim Commitar.. Commitar Commitou... Porem , não sei o que esta ocorrendo que a logica não esta funcionando

Isto é , não esta dando baixa na Tabela MatPrima :cry: :cry: :cry:

Sera que este conjunto de instruçoes estão certos ????

Do desde cedo com isto , ja estou com os cabelos em pé :cry: :cry:[/quote:7553ebec0c]

Amigao posta ai a ddl completa da sua trigger pra eu ver, desta forma é mais facil detectar um possível erro.

Renato


Responder

Gostei + 0

27/07/2006

Marco Salles

la vai :

/
******************************************************************************/ /**** Generated by IBExpert 27/07/2006 16:29:50 ****/ /******************************************************************************/ SET SQL DIALECT 3; SET NAMES WIN1252; SET TERM ^ ; CREATE TRIGGER HISTORICO_FABRICACAO_INSERT FOR HISTORICO_FABRICACAO ACTIVE AFTER INSERT POSITION 0 AS DECLARE VARIABLE DesProduto varchar(50); begin select descricao_produto /* tire essa parte - ,codigo_produto*/ from produtos where produtos.codigo_produto = NEW.codigo_produto INTO :Desproduto; update materia_prima set materia_prima.saldo=materia_prima.saldo - New.peso_final, materia_prima.data=new.data where materia_prima.descricao = :Desproduto; /* faltou os : no Desproduto*/ /* Trigger text */ end ^ SET TERM ; ^



Responder

Gostei + 0

27/07/2006

Renato.pavan

Aparentemente esta tudo certo, não consegui detectar nenhuma falha, o estranho é que o testes q eu fiz com os campos q vc citou funcionou perfeitamente e esta parecido com o seu codigo, qdo digito algo ta tabela produção ele abaixa o saldo da tabela materia prima.
Segue abaixo a ddl completa do exemplo q eu fiz pra analize.
/******************************************************************************/
/****               Generated by IBExpert 28/07/06 16:43:19                ****/
/******************************************************************************/

SET SQL DIALECT 3;

SET NAMES ISO8859_1;


SET TERM ^ ;


CREATE TRIGGER PRODUCAO_AI0 FOR PRODUCAO
ACTIVE AFTER INSERT POSITION 0
AS
DECLARE VARIABLE 
DesProduto varchar(50); 
begin 
   select P.descricao from produto p
    where p.cod_produto = NEW.cod_produto
    INTO :Desproduto; 
     update materia_prima set
     materia_prima.saldo_peso=materia_prima.saldo_peso - New.peso_gasto
     where 
      materia_prima.descricao = :desproduto;
end
^


SET TERM ; ^



Responder

Gostei + 0

27/07/2006

Marco Salles

Renato , obrigado pela força. Mas aqui não estou conseguindo :cry: :cry:

Aparentemente esta tudo certo, não consegui detectar nenhuma falha, o estranho é que o testes q eu fiz com os campos q vc citou funcionou perfeitamente e esta parecido com o seu codigo, qdo digito algo ta tabela produção ele abaixa o saldo da tabela materia prima. Segue abaixo a ddl completa do exemplo q eu fiz pra analize.


[b:09586b5321]e opior que nen no IbExpert , < inserindo pelo IbExpert >, não esta dando certo....... [/b:09586b5321]


Responder

Gostei + 0

27/07/2006

Marco Salles

Renato , obrigado pela força. Mas aqui não estou conseguindo Citação: Aparentemente esta tudo certo, não consegui detectar nenhuma falha, o estranho é que o testes q eu fiz com os campos q vc citou funcionou perfeitamente e esta parecido com o seu codigo, qdo digito algo ta tabela produção ele abaixa o saldo da tabela materia prima. Segue abaixo a ddl completa do exemplo q eu fiz pra analize. e opior que nen no IbExpert , < inserindo pelo IbExpert >, não esta dando certo.......


o Pior que não tem nenhum jeito de testar esta Store procedure , para ver aonde esta o erro :cry: :cry: :cry: Ou tem ???


Responder

Gostei + 0

27/07/2006

Marco Salles

Olhando sua DLL não entendi como voce consegui compila

select P.descricao from produto p não deveria ser assim select P.descricao from p



:?: :?: :?: :?:


Responder

Gostei + 0

28/07/2006

Renato.pavan

[quote:c22afb6b88=´Marco Salles´]Olhando sua DLL não entendi como voce consegui compila

select P.descricao from produto p não deveria ser assim select P.descricao from p



:?: :?: :?: :?:[/quote:c22afb6b88]

Não P é o apelido da tabela produto repare la from Produto P, ai ao invés de referenciar Produto.Descricao uso o apelido P.Descricao.
Faz o seguinte, cria um bd ai com as tabelas envolvidas e alguns dados, manda no meu e-mail, vou tentar montar a trigger nesse bd e te reenvio.
rpinformatica@terra.com.br ou msn renatopavan2002@hotmail.com

Renato.


Responder

Gostei + 0

28/07/2006

Marco Salles

[b:a19d7b5e43]renato , bla cara.[/b:a19d7b5e43]

Ontem a noite fu ipara casa , criei um banco com essas tres tabelas e funfa. Sem problema..
Aqui com tem outras tabelas envolvidas to com este pepino. Como estou no inicio do projeto , resolvi mudar tudo. Estou na estaca zero , e comecei do zero.

Sabe com é , se não seu é pq ainda não chegou a hora..

Muito obrigado pela disposição ,

Ps : to abrindo um tópico novo , se quiser participar sera um prazer

Muito obrigado


Responder

Gostei + 0

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

Aceitar