Usuário com melhor resposta
query

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á!
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!
- Sugerido como Resposta Fabrício Tonetto Londero terça-feira, 7 de junho de 2011 20:33
- Marcado como Resposta Harley AraujoModerator quarta-feira, 8 de junho de 2011 10:47
-
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
- Sugerido como Resposta Fabrício Tonetto Londero terça-feira, 7 de junho de 2011 20:33
- Marcado como Resposta Harley AraujoModerator quarta-feira, 8 de junho de 2011 10:47
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!
- Sugerido como Resposta Fabrício Tonetto Londero terça-feira, 7 de junho de 2011 20:33
- Marcado como Resposta Harley AraujoModerator quarta-feira, 8 de junho de 2011 10:47
-
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
- Sugerido como Resposta Fabrício Tonetto Londero terça-feira, 7 de junho de 2011 20:33
- Marcado como Resposta Harley AraujoModerator quarta-feira, 8 de junho de 2011 10:47
-