Foro sobre Java SE > evitar ingreso de registros duplicados
¿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());
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.
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.
Por favor me puedes poner un ejemplo de codigo que funciona?Que todavia no me aclaro.
Gracias
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.
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);
}
Minha rola pra ti! Bando de viados!
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");
}}}}}}}}
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.
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);
}