Ir para conteúdo
Fórum Script Brasil

pr99

Membros
  • Total de itens

    2
  • Registro em

  • Última visita

Sobre pr99

pr99's Achievements

0

Reputação

  1. Meu problema é o seguinte, vi que quando edito um registro , funciona, o cadastro é alterado, mas quando eu quero cadastrar um novo usuário, ele cai na condição de edição, ele edita as informações do cadastro que eu estava alterando anteriormente, não deixando cadastrar um novo usuário, porque isso acontece? Variável responsável por validar se está editando ou não private int codigoEditar = 0; Método responsável por buscar o código do usuário na tabela JButton button_3 = new JButton("Editar"); button_3.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { tabbedPane.setSelectedIndex(0); // Variável responsável por capturar a linha selecionada int linhaSelecionada = -1; // Busca a linha selecionada e armazena na variável // linhaSelecionada(tr) // linhaSelecionada = tabela.getSelectedRow(); // Validar se uma linha foi selecionada if (linhaSelecionada >= 0) { // Armazena a informação da primeira coluna da linha // selecionada(td) //coluna 0 código do funcionário int codigoFuncionario = (int) tabela.getValueAt(linhaSelecionada, 0); buscarFuncionario(codigoFuncionario); } else { JOptionPane.showMessageDialog(null, "Selecione uma " + "linha para alterar o Funcionário!"); } } }); Método que recebe como parâmetro o código do funcionário, colocando as informações do usuário na tela de cadastro para alteração //recebe como parâmetro o código do funcionário protected void buscarFuncionario(int codigoFuncionario) { control.Funcionarios func = new control.Funcionarios(); //laço foreach que percorre o arraylist referenciando o código do funcionário for (Funcionarios funcio : func.listarFuncionarios(codigoFuncionario + "", 1)) { /*Funcionarios funcio é o Dao, para setar(set) e pegar(get) * func.listarFuncionarios(codigoFuncionario + "", 1)) códigoFuncionário + "" concatena o código com o parametro texto da pesquisa da * classe control * 1 é a pesquisa por código do funcionário referenciando o parametro do código do funcionário */ // Setar informações na tela de cadastro nome.setText(funcio.getNome()); email.setText(funcio.getEmail()); endereco.setText(funcio.getEndereco()); telefone.setText(funcio.getTelefone()); cpf.setText(funcio.getCpf_funcionario()); //Variável que recebe o valor do codigo do usuário //importante para a alteração codigoEditar = funcio.getCodigo_funcionario(); } cadastro.setVisible(true); listagem.setVisible(false); } Método responsável por salvar ou alterar o funcionário protected void salvar() { // Capturar informações que o usuário digitou String nome_funcionario = nome.getText(); String cpf_funcionario = cpf.getText(); String endereco_funcionario = endereco.getText(); String email_funcionario = email.getText(); String fone_funcionario = telefone.getText(); String senha_funcionario = senha.getText(); String rep_senha_funcionario= repsenha.getText(); if(email_funcionario.equals("")&& cpf_funcionario.equals("")&&fone_funcionario.equals("")&&nome_funcionario.equals("")){ JOptionPane.showMessageDialog(null, "Preencha os campos"); }else if(!rep_senha_funcionario.equals(senha_funcionario)){ JOptionPane.showMessageDialog(null, "As senhas são diferentes"); //validar se as senhas são iguais }else if(endereco_funcionario.equals("")){ JOptionPane.showMessageDialog(null, "O campo Endereço é Obrigatório!"); } // Criando o objeto Funcionarios func = new Funcionarios(); func.setNome(nome_funcionario); func.setEmail(email_funcionario); func.setTelefone(fone_funcionario); func.setSenha(senha_funcionario); func.setEndereco(endereco_funcionario); func.setCpf_funcionario(cpf_funcionario); func.setCodigo_funcionario(codigoEditar); control.Funcionarios manutencao = new control.Funcionarios(); //validar se estamos cadastrando ou editando os registros if(codigoEditar == 0){ manutencao.inserir(func); }else{ manutencao.alterar(func); } limparInformacoes(); tabbedPane.setSelectedIndex(1); } } Método de salvar do pacote control da classe funcionários public void inserir(dao.Funcionarios func) { if (func != null) { // Variável de conexão de DB java.sql.Connection conn = null; try { conn = ConnectDB.conexaoDB(); java.sql.PreparedStatement pstm; pstm = conn.prepareStatement(INSERT); pstm.setString(1, func.getCpf_funcionario()); pstm.setString(2, func.getEmail()); pstm.setString(3, func.getSenha()); pstm.setString(4, func.getNome()); pstm.setString(5, func.getEndereco()); pstm.setString(6, func.getTelefone()); // Envia para o banco de dados Boolean teste; teste = pstm.execute(); // Validar inserção no banco de dados if (!teste) { JOptionPane.showMessageDialog(null, "Funcionario cadastrado com sucesso!"); } else { JOptionPane.showMessageDialog(null, "Erro ao cadastrar o Funcionario!"); } // Fecha a conexão com o banco de dados ConnectDB.fecharConexao(conn); } catch (Exception e) { JOptionPane.showMessageDialog(null, "Erro ao cadastrar o Funcionario!"); } } } Método de alterar do pacote control da classe funcionários //parametro objeto dao.funcionarios public void alterar(dao.Funcionarios func) { java.sql.Connection conn = null; try { conn = ConnectDB.conexaoDB(); //prepara a query java.sql.PreparedStatement pstm; pstm = conn.prepareStatement(UPDATE); pstm.setString(1, func.getCpf_funcionario()); pstm.setString(2, func.getEmail()); pstm.setString(3, func.getNome()); pstm.setString(4, func.getEndereco()); pstm.setString(5, func.getTelefone()); pstm.setString(6, func.getSenha()); pstm.setInt(7, func.getCodigo_funcionario()); // Envia para o banco de dados Boolean teste; teste = pstm.execute(); // Validar inserção no banco de dados if (!teste) { JOptionPane.showMessageDialog(null, "Funcionario alterado com sucesso!"); } else { JOptionPane.showMessageDialog(null, "Erro ao alterar o funcionario!"); } // Fecha a conexão com o banco de dados ConnectDB.fecharConexao(conn); } catch (SQLException e) { JOptionPane.showMessageDialog(null, "Erro ao alterar o funcionario!"+e.getMessage()); } } Peço ajuda de vocês para corrigir o problema.
  2. Olá sou novo no fórum, comecei a programar faz pouco tempo, mas ás vezes tenho dúvidas, e problemas que não consigo resolver, por isso peço a ajuda de vocês para resolver esse problema. Tenho a função inserir e nela tem uma validação de entrada e saída, primeiro ela faz um select com a função count com um where referenciando o código do produto, depois ela cai na condição if($quantidade_db >= $quantidade || mysqli_num_rows($result) == 0) se a quantidade do banco for maior ou igual quantidade inserida pelo usuário ou se mysqli_num_rows == 0 ela vai para a inserção, se a condição for falsa, mostra uma mensagem na tela "valor ultrapassa a quantidade em estoque". A validação funciona para a saída, mas para entrada, por exemplo, o usuário cadastra o produto com a flag de entrada duas vezes com a quantidade de 50, mas novamente ele cadastra o mesmo produto com a flag de entrada mas com a quantidade de 101, a vai aparecer a mensagem "valor ultrapassa a quantidade em estoque". Na entrada o usuário deve digitar a quantidade que ele quiser, e não cair no else para exibir a mensagem. O código: <?php require_once('./base_de_dados/connect_bd.php'); function inserir(){ //Conectando com o banco de dados $dbc = conexao(); $retorno = array(); $erros = array(); $admin; $produto; $registro; $quantidade; //função empty verifica se não tem registro inserido if($_POST['produto'] == ""){ $erros[] = 'O campo codigo administrador é obrigatório!'; }else{ $produto = $_POST['produto']; } if($_POST['admin'] == ""){ $erros[] = 'O campo codigo produto é obrigatório $teste!'; }else{ $admin = $_POST['admin']; } if($_POST['registro'] == ""){ $erros[] = 'O campo Registro é obrigatório!'; }else{ $registro = $_POST['registro']; } if(empty($_POST['quantidade'])){ $erros[] = 'O campo quantidade é obrigatório!'; }else{ $quantidade = $_POST['quantidade']; } if(empty($erros)){ $query = "select SUM(ret.quantidade) AS quantidade, ret.nome_produto, ret.id_produto from(SELECT SUM(p.quantidade) AS QUANTIDADE, p.tipo_registro, p.id_produto, c.nome AS nome_produto, c.imagem FROM estoque p JOIN administrador u ON u.id_admin = p.id_admin JOIN cadastro_produtos c ON c.id_produto = p.id_produto WHERE p.tipo_registro = 'entrada' GROUP BY p.tipo_registro, p.id_produto, c.nome, c.imagem UNION SELECT -SUM(p.quantidade) AS QUANTIDADE, p.tipo_registro, p.id_produto, c.nome AS nome_produto, c.imagem FROM estoque p JOIN administrador u ON u.id_admin = p.id_admin JOIN cadastro_produtos c ON c.id_produto = p.id_produto WHERE p.tipo_registro = 'saida' GROUP BY p.tipo_registro, p.id_produto, c.nome, c.imagem)ret WHERE ret.id_produto = $produto group by ret.nome_produto, ret.id_produto"; echo $query; $result = @mysqli_query($dbc, $query); $row = mysqli_fetch_array($result); $quantidade_db = $row['quantidade']; if($quantidade_db >= $quantidade || mysqli_num_rows($result) == 0){ //inserir no banco de dados $query = "INSERT INTO estoque(id_estoque, quantidade, tipo_registro, id_admin, id_produto, dt_movimentacao) VALUES (NULL, $quantidade,'$registro', '$admin' ,'$produto',CURRENT_TIMESTAMP)"; $result = @mysqli_query($dbc, $query); echo "$query"; if($result){ $retorno[] = 'Cadastro realizado com sucesso!'; }else{ $erros[] = 'Ocorreu algum erro ao cadastrar o estoque!'; } /** if($quantidade_db <= $quantidade || mysqli_num_rows($result) <= 0){ //inserir no banco de dados $query = "INSERT INTO estoque(id_estoque, quantidade, tipo_registro, id_admin, id_produto, dt_movimentacao) VALUES (NULL, $quantidade,'$registro', '$admin' ,'$produto',CURRENT_TIMESTAMP)"; $result = @mysqli_query($dbc, $query); echo "$query"; if($result){ $retorno[] = 'Cadastro realizado com sucesso!'; }else{ $erros[] = 'Ocorreu algum erro ao cadastrar o estoque!'; } }else{ //erro estoque echo"<script>alert('Primeiro Digite a entrada'); history.go(-1)</script>"; } **/ }else{ //erro estoque echo"<script>alert('Valor Ultrapassa a quantidade em estoque'); history.go(-1)</script>"; } }else{ $retorno = $erros; } return $retorno; } ?> Como eu poderia resolver esse problema, ou melhorar a validação?
×
×
  • Criar Novo...