none
Sistema Locadora - Estoque de Filmes

    Question

  • Bom dia.

     

    Estou com uma dúvida, eu possuo uma datagrid que pega os id's e os nomes dos filmes em um formulário de locação.

     

    Porém eu necessito que a informação do id do filme só vá para a textbox se por ventura a quantidade daquele filme for >= 1.

     

    Eu faço isso com um if no C#, ou com algum parâmetro do SQL?

     

    Se poderem me dar uma luz me citando um exemplo eu ficaria bastante grato.

     

    Desde já agradeço.

    Wednesday, January 25, 2012 1:20 PM

Answers

  • Só passei pra avisar que consegui corrigir o erro, e que agradeço a quem me ajudou.

     

    E aqui ta o código pra quem tiver interesse.

     

            private void btnGravar_Click(object sender, EventArgs e)
            {
                string quantidade;
                quantidade = dgvRegistros3.Rows[dgvRegistros3.CurrentRow.Index].Cells["quantidade"].Value.ToString();
                if (int.Parse(quantidade) >= 1)
                {
                    Consultar();
                    banco.incluirReserva(int.Parse(txtCodigo_Filme.Text), int.Parse(txtCodigo_Cliente.Text), DateTime.Parse(txtDt_Rerva.Text));
                    MessageBox.Show("Reserva adicionada com sucesso", "Aviso");
                    cone = new MySqlConnection("server=localhost;user id=root;database=db_locadora;Allow zero Datetime=true");
                    cone.Open();
                    comando = new MySqlCommand("UPDATE filmes SET quantidade=- 1 WHERE id=" + int.Parse(txtCodigo_Filme.Text), cone);
                    comando.ExecuteNonQuery();
                    Consultar();
                }
                else
                {
                    MessageBox.Show("O Filme já está locado", "Atenção");
                }
            }

    Thursday, January 26, 2012 2:00 AM

All replies

  • Não sei bem se entendi, mas acho q se fizer um if verificando se a célula do datagrid tem o valor minimo antes de atribuir ao textbox....
    "A mente que se abre para uma nova idéia, jamais voltará a seu tamanho original".
    Wednesday, January 25, 2012 2:17 PM
  • Tipo o que eu quero é que quando o usuário clique na célula correspondente ao filme que ele deseja adicionar ao textbox, faça uma checagem se o filme realmente está em estoque, ou seja, se a quantidade for >= 1.

    Wednesday, January 25, 2012 9:21 PM
  • Kélvyn , faz assim , tem 1 tabela ou coluna para o estoque né? , no caso faça ele puxar a tabela/coluna , de acordo com o filme selecionado. , faça ele por em 1 string , e depois crie 1 if se for >= ele executa a ação
    Wednesday, January 25, 2012 9:40 PM
  • Você vai exibir o filme para o usuário mesmo se ele não estiver em estoque ?

    Caso não Faça no Where do seu SQL Estoque > 0;

    Ex:

    Select * from Filmes where Qtd_estoque > 0;

    Caso não, traga para seu datagrid a coluna estoque e quando o usuário clicar no seu grid teste se a coluna estoque está maior que zero

     if (e.CommandName == "InserirFilme")
            {
                try
                {
                    int qtdEstoque = Convert.ToInt32(datagrid.DataKeys[Convert.ToInt32(e.CommandArgument)]["EstoqueFilme"]);

                    if (qtdEstoque != 0)

    {

    Exibe uma mensagem que não é possivel, locar o filme

    }

     


                }
                catch (Exception)
                {
                    throw;
                }
            }

    Wednesday, January 25, 2012 9:50 PM
  • Kélvyn , faz assim , tem 1 tabela ou coluna para o estoque né? , no caso faça ele puxar a tabela/coluna , de acordo com o filme selecionado. , faça ele por em 1 string , e depois crie 1 if se for >= ele executa a ação

    Obrigado cara, consegui fazer para que o usuário não consiga adicionar o filme caso ele não esteja no estoque.

     

    Porém agora eu quero fazer com que ao usuário realizar uma locação, o filme seja subtraído do estoque, ou seja, quantidade = quantidade - 1, o código está o seguinte, porém eu não consigo fazer ele funcionar, ele adiciona normal, só que a quantidade continua a mesma.

            private void btnGravar_Click(object sender, EventArgs e)
            {
                txtCodigo_Filme.Text = dgvRegistros3.Rows[dgvRegistros3.CurrentRow.Index].Cells["quantidade"].Value.ToString();
                if (int.Parse(txtCodigo_Filme.Text) >= 1)
                {
                    Consultar();
                    banco.incluirReserva(int.Parse(txtCodigo_Filme.Text), int.Parse(txtCodigo_Cliente.Text), DateTime.Parse(txtDt_Rerva.Text));
                    MessageBox.Show("Reserva adicionada com sucesso", "Aviso");
                    MySqlCommand comando = new MySqlCommand();
                    comando = new MySqlCommand("UPDATE filmes SET quantidade = quantidade - 1 WHERE id=" + txtCodigo_Filme.Text);
                    Consultar();
                }
                else
                {
                    MessageBox.Show("O Filme já está locado", "Atenção");
                }
            }

    Desde já agradeço por ter esclarecido a dúvida anterior.

    Wednesday, January 25, 2012 10:09 PM
  •  comando.ExecuteNonQuery();
    está faltando essa linha
    Wednesday, January 25, 2012 10:19 PM
  • Beleza cara, consegui fazer só que agora depois de adicionar o filme fica dando esse erro.

    BIGINT UNSIGNED value is out of range in '(`db_locadora`.`filmes`.`quantidade` - 1)'

    Meu código.

                    Consultar();
                    banco.incluirReserva(int.Parse(txtCodigo_Filme.Text), int.Parse(txtCodigo_Cliente.Text), DateTime.Parse(txtDt_Rerva.Text));
                    MessageBox.Show("Reserva adicionada com sucesso", "Aviso");
                    cone = new MySqlConnection("server=localhost;user id=root;database=db_locadora;Allow zero Datetime=true");
                    cone.Open();
                    comando = new MySqlCommand("UPDATE filmes SET quantidade = quantidade - 1 WHERE id=" + int.Parse(txtCodigo_Filme.Text), cone);
                    comando.ExecuteNonQuery();
                    Consultar();


    Wednesday, January 25, 2012 11:01 PM
  • Só passei pra avisar que consegui corrigir o erro, e que agradeço a quem me ajudou.

     

    E aqui ta o código pra quem tiver interesse.

     

            private void btnGravar_Click(object sender, EventArgs e)
            {
                string quantidade;
                quantidade = dgvRegistros3.Rows[dgvRegistros3.CurrentRow.Index].Cells["quantidade"].Value.ToString();
                if (int.Parse(quantidade) >= 1)
                {
                    Consultar();
                    banco.incluirReserva(int.Parse(txtCodigo_Filme.Text), int.Parse(txtCodigo_Cliente.Text), DateTime.Parse(txtDt_Rerva.Text));
                    MessageBox.Show("Reserva adicionada com sucesso", "Aviso");
                    cone = new MySqlConnection("server=localhost;user id=root;database=db_locadora;Allow zero Datetime=true");
                    cone.Open();
                    comando = new MySqlCommand("UPDATE filmes SET quantidade=- 1 WHERE id=" + int.Parse(txtCodigo_Filme.Text), cone);
                    comando.ExecuteNonQuery();
                    Consultar();
                }
                else
                {
                    MessageBox.Show("O Filme já está locado", "Atenção");
                }
            }

    Thursday, January 26, 2012 2:00 AM