//setaosvaloresreferenteaoJFrameCadEntradadata=newDate();SimpleDateFormatdf=newSimpleDateFormat("yyyy-MM-dd");dataAtual=df.format(data);java.sql.Datedia=java.sql.Date.valueOf(dataAtual);entrada.setDataEntrada(dia);entrada.setDescricao(jTextFieldDescricao.getText());solicitacao.setFkCliente(WIDTH);EntradaDAOentradaDAO=newEntradaDAO();entradaDAO.salvarEntada(entrada);JOptionPane.showMessageDialog(null,"Entrada "+entrada.getDescricao()+" Salvo com Sucesso!");}
sql="INSERT INTO solicitacao(data,ordemServico,tipo,descricao,fk_cliente) VALUES(?,?,?,?,?)";PreparedStatementstm=conn.prepareStatement(sql);stm.setDate(1,(Date)soli.getDataSolicitacao());stm.setString(2,soli.getOs());stm.setString(3,soli.getTipo());stm.setString(4,soli.getDescricao());stm.setInt(4,soli.getFkCliente());stm.execute();stm.close();System.out.println("Solicitação "+soli.getOs()+" Cliente: "+soli.getFkCliente()+" cadastrado com sucesso!!!");conn.close();}catch(SQLExceptione){e.printStackTrace();}catch(Exceptione){e.printStackTrace();}}
Sem colocar a chave externa salva mas quando coloco não vai.
faz o seguinte, pede para ele exibir o FK ao cadastrar pra gente ver o resultado que ele está tendo. Pode ser que não esteja cadastrando porque o valor passado é null já.
quando você for colocar o seu código novamente, coloca ele entre [code][/code] (sem *) assim fica melhor pra gente analisar.
wbdsjunior
Jose Carlos Araujo:
A aplicação está com as seguintes acões no botão slavar faz corretamente apenas não salva a fk.
//setaosvaloresreferenteaoJFrameCadEntradadata=newDate();SimpleDateFormatdf=newSimpleDateFormat("yyyy-MM-dd");dataAtual=df.format(data);java.sql.Datedia=java.sql.Date.valueOf(dataAtual);entrada.setDataEntrada(dia);entrada.setDescricao(jTextFieldDescricao.getText());solicitacao.setFkCliente(WIDTH);EntradaDAOentradaDAO=newEntradaDAO();entradaDAO.salvarEntada(entrada);JOptionPane.showMessageDialog(null,"Entrada "+entrada.getDescricao()+" Salvo com Sucesso!");}
sql="INSERT INTO solicitacao(data,ordemServico,tipo,descricao,fk_cliente) VALUES(?,?,?,?,?)";PreparedStatementstm=conn.prepareStatement(sql);stm.setDate(1,(Date)soli.getDataSolicitacao());stm.setString(2,soli.getOs());stm.setString(3,soli.getTipo());stm.setString(4,soli.getDescricao());stm.setInt(4,soli.getFkCliente());stm.execute();stm.close();System.out.println("Solicitação "+soli.getOs()+" Cliente: "+soli.getFkCliente()+" cadastrado com sucesso!!!");conn.close();}catch(SQLExceptione){e.printStackTrace();}catch(Exceptione){e.printStackTrace();}}
Sem colocar a chave externa salva mas quando coloco não vai.
tente trocar isso:
...
stm.setString(4, soli.getDescricao());
stm.setInt(4, soli.getFkCliente());
...
por isso:
De fato estava errado valeu pelo toque. é que já estou um bom tempo quebrando cabeça com este projeto.
Evoluiu. Salvou chave externa poerem o valor salvo não corresponde ao desejado todas as tentetivas com usuários diferentes cadastrado salvou o usuário cadastrado com registro 1.
wbdsjunior
Jose Carlos Araujo:
De fato estava errado valeu pelo toque. é que já estou um bom tempo quebrando cabeça com este projeto.
Evoluiu. Salvou chave externa poerem o valor salvo não corresponde ao desejado todas as tentetivas com usuários diferentes cadastrado salvou o usuário cadastrado com registro 1.
não seria por causa desta linha:
...
solicitacao.setFkCliente(WIDTH); // WIDTH parece ser uma constante
...
Jose_Carlos_Araujo
[color=darkblue][/color]Mudei tos metodo salvar na aplicação fiz o tratamento das exceções gravou corretamente
O metodo ficou assim.
privatevoidjButtonSalvarActionPerformed(java.awt.event.ActionEventevt){if(jButtonSalvar.getText().equals("Inserir")){//VerificaçãodeCamposobrigatórioseValidaçãodosDadosif(!jRbDevolucao.isSelected()&&!jRbSaida.isSelected()){JOptionPane.showMessageDialog(null,"Informe o Tipo da Solicitação","Campos Obrigatórios",JOptionPane.WARNING_MESSAGE);}elseif("".equals(jTextAreaDescricao.getText().trim())){JOptionPane.showMessageDialog(null,"Preencha a Descrição da Solicitação","Campos Obrigatórios",JOptionPane.WARNING_MESSAGE);}else{//VerificaseéparasalvarumnovoregistroStringparam=newString();//pegueioparametroescolhidonalistaparam=jListCliente.getSelectedValue().toString();//InstanciaumobjetodaclasseJFrameCadSolicitacao//setaosvaloresreferenteaoJFrameCadSolicitacaoSimpleDateFormatformat=newSimpleDateFormat("dd/MM/yyyy");try{//java.sql.Datedata=newjava.sql.Date(format.parse(jTextFieldData.getText()).getTime());java.sql.Datedata=newjava.sql.Date(format.parse(jFormattedTextField.getText()).getTime());solicitacao.setDataSolicitacao(data);}catch(ParseExceptionex){Logger.getLogger(JFrameCadSolicitacao.class.getName()).log(Level.SEVERE,null,ex);}solicitacao.setOs(jTextFieldOS.getText());solicitacao.setDescricao(jTextAreaDescricao.getText());if(jRbDevolucao.isSelected()){solicitacao.setTipo("D");}else{solicitacao.setTipo("S");}solicitacaoDAO.salvarSolicitacao(solicitacao,idCliente);JOptionPane.showMessageDialog(null,"Solicitacao "+solicitacao.getOs()+" Salvo com Sucesso!");jButtonLimparActionPerformed(evt);}}elseif(jButtonSalvar.getText().equals("Alterar")){//VerificaçãodeCamposobrigatórioseValidaçãodosDadosif("".equals(jTextAreaDescricao.getText().trim())){JOptionPane.showMessageDialog(null,"Preencha a Descrição da Solicitação","Campos Obrigatórios",JOptionPane.WARNING_MESSAGE);}else{//setaosvaloresreferenteaoJFrameCadSolicitacaoSimpleDateFormatformat=newSimpleDateFormat("dd/MM/yyyy");try{//java.sql.Datedata=newjava.sql.Date(format.parse(jTextFieldData.getText()).getTime());java.sql.Datedata=newjava.sql.Date(format.parse(jFormattedTextField.getText()).getTime());solicitacao.setDataSolicitacao(data);solicitacao.setDescricao(jTextAreaDescricao.getText());solicitacaoDAO.atualizaSolicitacao(solicitacao);JOptionPane.showMessageDialog(null,"Solicitacao "+solicitacao.getOs()+" Atualizada com Sucesso!");jButtonLimparActionPerformed(evt);}catch(ParseExceptionex){Logger.getLogger(JFrameCadSolicitacao.class.getName()).log(Level.SEVERE,null,ex);}catch(NullPointerExceptione){e.printStackTrace();}catch(Exceptione){e.printStackTrace();}}}}
Valeu pelo auxilio.
Jose_Carlos_Araujo
Detalhe da correção do codigo.
//peguei o parametro escolhido na lista param=jListCliente.getSelectedValue().toString();