none
Inserir Dados em Duas Tabelas ao mesmo tempo! RRS feed

  • Pergunta

  • Boa Noite Pessoal!

    Estou trabalhano no meu projecto final de curso, e estou desenvolvendo um software web para controle financeiro de uma empresa!

    Eu quero que assim que inserir um registo na TabelaEntrada (IdEntrada, IdEmpresa, Valor, Comentário e Data)  o conteudo do campo VALOR possa ser acrescentado no campo Saldo da TabelaConta (NumeroConta, IdEmpresa, Saldo, TipoMoeda)

    Ou seja quero que ele após a incerção pegue o IdEmpresa que ele efectuou a entrada e aumente esse valor no saldo da mesma empresa no campo Saldo!

    segunda-feira, 6 de março de 2017 22:45

Respostas

Todas as Respostas

  • Olá OliverMaker

    Você so precisa rodar a 2º query realizando o UPDATE na tabela (TabelaConta)



    Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.


    Daniel Ribeiro Arrais
    Consultor Sênior
    Site: www.danielarrais.com.br
    Linkedin: http://www.linkedin.com/in/danielarrais
    E-mail: arraishapkido@gmail.com
    Skype: dani.arrais

    terça-feira, 7 de março de 2017 11:34
  • Bom dia,

    Você pode fazer com no exemplo abaixo dentro de uma transação para que qualquer erro gere o roolback nas duas transações para evitar inconsistência das informações.

    BEGIN TRAN
    BEGIN  TRY
    INSERT INTO TabelaEntrada (IdEntrada, IdEmpresa, Valor, Comentário,Data) VALUES          (1,1,50,'TESTE',GETDATE());
    UPDATE TabelaConta  SET SALDO = SALDO+Valor
    END TRY
    BEGIN CATCH
    RAISERROR('ERRO AO CADASTRAR', 14, 1)
    IF @@TRANCOUNT >0
    BEGIN
    ROLLBACK
    END
    END CATCH
    IF @@TRANCOUNT > 0 
    COMMIT TRANSACTION

    terça-feira, 7 de março de 2017 11:39
  • Deleted
    terça-feira, 7 de março de 2017 11:39
  • OliverMaker,

    Este tipo de procedimento vai ser sempre realizado? Ou é somente uma necessidade de momento?

    Se for algo que sempre vai ser realizado, talvez podemos pensar no uso de triggers!!!


    Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quinta-feira, 9 de março de 2017 12:20
  • Eu estava pensando no mesmo

    OliverMaker

    terça-feira, 28 de março de 2017 21:14
  • Tem haver com o controle financeiro de entradas e saidas de valores... apos a insercção de um valor por exemploe de entrada, vendas do dia por exemplo.

    Esse valor deve ser acrescentado no saldo actual, obviamente uma soma, se fosse saida uma subtração no saldo!


    OliverMaker

    terça-feira, 28 de março de 2017 21:16
  • Tem haver com o controle financeiro de entradas e saidas de valores... apos a insercção de um valor por exemploe de entrada, vendas do dia por exemplo.

    Esse valor deve ser acrescentado no saldo actual, obviamente uma soma, se fosse saida uma subtração no saldo!


    OliverMaker

    terça-feira, 28 de março de 2017 21:16
  • Oliver,

    Veja se este exemplo de trigger pode te ajudar:

    CREATE  Trigger T_Atualizar_Saldos
    On EstFisic
    After Insert, Update
    As
    
    Set NoCount Off
    
    Declare @TipoMov Char(1),
               @Codigo Char(10),
               @Quantidade Float(8),
               @Data_Mov DateTime
    
    Select @TipoMov=Status, @Quantidade=Quantidade, @Codigo=Codigo, @Data_Mov=Data From Inserted
    
    Begin
    
      If @TipoMov = 'E'
       Begin  
        Update Produtos 
        Set Saldo= Saldo+@Quantidade, Data=@Data_Mov
        Where Codigo = @Codigo 
       End
      
      If @TipoMov='S'
       Begin  
        Update Produtos 
        Set Saldo= Saldo-@Quantidade, Data=@Data_Mov
        Where Codigo = @Codigo 
       End
    End


    Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    domingo, 2 de abril de 2017 00:22