none
query RRS feed

  • Pergunta

  • Estou desenvolvendo um sistema de estoque de informática, já criei os formularios tabelas, etc.

    Estou tendo problemas quanto a criação de uma query que consiga dar baixa/atualizando, vou exemplificar:

    Tenho uma tabela Peças com as seguintes colunas idPeça,Nome. Marca,Descrição,Quantidade; e uma outra Saída de Peças com as seguintes colunas IdSaída,IdFuncionário,Setor,Maquina,Datasaida,Peça,IdPeça,Quantidade;

    Quero fazer que quando uma peça sair, atravez da tabela Saída de Peças, dê baixa automaticamente na tabela Peças, só que não consegui criar este processo, alguém pode me ajudar?

    Obs: o meu Bd foi criado Pelo Access

    Estou criando o sistema pelo Visual Studio 2010

    Agradeço desde já!



    segunda-feira, 6 de junho de 2011 11:41

Respostas

  • Olá

     

    Bah cara, não fosse o Bando de Dados Acess dava pra criar uma trigger, o que você pode fazer é executar uma segunda query, lembre-se de usar transação.

    http://office.microsoft.com/pt-pt/access-help/instrucao-transaction-HA001231516.aspx

     

    Espero ter ajudado!

    segunda-feira, 6 de junho de 2011 12:11
  • Aqui tem um exemplo de transaction em C#

     

    //Fabrício Tonetto Londero
    //fabriciotlondero@hotmail.com
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Data;
    using System.Data.OleDb;
    
    
    public class Gravacao
    {
    
      public int codcliente { get; set; }
      public string clicontato { get; set; }
      public int contato { get; set; }
      public int codtecnico { get; set; }
      public int codmodulo { get; set; }
      public string texto { get; set; }
      public int empresa { get; set; }
      public string data { get; set; }
    
      public void Gravar()
      {
    
        empresa = 15;
        data = DateTime.Now.ToString();
    
        OleDbTransaction transac = null;
    
        OleDbConnection con = null;
    
        Banco bd = new Banco();
        OleDbCommand command = new OleDbCommand();
        con = bd.Coneccao();
        transac = con.BeginTransaction();
    
        command.Connection = con;
        command.Transaction = transac;
    
        command.CommandType = CommandType.Text;
        command.CommandText = "insert into sistemainterno(empresa, codcliente, contato, clicontato, codtecnico, codmodulo, texto, datainclusao) values (?,?,?,?,?,?,?,?)";
    
        command.Parameters.Add("@empresa", OleDbType.Integer);
        command.Parameters.Add("@codcliente", OleDbType.Integer);
        command.Parameters.Add("@contato", OleDbType.Integer);
        command.Parameters.Add("@clicontato", OleDbType.VarChar);
        command.Parameters.Add("@codtecnico", OleDbType.Integer);
        command.Parameters.Add("@codmodulo", OleDbType.Integer);
        command.Parameters.Add("@texto", OleDbType.VarChar);
        command.Parameters.Add("@data", OleDbType.VarChar);
    
        command.Parameters["@empresa"].Value = empresa;
        command.Parameters["@codcliente"].Value = codcliente;
        command.Parameters["@contato"].Value = contato;
        command.Parameters["@clicontato"].Value = clicontato;
        command.Parameters["@codtecnico"].Value = codtecnico;
        command.Parameters["@codmodulo"].Value = codmodulo;
        command.Parameters["@texto"].Value = texto;
        command.Parameters["@data"].Value = data;
    
    
        //command.CommandText = sql;
        try
        {
          command.ExecuteNonQuery();
          transac.Commit();
        }
        catch (Exception ex)
        {
          transac.Rollback();
          throw;
        }
        finally
        {
          bd.FecharBanco(command.Connection);
        }
      }
    }
    

    O banco usado nesse exemplo foi o Sybase, mas a conexão também é OleDb, deve funcionar no Acess também.

     

    Abraço

    segunda-feira, 6 de junho de 2011 12:21

Todas as Respostas

  • Olá

     

    Bah cara, não fosse o Bando de Dados Acess dava pra criar uma trigger, o que você pode fazer é executar uma segunda query, lembre-se de usar transação.

    http://office.microsoft.com/pt-pt/access-help/instrucao-transaction-HA001231516.aspx

     

    Espero ter ajudado!

    segunda-feira, 6 de junho de 2011 12:11
  • Aqui tem um exemplo de transaction em C#

     

    //Fabrício Tonetto Londero
    //fabriciotlondero@hotmail.com
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Data;
    using System.Data.OleDb;
    
    
    public class Gravacao
    {
    
      public int codcliente { get; set; }
      public string clicontato { get; set; }
      public int contato { get; set; }
      public int codtecnico { get; set; }
      public int codmodulo { get; set; }
      public string texto { get; set; }
      public int empresa { get; set; }
      public string data { get; set; }
    
      public void Gravar()
      {
    
        empresa = 15;
        data = DateTime.Now.ToString();
    
        OleDbTransaction transac = null;
    
        OleDbConnection con = null;
    
        Banco bd = new Banco();
        OleDbCommand command = new OleDbCommand();
        con = bd.Coneccao();
        transac = con.BeginTransaction();
    
        command.Connection = con;
        command.Transaction = transac;
    
        command.CommandType = CommandType.Text;
        command.CommandText = "insert into sistemainterno(empresa, codcliente, contato, clicontato, codtecnico, codmodulo, texto, datainclusao) values (?,?,?,?,?,?,?,?)";
    
        command.Parameters.Add("@empresa", OleDbType.Integer);
        command.Parameters.Add("@codcliente", OleDbType.Integer);
        command.Parameters.Add("@contato", OleDbType.Integer);
        command.Parameters.Add("@clicontato", OleDbType.VarChar);
        command.Parameters.Add("@codtecnico", OleDbType.Integer);
        command.Parameters.Add("@codmodulo", OleDbType.Integer);
        command.Parameters.Add("@texto", OleDbType.VarChar);
        command.Parameters.Add("@data", OleDbType.VarChar);
    
        command.Parameters["@empresa"].Value = empresa;
        command.Parameters["@codcliente"].Value = codcliente;
        command.Parameters["@contato"].Value = contato;
        command.Parameters["@clicontato"].Value = clicontato;
        command.Parameters["@codtecnico"].Value = codtecnico;
        command.Parameters["@codmodulo"].Value = codmodulo;
        command.Parameters["@texto"].Value = texto;
        command.Parameters["@data"].Value = data;
    
    
        //command.CommandText = sql;
        try
        {
          command.ExecuteNonQuery();
          transac.Commit();
        }
        catch (Exception ex)
        {
          transac.Rollback();
          throw;
        }
        finally
        {
          bd.FecharBanco(command.Connection);
        }
      }
    }
    

    O banco usado nesse exemplo foi o Sybase, mas a conexão também é OleDb, deve funcionar no Acess também.

     

    Abraço

    segunda-feira, 6 de junho de 2011 12:21
  • Amigo, vou tentar,

    por hora obrigado.

    Depois aviso se deu certo

    segunda-feira, 6 de junho de 2011 14:54