Autor Tema: Actualizacion de una tabla por medio de Jtable  (Leído 6669 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado edu_guerr

  • Sv Member
  • ***
  • Mensajes: 463
Actualizacion de una tabla por medio de Jtable
« : marzo 03, 2010, 08:49:15 am »
Que tal companeros, resulta que tengo un jTable el cual lo lleno con una consulta, hasta aqui todo bien, me preguntaba si en java existe alguna funcion parecida a CommandBuilder de Visual Basic.net o TableUpdate de Visual Fox en las cuales con solo editar el grid  hacen la actualizacion en la tabla.
Ahorita edito el jtable y me actualiza la tabla y todo bien, pero lo que hago es comparar la celda del jtable con el valor almacenado en X columna del resulset, si son diferentes hago un UPDATE.
Empiezo a programar, Saludos y gracias!

Desconectado edu_guerr

  • Sv Member
  • ***
  • Mensajes: 463
Re:Actualizacion de una tabla por medio de Jtable
« Respuesta #1 : marzo 05, 2010, 09:06:29 am »
Como me urgia resolverlo, lo hice asi y me funciona muy bien, lo dejo por si le sirve a alguien mas, de seguro se puede mejorar mucho, pero empiezo en esto.

tengo 2 jcheckbox(actualizar y modificar
-----------
Código: [Seleccionar]
if (jCheckBox2.isSelected())
{
 try{
jCheckBox1.setEnabled(false);
cod= JOptionPane.showInputDialog(null,"Ingrese el No correlativo  que desea modificar","Modificar registro",JOptionPane.QUESTION_MESSAGE);
actualizar frame=new actualizar();
frame.setVisible(true);
frame.setTitle(cod);//esta var m sirve para hacer el UPDATE
en el boton guardar.
}
 catch (NumberFormatException e)
 {
      javax.swing.JOptionPane.showMessageDialog(null,"Verificar datos introducios",this.getTitle(),JOptionPane.ERROR_MESSAGE);
 }
}
else
{
  jCheckBox1.setEnabled(true);
}

    }                                         


boton guardar
----------------------
 private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
// TODO add your handling code here:
try{
int c=0;int b=0;int d=0;int w=0;
String msj_ok="El registro fue actualizado correctamente";
String msj_no="El registro NO fue actualizado correctamente.";
String new_nombre=String.valueOf(jTable1.getValueAt(0,0));
String new_apellido=String.valueOf(jTable1.getValueAt(0, 1));
Object new_year=jTable1.getValueAt(0, 2);
if(new_nombre.equals(n)&& new_apellido.equals(a) && new_year.equals(yy) ) {
JOptionPane.showMessageDialog(null,"No hay cambios que guardar","Aviso",JOptionPane.INFORMATION_MESSAGE);
  } else {
if(new_nombre.length()==0 || new_apellido.length()==0 ||  new_year.equals(""))
{ JOptionPane.showMessageDialog(null,"Complete los datos","Error",JOptionPane.ERROR_MESSAGE);  }
 else {
    if(n.equals(new_nombre))
  { }  else
  { c=c+1;
  } if(a.equals(new_apellido))
  { }  else
  { b=b+1;
  } if(yy.equals(new_year))
  { }
  else
  {  w=w+1; }
{
try{
if (obj.conexion())
{int num=0;

if(c!=0)
{
num = obj.stmt.executeUpdate("UPDATE ctrl_tomo SET nom_persona='"+new_nombre.toUpperCase()+"' WHERE cod_persona="+Integer.valueOf(this.getTitle()).intValue());
if (num!=0)
{
 d=d+1;
}
}
if(b!=0)
{
num = obj.stmt.executeUpdate("UPDATE ctrl_tomo SET ape_persona='"+new_apellido.toUpperCase()+"' WHERE cod_persona="+Integer.valueOf(this.getTitle()).intValue());
if (num!=0)
{d=d+1;}
}
if(w!=0)
{num = obj.stmt.executeUpdate("UPDATE ctrl_tomo SET tiempo_year="+new_year+" WHERE cod_persona="+Integer.valueOf(this.getTitle()).intValue());
if (num!=0)
{d=d+1;}
}
if(d>0)
JOptionPane.showMessageDialog(null, msj_ok,"Mensaje",JOptionPane.INFORMATION_MESSAGE);
else
JOptionPane.showMessageDialog(null, msj_no,"Mensaje",JOptionPane.INFORMATION_MESSAGE);
obj.stmt.close();
obj.conn.close();
}
else
{
JOptionPane.showMessageDialog(null,"No hay conexión con la base de datos.","Error",JOptionPane.ERROR_MESSAGE);
}
}
catch(SQLException e)
{
JOptionPane.showMessageDialog(null,"No se pudo ejecutar la sentencia sql.","Error",JOptionPane.ERROR_MESSAGE);
}
catch(NumberFormatException  e)
{
 javax.swing.JOptionPane.showMessageDialog(null,"La operacion se cancelo",this.getTitle(),JOptionPane.ERROR_MESSAGE);
}
}
}
}
}
catch(NullPointerException   e)
{
 javax.swing.JOptionPane.showMessageDialog(null,"Complete los datos","Error",JOptionPane.ERROR_MESSAGE);
}
catch(java.lang.ArrayIndexOutOfBoundsException   e)
{
 javax.swing.JOptionPane.showMessageDialog(null,"No hay  datos","Error",JOptionPane.ERROR_MESSAGE);
}


    }                                       
:thumbsup: cualquier duda aqui stamos..
« Última Modificación: julio 30, 2011, 12:26:43 pm por edu_guerr »

Desconectado Fredis

  • -^- Elite Gold -^-
  • The Communiter-
  • **
  • Mensajes: 3687
Re:Actualizacion de una tabla por medio de Jtable
« Respuesta #2 : marzo 05, 2010, 12:32:18 pm »
Te lo agradezco edu_guerr, le daré una revisada al codigo, seguro que me servirá, yo tengo un problema con Jtable, necesito que el usuario pueda personalizar su propia vista, por ejemplo si tengo un Jtable con las siguientes columnas: IdNombre, Nombre, Apellido, Direccion, etc, que el usuario pueda decidir que mostrar, podria ser solo Nombre y Apellido o Nombre y Direccion, esto en tiempo de ejecucion, se me ocurre utilizar checkbox pero aun estoy en eso. Si tienes alguna sugerencia o alguien mas ha trabajado en algo parecido, os agradeceré.

Desconectado edu_guerr

  • Sv Member
  • ***
  • Mensajes: 463
Re:Actualizacion de una tabla por medio de Jtable
« Respuesta #3 : marzo 08, 2010, 06:10:54 pm »
El jCheckBox me parece buena opcion fredis,tengo una consulta parecida y la hice asi, al parecer lo unico seria cambiar la cadena que va llenar el resulset  segun el jCheckBox, y las columnas del jtable me imagino que  las tendrias que agregar con codigo, sin usar el model de forma grafica, debido a que no se sabe la cantidad de columnas que el usuario va querer ver.


 :thumbsup: