FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Evitar guardar datos duplicados
Hola a todos... soy nuevo y necesito ayuda...
Tengo un formulario donde ingreso datos de un cliente... x dni, apellido, nombre, etc.. guardo los registros y todo ok... pero cuando creo un cliente nuevo, uno que ya habia ingresado antesme permite guardar igual... como hago para que no guarde un registro duplicado.. Muchas gracias x su ayuda desde ya... |
#2
|
||||
|
||||
Bienvenido a Clubdelphi , en cuanto tengas un ratito, léete la Guía de estilo, verás que faltan datos para responder.
usas bases de datos ¿cual? que componentes usas para acceder a la base de datos, BDE (ttable, tquery, etc) ADO (TADOTable, ...) IBX (TIBTable). Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#3
|
|||
|
|||
Salu2 bigpeter80
para lograr lo que quieres se hace asi:
prueba y nos comentas como te fue
__________________
Las cosas o son, o no son... |
#4
|
||||
|
||||
Es una solución que funciona, pero antes que esta yo optaría por añadir claves primarias y/o índices únicos para evitar duplicados en las tablas.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#5
|
|||
|
|||
si pero sino me equivoco dni es un número de identificacion, por lo tanto 2 personas no tendrán el mismo dni
__________________
Las cosas o son, o no son... |
#6
|
||||
|
||||
Correcto, por eso se define el DNI como clave primaria, o si se necesita otra clave primaria, se le define al DNI un índice único. De esta forma al hacer el INSERT si ese DNI ya existe fallará. Si se captura el error adecuadamente se puede sacar el mismo mensaje que tú comentabas sin necesidad de hacer una búsqueda previa a la inserción.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#7
|
|||
|
|||
Cita:
ahhh bueno neftali es otra solucion como tu dices deberias postear tu solucion haber como se capturan los errores para ponerles mensajes personalizados
__________________
Las cosas o son, o no son... |
#8
|
||||
|
||||
Como bien ha dicho Lepe:
Cita:
Sabiendo esa información se puede afinar un poco más. Si saber la Base de datos y el método de conexión no se puede.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#9
|
|||
|
|||
Cita:
dos personas no pueden tener el mismo dni, pero dos clientes si, me explico, uno puede ser cliente como persona fisica y no paga por ejemplo RE y el mismo puede ser profesional autonomo y si pagar RE o retenciones, con lo cual para una misma empresa si que pueden haber dos dni con distintas condiciones de venta es decir dos cliente distintos. Con lo que poner el DNI como clave primaria, no lo aconsejo. saludos. |
#10
|
||||
|
||||
Solo añadir que si puede haber dos personas con el mismo dni (busca "dnis duplicados" en google para mas información)
|
#11
|
|||
|
|||
Cita:
Saludos. |
#12
|
|||
|
|||
Mmmmm yo solo decia ...... en mi pais no se hace eso jeje y pense que en otros tampoco se hacia pero buehhh cada dia se aprende algo nuevo
__________________
Las cosas o son, o no son... |
#13
|
||||
|
||||
Bueno, veo que muchos han respondido a mi solicitud y les agradezco mucho la atención.. Como me preguntaba Lepe tengo una base de datos hecha en access 2003, y utilizo una conexión ODBC hecha con el ADOConection.
|
#14
|
||||
|
||||
¡¡Cómo se nota que ya es jueves!! ¿¿tenemos ganas de cháchara ehhhh??
Al menos se ha explicado varios puntos siempre importantes en el diseño, como ves tienes varias alternativas. Lo normal es poner un índice único sobre el campo dni, en cuanto se intente repetir el mismo dni, se mostrará una excepción y no dejará insertarlo. Si hay posibilidad de repetirse (como han comentado abajo), no pongas el índice y búscalo manualmente. Lanza una consulta TADOQUERY antes de guardar:
También puedes usar adotable1.lookUp(....); pero no recuerdo la sintaxis , consulta la ayuda. No te aconsejo usar el Locate si usas DBEdits y DBxxxx porque en caso de que se encuentre repetido, provocará un cambio de registro y normalmente eso vuelve a intentar guardar el registro por lo que obtienes un bucle infinito. Saludos.
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#15
|
|||
|
|||
Yo hago mas o menos lo que ha comentado Lepe, es comprobar si existe el dni y si es asi pregunto si se quiere o no duplicar el dni.
Saludos. |
#16
|
||||
|
||||
Cita:
Cuando bigpeter80 decía esto: Cita:
Por lo tanto en lugar de buscar si esos criterios ya existen lo lógico es colocar un índice único. Cita:
Un saludo.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#17
|
||||
|
||||
Gracias a todos por la ayuda.... Bueno al parecer el problema venia xq estoy usando DBEdits.... Hice lo que me recomendo Neftali, Luego de que cambie la conexión a Jet4 pude solucionar el problema..... Muchas gracias
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Guardar datos en Base de Datos MySQL | knnibal | Conexión con bases de datos | 6 | 23-06-2011 15:36:42 |
sugerencia para evitar clientes duplicados | Patricio | Varios | 2 | 06-11-2008 18:54:00 |
Guardar en 1 base de datos SQL, datos procedentes de 2 tablas distintas | adaypr | C++ Builder | 1 | 05-09-2006 11:56:33 |
Borrar datos duplicados | Sr.Scorpion | Conexión con bases de datos | 4 | 20-06-2005 19:52:57 |
Evitar duplicados | hectorin | Conexión con bases de datos | 2 | 29-10-2004 16:37:25 |
|