none
Ajuda em BD em Access- como criar query para atualizar e dar baixa em estoque 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 16:58

Todas as Respostas

  • Quando voce fazer a saida, usa o codigo da idPeca e cria um novo select que vai apagar na tabela Pecas baseado no codigo da peca na tabela saida.

     

    Na tabela Saida tens um codigo assim:

    Select From tabelaSaida Where idPeca = @idPeca,

    comando.parametro.addvaluewith("@idPeca", Textbox1.text)

    ele vai mostar a peca comprada ou saida.

    bala bala bala

     

    Delete from tabela Pecas where idPecas=@idpecas;---aqui ele vai receber o codigo que vem da tabela Saida

    comando.parametro.addvaluewith("@idPeca", Textbox1.text)


    One word frees us of all the weight and pain of life: that word is love.
    segunda-feira, 6 de junho de 2011 21:31
    Moderador
  • Amigo obrigado pela ajuda,

    Estou tentando por este caminho, até que consegui, só que pela query e parametros que usei( e foi o que funcionou) só está retirando uma unidade de cada vez mesmo que eu coloque mais na hora que salvo e vou olha a outra tabela deu baixa em somente uma.

    A query que usei foi:

    Nome TiraPeças

    UPDATE       Peça
    SET                Quantidade = Quantidade - 1
    WHERE        (idPeça = vidPeça)

    Os parametros usados foram:

    Member 1

    DbType=Int32

    ParameterName=vIdPeça

    Member1

    DbType=Int32

    ParameterName=vQuantidade

    e no meu Form ficou assim:

    this.Validate();
    this.saída_de_PeçasBindingSource.EndEdit();
    this.tableAdapterManager.UpdateAll(this.bDsystemInfoDataSet);
    int nidPeça = Convert.ToInt32(this.idPeçaTextBox.Text);
    int nQuantidade = Convert.ToInt32(this.quantidadeTextBox.Text);
    this.peçaTableAdapter.TiraPeça(nidPeça, nQuantidade);
    MessageBox.Show("Saída de Peça Registrada com Sucesso", "Sucesso", MessageBoxButtons.OK, MessageBoxIcon.Information);
    this.saída_de_PeçasBindingSource.MoveLast();

     

    Tentei criar um outro parametro, pois no UPDATE que criei coloquei o parametro (Quantidade - 1), porem quano altero este valor não funciona.

    Onde estou errando?

    Alguém pode ajudar



    quarta-feira, 8 de junho de 2011 00:13
  • Franklin, você adicionou este parametro na sua query também?

     

    UPDATE       Peça
    SET                Quantidade = Quantidade - vQuantidade
    WHERE        (idPeça = vidPeça)

     

     


    Abraço

    Estevam

    **** Se a reposta foi útil, então não esqueça de marca-lá. ***
    quarta-feira, 8 de junho de 2011 16:02
  • Estevam, bom dia. usei este parametro, e retorna uma mensgem de erro já na hora de executar a query

    error source:Microsoft Jet database engine

    error message:nenhum valor foi fornecido para um ou mais parametros necessarios

    • Sugerido como Resposta Luiz Estevam quinta-feira, 9 de junho de 2011 17:27
    • Não Sugerido como Resposta Luiz Estevam quinta-feira, 9 de junho de 2011 17:27
    quinta-feira, 9 de junho de 2011 12:59
  • Franklin, passe seu código atual com o insert e a inclusão dos parametros para verificarmos.

     


    Abraço

    Estevam
    Siga luizestevamb on Twitter

    **** Se a reposta foi útil, então não esqueça de marca-lá. ***
    quinta-feira, 9 de junho de 2011 17:28
  • O Form que criei para tentar resolver está questão está assim:

     

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;

    namespace TesteBd
    {
        public partial class frmCadSaída : Form
        {
            public frmCadSaída()
            {
                InitializeComponent();
            }

            private void saída_de_PeçasBindingNavigatorSaveItem_Click(object sender, EventArgs e)
            {
                this.Validate();
                this.saída_de_PeçasBindingSource.EndEdit();
                this.tableAdapterManager.UpdateAll(this.bDsystemInfoDataSet);
                int nidPeça = Convert.ToInt32(this.idPeçaTextBox.Text);
                this.peçaTableAdapter.TiraPeça(nidPeça);
                MessageBox.Show("Saída de Peça Registrada com Sucesso", "Sucesso", MessageBoxButtons.OK, MessageBoxIcon.Information);
                this.saída_de_PeçasBindingSource.MoveLast();

            }

            private void frmCadSaída_Load(object sender, EventArgs e)
            {
                // TODO: This line of code loads data into the 'bDsystemInfoDataSet.Peça' table. You can move, or remove it, as needed.
                this.peçaTableAdapter.Fill(this.bDsystemInfoDataSet.Peça);
                // TODO: This line of code loads data into the 'bDsystemInfoDataSet.Saída_de_Peças' table. You can move, or remove it, as needed.
                this.saída_de_PeçasTableAdapter.Fill(this.bDsystemInfoDataSet.Saída_de_Peças);

            }

            private void bindingNavigatorDeleteItem_Click(object sender, EventArgs e)
            {

                if (MessageBox.Show("Deseja excluir o registro?", "Questionamento", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    this.Validate();
                    //this.peçaBindingSource.EndEdit();
                    this.tableAdapterManager.UpdateAll(this.bDsystemInfoDataSet);
                    MessageBox.Show("Registro Excluido Com Sucesso", "Sucesso", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    MessageBox.Show("Operação Cancelada", "Cancelada", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    //this.peçaTableAdapter.Fill(this.bDsystemInfoDataSet.Peça);
                }
            }

            private void button1_Click(object sender, EventArgs e)
            {
                this.Dispose();
            }
        }
    }

     

     

     

    E a configuração que está funcionando na query

     

    UPDATE       Peça
    SET                Quantidade = Quantidade - 1
    WHERE        (idPeça = vidPeça)

     

    Só que está exclui uma unidade só( por causa do parametro -1)

     

    porem qndo tento colocar uma váriavel

    UPDATE       Peça
    SET                Quantidade = Quantidade - vQuantidade
    WHERE        (idPeça = vidPeça)

    não funciona....

    só não sei onde estou errando..

    caso queira eu passo por e-mail a pasta do sistema, este está pequeno, pois como não estavaq resolvendo criei só para descobrir o erro ao invés de ficar fuçando no sistema que estou desenvolvendo.

     

    Abrigado por tentar me ajudar..

    abraço

    quinta-feira, 9 de junho de 2011 17:53
  • Franklin, no seu código não veio esta parte com o SQL e adição de parametros, porém pelo erro, se você adicionou o parametro na query você deve adicionar o parametro no command, envia a parte do código que tem o select mais a adição de parametros.

     


    Abraço

    Estevam
    Siga luizestevamb on Twitter

    **** Se a reposta foi útil, então não esqueça de marca-lá. ***
    sexta-feira, 10 de junho de 2011 14:03
  • http://social.msdn.microsoft.com/Forums/pt-BR/vscsharppt/thread/8f0a9717-8e5d-420c-a0aa-ade1078d758e
    One word frees us of all the weight and pain of life: that word is love.
    sexta-feira, 10 de junho de 2011 14:10
    Moderador
  • O código é o que está acima, os parametros  que estou adicionando na query que criei na tabela peça são dois um para, eu só adicionei o parametro na tabela Peças, e não adicionei nehum na tabela Saída de Peças

     

    o primeiro está assim tipo de dados: DbType int32

    ParameterName:vIdPeça

    o outro está assim: DbType int32

    ParameterName:vQuantidade

    E o nome da query está: TiraPeça

    E no command do form está assim:

    this.Validate();
    this.saída_de_PeçasBindingSource.EndEdit();
    this.tableAdapterManager.UpdateAll(this.bDsystemInfoDataSet);
    int nidPeça = Convert.ToInt32(this.idPeçaTextBox.Text);
    int nQuantidade = Convert.ToInt32(this.quantidadeTextBox.Text);
    this.peçaTableAdapter.TiraPeça(nidPeça,nQuantidade);
    MessageBox.Show("Saída de Peça Registrada com Sucesso", "Sucesso", MessageBoxButtons.OK, MessageBoxIcon.Information);
    this.saída_de_PeçasBindingSource.MoveLast();

    segunda-feira, 13 de junho de 2011 14:27