Java - Borrar fila en un jTable ordenado

 
Vista:

Borrar fila en un jTable ordenado

Publicado por Maria (4 intervenciones) el 07/03/2019 00:09:05
Buenas a todos.

Tengo un problemilla a ver si alguien me puede ayudar.
Tengo un jTable, el cual está vinculado a un DefaultTableModel en un programa de Swing, que carga unas filas de una base de datos.

Puedo borrar una fila mediante la siguiente función:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
private void funcionborrarlineapedido()
{
 
    boolean actualizado = false;
 
    actualizado = base.borrarLineaPedido(referencia_seleccionado);
    if(actualizado == true){
        try {
            modeloTablaPedidos.removeRow(tablaPedidos.getSelectedRow());
 
        }
        catch (Exception ex) {
 
        }
    }else{
        JOptionPane.showMessageDialog(this, "No se ha borrado ninguna linea.", "Aviso", JOptionPane.ERROR_MESSAGE);
    }


La sentenciai en la base de datos es:
String sql = "DELETE FROM pedidos WHERE ean= '" + referencia_externa +"'";


Y puedo ordenar los campos mediante la siguiente linea:
TableRowSorter<DefaultTableModel> elQueOrdena = new TableRowSorter<DefaultTableModel>(modeloTablaPedidos);



Pero cuando la ordeno y borro una fila, no se borra realmente la fila correspondiente por que la linea del Jtable no corresponde realmente a la linea del DefaultTableModel, ya que el Jtable se ha ordenado y el DefaultTableModel no se ha ordenado al par y se borra en la base de datos otra fila diferente.

Que puedo hacer, estoy desesperada.

Muchas gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Billy Joel
Val: 2.665
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Borrar fila en un jTable ordenado

Publicado por Billy Joel (876 intervenciones) el 07/03/2019 02:41:50
La data de los JTable la podemos manejar a traves de sus TableModel; Y la data de éstos ultimos podemos accesarla a través de sus indices.
Voy a suponer que tienes un objeto JTable que se llama tablaPedidos y que alguna de esas columnas tiene el id (en tu caso veo que tu referencia se llama ean). Supongamos que tu id (ean) se encuentra en la primera columna (columna 0)
1
String ean = tablaPedidos.getModel().getValueAt(tablaPedidos.getSelectedRow(), 0);

No estoy seguro si hasta aquí es suficiente, pero...
Modificamos el comando sql
1
String sql = "DELETE FROM pedidos WHERE ean= '" + ean+"'";

Lo ejecutas como sea que lo estes ejecutando Te puedo dar un par de tips de como mejorarlo solo escribeme. Luego de eso deberías recargar el modelo del JTable para que se visualicen los cambios.

Por lo que veo estas utilizando Statement, yo recomiendo utilizar PreparedStatement, aunque por ahora Statement te va a funcionar.
Si quieres ver como manejo las consultas con PreparedStatement te dejo el siguiente link http://bit.ly/2Eg3t7W

Si tienes alguna duda solo escribe.
Saludos!!
;-)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar