Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > evitar ingreso de registros duplicados

Buenos dias quisiera saber como podria hacer en java para evitar que se repite un registro antes de insertar en mi tabla jTable.En un formulario tengo 3 jTextField , una tabla jTable que se llena de datos desde un archivo Excel y un boton para insertar datos en la tabla.He intentado algo pero no me funcciona.Por favor si me puedes echar una mano.Gracias.

private void jButton_agregarActionPerformed(java.awt.event.ActionEvent evt) {

int contador = 0;
int valor = 0;

String id = jTextField_cod.getText();


String[] NuevosDatos = new String[3];

contador = model.getRowCount();


NuevosDatos[0] = jTextField_cod.getText();
contador = contador + 1;
jTextField_cod.setText(null);

NuevosDatos[1] = jTextField_description.getText();
jTextField_description.setText(null);

NuevosDatos[2] = jTextField_precio.getText();
jTextField_precio.setText(null);

valor = Integer.parseInt(NuevosDatos[0].toString());
System.out.println(""+ valor);
System.out.println("Contador : " + contador);




for(int i = 0; i<jTable_productos.getRowCount(); i++){
if(jTable_productos.getValueAt(i, 0).equals(id)){
//jTable_productos.changeSelection(i, 0, false, false);
JOptionPane.showMessageDialog(null, "Los datos ya existen en la tabla");
System.out.println("Elementos " + NuevosDatos[i].toString());
System.out.println("Contador : " + contador);
model.removeRow(i);
}


}


model.addRow(NuevosDatos);

}

marzo 27, 2014 | Registered Commenterraresmc

¿Por qué dices que no te funciona?. ¿Se lanza alguna excepción?.

De momento lo que veo es que usas el contador de filas para indexar ese array nuevosDatos, que está inicializado con tres posiciones solamente.
Es normal que para las filas mayores de 2, y que estén repetidas, lance una excepción en:
System.out.println("Elementos " + NuevosDatos[i].toString());

marzo 27, 2014 | Registered Commenterchoces

Digo que no funcciona por que me reemplaza la fila corespondente de la tabla con los nuevos datos.Yo quiero que si el numero de id del jTextField ya existe en la tabla jTable, que me avisa y que no insrete los nuevos datos en la tabla.

marzo 27, 2014 | Unregistered Commenterraresmc

Dentro del bucle, siempre eliminas la fila que cumple la condición.
Una vez fuera del bucle, siempre añades una nueva fila con nuevos datos.

marzo 28, 2014 | Registered Commenterchoces

Por favor me puedes poner un ejemplo de codigo que funciona?Que todavia no me aclaro.
Gracias

marzo 28, 2014 | Unregistered Commenterraresmc

No entiendo cuál es el problema ahora.
Si no quieres que se eliminen ni añadan filas cuando ya existen, simplemente no lo hagas.
Como supongo que ese código lo has escrito tu (lo que ya empiezo a dudar), debes saber cómo funciona, y cómo corregirlo, una vez que el error ya ha quedado claro.

marzo 29, 2014 | Registered Commenterchoces

Ya lo he conseguido.

String id = jTextField_cod.getText();
Boolean aviso = false;
String[] DatosNuevos = new String[3];

DatosNuevos[0] = jTextField_cod.getText();
DatosNuevos[1] = jTextField_description.getText();
DatosNuevos[2] = jTextField_precio.getText();

for(int i = 0; i<jTable_productos.getRowCount(); i++){
if(jTable_productos.getValueAt(i, 0).equals(id)){
JOptionPane.showMessageDialog(null, "El codigo "
+ id
+ " ya existe en la tabla.");
aviso = true;
Limpiar();
}
}

if(aviso == false){
model.addRow(DatosNuevos);
Limpiar();
}

public void Limpiar(){
jTextField_cod.setText(null);
jTextField_description.setText(null);
jTextField_precio.setText(null);
}

marzo 29, 2014 | Unregistered Commenterraresmc

Minha rola pra ti! Bando de viados!

agosto 18, 2018 | Unregistered CommenterRoludo

String nc = nombre_cliente.getText();
String ne = nombre_empresa.getText();
String noc = no_cliente.getText();
String id = id_cliente.getText();
String cc = contacto_cliente.getText();
String ccl = correo_cliente.getText();
String dir = txt_ubicacion.getText();
Boolean aviso = false;

if (nc.isEmpty()) {
JOptionPane.showMessageDialog(null, "LLENAR CAMPO NOMBRE DEL CLIENTE");
} else {
if (ne.isEmpty()) {
JOptionPane.showMessageDialog(null, "LLENAR CAMPO NOMBRE DE LA EMPRESA");
} else {
if (noc.isEmpty()) {
JOptionPane.showMessageDialog(null, "LLENAR NO. CLIENTE");
} else {
if (id.isEmpty()) {
JOptionPane.showMessageDialog(null, "LLENAR EL ID DEL CLIENTE");
} else {
if (cc.isEmpty()) {
JOptionPane.showMessageDialog(null, "LLENAR EL CONTACTO DEL CLIENTE");
} else {
if (ccl.isEmpty()) {
JOptionPane.showMessageDialog(null, "LLENAR CORREO DEL CLIENTE");
} else {
if (dir.isEmpty()) {
JOptionPane.showMessageDialog(null, "LLENAR DIRECCIÓN DE LA EMPRESA");
} else {
for (int i = 0; i < tabla_clientes_bd.getRowCount(); i++) //RECORRIO POR TODA LAS FILAS DE LAS TABLA
{
if (tabla_clientes_bd.getValueAt(i, 3).equals(id_cliente.getText())) {
JOptionPane.showMessageDialog(null, "El CLIENTE YA EXISTE");
aviso = true;
limpiar();
}

}
if(aviso == false){
RegistrarDatos();
}else{
JOptionPane.showMessageDialog(null, "NO SE REGISTRO VERIFICAR ID CLIENTE");
}}}}}}}}

febrero 18, 2020 | Unregistered Commenterjavier

Mi código anterior es un ejemplo que al tener los campos obligatorios vacíos se muestre los mensajes correspondientes como se ve en el código y por lo tanto no se hace el registro, también verifica si tiene el mismo id_cliente en el Jtable te muestra un mensaje que "El CLIENTE(ID) YA EXISTE", por que la variable aviso cambia a true y por lo tanto muestra el mensaje "NO SE REGISTRO VERIFICAR ID CLIENTE" y no se realiza el registro, al final si el id_cliente es diferente a los que están en Jtable y todos los campos están correctamente llenos se realiza el registro ;) :) lo que me sirvió de sus comentarios fue la variable (aviso) algo tan fácil y con eso pude terminar la condición correctamente, gracias.

febrero 18, 2020 | Unregistered CommenterJavier Pineda