Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-01-2009
Lizette Lizette is offline
Miembro
 
Registrado: jun 2008
Posts: 98
Poder: 16
Lizette Va por buen camino
Evitar duplicar el nombre y apellido de una persona

Hola, en mi aplicación tengo un edit para ingresar el nombre o nombres del cliente y otro para los apellidos, pero tengo problemas a la hora de registrar un nuevo cliente utilizando la función Locate, hago uso de banderas, si encuentra el nombre q puse en el edit, la ban:=1, se pasa al edit de apellido si el apellido lo encuentra ban1:=1, si las dos banderas son 1, me dice que el cliente ya esta registrado..

Pero si en la base de datos tengo registrado a Cynthia Elizabeth Benavides García y si ingreso en el edit de nombre Cynthia Fabiola y en el edit de apellidos Benavides López, me dice que el cliente esta registrado.

Es decir, sólo me toma el primer nombre y el primer apellido.. Alguna idea de como validar esto? Gracias
Responder Con Cita
  #2  
Antiguo 29-01-2009
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
En las opciones de la función Locate, debes quitar "loPartialCompare", de esta forma quedaría así ...Locate('nombre del cliente', 'nombre_campo', [loCaseInsensitive]

Saludos.
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #3  
Antiguo 29-01-2009
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Conviene que digas que motor estás utilizando, en cualquier caso yo apuesto por una clave única compuesta de ambos así será el propio motor el que rechace los duplicados.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #4  
Antiguo 29-01-2009
Lizette Lizette is offline
Miembro
 
Registrado: jun 2008
Posts: 98
Poder: 16
Lizette Va por buen camino
Estoy utilizando mysql, el caso esk como llave primaria tengo una clave que la genera el sistema, utilizando el numero de registros que se tienen dados de alta.. Pero seria conveniente no tener a dos personas con el mismo nombre..
Responder Con Cita
  #5  
Antiguo 29-01-2009
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
No entiendo bien cómo estás haciendo la búsqueda. ¿Qué pones en el locate? Por otro lado, en tu base ¿tienes un campo para apellidos y otro para nombre o es un sólo campo para el nombre completo?

// Saludos
Responder Con Cita
  #6  
Antiguo 30-01-2009
Lizette Lizette is offline
Miembro
 
Registrado: jun 2008
Posts: 98
Poder: 16
Lizette Va por buen camino
Gracias lo puede resolver con el Locate como me dijo D&W , el problema esque tenía mal una desición..

Gracias Roman, estaba a punto de mandarte el código cuando vi mi error.. Gracias de todos modos..

Saludos
Responder Con Cita
  #7  
Antiguo 30-01-2009
cmm07 cmm07 is offline
Miembro
 
Registrado: nov 2007
Posts: 526
Poder: 17
cmm07 Va por buen camino
te recomiendo hacer eso con instruccion mySQL, aparte si no quires que se duplique ¿por que no creastes esos campos con la opcion de "Unique"(creo que es asi, ya que me traslade a sql xD)..?
Responder Con Cita
  #8  
Antiguo 30-01-2009
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
Me parece que estamos ante un caso de un mal diseño de la tabla. Recordemos Lizette que las tablas se deben diseñar ANTES de pensar siquiera en que lenguaje vamos a programar. En el caso de una tabla de clientes (ignoro si es para una facturación o algo así y si eres de México) normalmente se utiliza ua clave artificial (como es tu caso) o bien se utiliza alguna que ya exista como por ejemplo un RFC (o nIF en otros lados) que es un poco más seguro, aunque no infalible. En todo caso lo que pretendes hacer es correcto pero entonces tienes que crear un indice compuesto que integre los campos NOMBRE y APELLIDO (o los que corrspondan) y le pones el atributo unique, de esta forma el motor no te aceptará registros que tengan los mismos datos en esos campos y en tu aplicación ya no tienes que hacer esa operación.

De todos modos vas a tener estos problemitas:
Que pasa si dos clientes se llaman exactamente igual (JUAN PEREZ) por ejemplo. El sistema solo te va a aceptar a uno y el otro lo tomará como que es distinto. Por otro lado, si lo dejamos un poco más libre, te aceptará a ambos y podría alguien dar de alta varias veces a un mismo cliente por error.

Yo te recomiendo que incluyas algún valor único como el RFC o CURP para evitar que capturen 2 veces un mismo cliente, esto independientemente del número que te genera el sistema.
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
abogado y una buena persona? marcoszorrilla Humor 1 17-01-2007 02:01:22
Juntar nombre y apellido en un Campo Lookup serhasae Varios 4 26-04-2006 22:32:12
indice apellido+nombre joanajj Conexión con bases de datos 6 25-04-2006 17:49:34
Algo interesante Evitar el mismo nombre en un registro carlosmoralesm Conexión con bases de datos 6 05-06-2004 22:14:31
Ordenar consulta por apellido y nombre gqxns SQL 2 30-01-2004 19:19:12


La franja horaria es GMT +2. Ahora son las 02:48:41.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi