Modelo Tabela
Olá, estou com uma dúvida em java. Estou desenvolvendo um sistema de hotel e tenho uma tabela Hospedagem que mostra todas as hospedagens cadastradas.Esta lista vem de um Modelo Tabela. O problema é o seguinte: quando clico em uma determinada hospedagem cadastro um consumo, até aí td bem, mas se eu selecionar um outro código da hospedagem para cadastrar um novo consumo, seja para um nova hospedagem, ou para alguma que já tenha alguns consumos, o consumo cadastrado vem para o mesmo hóspede que havia selecionado primeiramente, isto é, ele gera um código de consumo a cada consumo, mas não vincula para o código daquela hospedagem que estou cadastrando, todos os consumo vão se acumulando num mesmo código hospedagem e gostaria que a cada hospedagem que tivesse um consumo já cadstrado fosse gerada uma tabela apenas o consumo do hóspede em questão e a cada novo consumo de uma nova hospedagem uma nova tabela. Não sei se fui clara!!! Isso seria possível? Estou utilizando java Swing e MySql. Por favor alguém me ajuda??Obrigada!
Lizy Panta
Curtidas 0
Respostas
Jothaz
17/05/2016
Acho que para começar seri interessante postar a estrutura de seu banco de dados ou classes, do contrário fica difícil ajudar.
GOSTEI 0
Lizy Panta
17/05/2016
Jothaz Obg! Código do cadastrar Consumo que está na tela Consumo:
private void btnCadastrarActionPerformed(java.awt.event.ActionEvent evt) {
ConsumoDAO consumoDAO = new ConsumoDAO();
Consumo consumo1 = new Consumo();
if (txtCodProduto.getText().isEmpty() || txtQuantidade.getText().isEmpty()) {
JOptionPane.showMessageDialog(this, "Erro!! Por favor preencha os campos corretamente!!!");
} else {
//Passa o que e digitado para a tabela no banco
consumo1.setCodHospedagem(Integer.parseInt(txtCodHospedagem.getText()));
consumo1.setCodProduto(Integer.parseInt(txtCodProduto.getText()));
consumo1.setQuantidade(Integer.parseInt(txtQuantidade.getText()));
consumo1.setValorConsumo(Double.parseDouble(txtValorConsumo.getText()));
consumo1.setStatus(String.valueOf(cmbStatus.getSelectedItem()));
consumoDAO.cadastrar(consumo1);
JOptionPane.showMessageDialog(this, "Consumo cadastrado com sucesso!!!");
limparCampos();
mostrar(codHospedagem);
conConsumo.executaSQL("SELECT C.codConsumo, C.codHospedagem, P.nomeProduto AS nomeProduto, " +
" C.quantidade, C.valorConsumo, C.status " +
" FROM Consumo C " +
" INNER JOIN produto AS P ON P.codProduto = C.codProduto " +
" order by C.codConsumo ");
try {
modeloTabelaConsumo.setResult(conConsumo.resultset);
} catch (SQLException ex) {
}
}
txtNome.requestFocus();
desabilitarCampos();//Desabilita campos e abaixo os botoes
btnCadastrar.setEnabled(false);
btnDeletar.setEnabled(false);
btnNovo.setEnabled(true);
btnCancelar.setEnabled(false);
}
Este método criei na tela do consumo mas não funciona! Preciso que quando seleciono uma hospedagem abra o consumo separadamente pelo código da hospdagem e esta acumulando todos num só código hospedagem!
public void mostrar(String buscar){
try {
ModeloTabelaConsumo modeloTabelaConsumo;
ConsumoDAO consumoDAO = new ConsumoDAO();
// conConsumo.abrir();
// modeloTabelaConsumo = (ModeloTabelaConsumo) consumoDAO.mostra(buscar);
modeloTabelaConsumo = new ModeloTabelaConsumo(conConsumo.resultset);
jTableConsumos.setModel(modeloTabelaConsumo);
txtTotalConsumo.setText("Valor R$. " + consumoDAO.totalConsumo);
} catch (Exception e) {
JOptionPane.showMessageDialog(rootPane, e);
}
}
private void btnCadastrarActionPerformed(java.awt.event.ActionEvent evt) {
ConsumoDAO consumoDAO = new ConsumoDAO();
Consumo consumo1 = new Consumo();
if (txtCodProduto.getText().isEmpty() || txtQuantidade.getText().isEmpty()) {
JOptionPane.showMessageDialog(this, "Erro!! Por favor preencha os campos corretamente!!!");
} else {
//Passa o que e digitado para a tabela no banco
consumo1.setCodHospedagem(Integer.parseInt(txtCodHospedagem.getText()));
consumo1.setCodProduto(Integer.parseInt(txtCodProduto.getText()));
consumo1.setQuantidade(Integer.parseInt(txtQuantidade.getText()));
consumo1.setValorConsumo(Double.parseDouble(txtValorConsumo.getText()));
consumo1.setStatus(String.valueOf(cmbStatus.getSelectedItem()));
consumoDAO.cadastrar(consumo1);
JOptionPane.showMessageDialog(this, "Consumo cadastrado com sucesso!!!");
limparCampos();
mostrar(codHospedagem);
conConsumo.executaSQL("SELECT C.codConsumo, C.codHospedagem, P.nomeProduto AS nomeProduto, " +
" C.quantidade, C.valorConsumo, C.status " +
" FROM Consumo C " +
" INNER JOIN produto AS P ON P.codProduto = C.codProduto " +
" order by C.codConsumo ");
try {
modeloTabelaConsumo.setResult(conConsumo.resultset);
} catch (SQLException ex) {
}
}
txtNome.requestFocus();
desabilitarCampos();//Desabilita campos e abaixo os botoes
btnCadastrar.setEnabled(false);
btnDeletar.setEnabled(false);
btnNovo.setEnabled(true);
btnCancelar.setEnabled(false);
}
Este método criei na tela do consumo mas não funciona! Preciso que quando seleciono uma hospedagem abra o consumo separadamente pelo código da hospdagem e esta acumulando todos num só código hospedagem!
public void mostrar(String buscar){
try {
ModeloTabelaConsumo modeloTabelaConsumo;
ConsumoDAO consumoDAO = new ConsumoDAO();
// conConsumo.abrir();
// modeloTabelaConsumo = (ModeloTabelaConsumo) consumoDAO.mostra(buscar);
modeloTabelaConsumo = new ModeloTabelaConsumo(conConsumo.resultset);
jTableConsumos.setModel(modeloTabelaConsumo);
txtTotalConsumo.setText("Valor R$. " + consumoDAO.totalConsumo);
} catch (Exception e) {
JOptionPane.showMessageDialog(rootPane, e);
}
}
GOSTEI 0
Jothaz
17/05/2016
Sempre que posta códigos use a tag Code "/>" primeiro ícone a esquerda, senão o código fica ilegível.
Você não tem o modelo do banco de dados ou das classes?
Você não tem o modelo do banco de dados ou das classes?
GOSTEI 0
Lizy Panta
17/05/2016
Este método tenho na DAOConsumo e chamo no cadastrar!
public Object mostra(String buscar) {
//Objeto de Retorno
Consumo consumoVO = new Consumo();
totalConsumo = 0.0;
String sql = ("SELECT c.codConsumo, c.codHospedagem, c.codProduto, p.nomeProduto, " +
" c.quantidade, c.valorConsumo, c.status " +
" from consumo c " +
" INNER JOIN produto p ON c.codProduto = p.codProduto " +
"INNER JOIN hospedagem AS H ON H.codHospedagem = C.codHospedagem "
+ " WHERE c.codHospedagem = " + buscar + " order by c.codConsumo ");
//Abre conexao com o banco
getBanco().abrir();
try {
Statement stm = getBanco().getConexao().createStatement();
//Faz a leitura no banco
ResultSet rs = stm.executeQuery(sql);
//Verifica se achou
if (rs.next() == true) { //Achou
consumoVO = new Consumo();
consumoVO.setCodConsumo(rs.getInt("codConsumo"));
consumoVO.setCodHospedagem(rs.getInt("codHospedagem"));
consumoVO.setCodProduto(rs.getInt("codProduto"));
// consumoVO.setCodProduto(rs.getInt("nomeProduto"));
consumoVO.setQuantidade(rs.getInt("quantidade"));
consumoVO.setValorConsumo(rs.getDouble("valorConsumo"));
consumoVO.setStatus(rs.getString("status"));
totalConsumo = totalConsumo + (rs.getInt("quantidade") * rs.getDouble("valorConsumo"));
}
} catch (SQLException ex) {
ex.printStackTrace();
}
return consumoVO;
}
GOSTEI 0
Lizy Panta
17/05/2016
No banco está separando por PK mas na tela do java não consigo!!!
GOSTEI 0
Jothaz
17/05/2016
Posta a estrutura das tabelas e se possível com elas se relacionam.
GOSTEI 0
Lizy Panta
17/05/2016
Tabela Consumo
codConsumo - pk
codHospedagem - fk
codProduto - fk
quantidade
valorConsumo
status
Tabela Hospedagem
codHospedagem pk
codReserva fk
qtdDiaria
valorHospedagem
status
Tabela Produto
codProduto pk
nomeProduto
marca
descricaoProduto
qtdProduto
valorUnitario
Não consegui inserir a imagem do MER aqui mas meu banco está desta forma, porém no meu banco está vindo corretamente, eu especifico uma id e vem o consumo daquela id o problema é no java que não sei como fazer!!! Preciso para cada consumo uma lista específica daquele codHospedagem!!
codConsumo - pk
codHospedagem - fk
codProduto - fk
quantidade
valorConsumo
status
Tabela Hospedagem
codHospedagem pk
codReserva fk
qtdDiaria
valorHospedagem
status
Tabela Produto
codProduto pk
nomeProduto
marca
descricaoProduto
qtdProduto
valorUnitario
Não consegui inserir a imagem do MER aqui mas meu banco está desta forma, porém no meu banco está vindo corretamente, eu especifico uma id e vem o consumo daquela id o problema é no java que não sei como fazer!!! Preciso para cada consumo uma lista específica daquele codHospedagem!!
GOSTEI 0