FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Averiguar si la combinación de dos campos está en uso
¡Hola!. Estoy corrigiendo fallos en una aplicación de bases de datos que he hecho, en la cual, al intentar dar un usuario de alta, comprueba si el usuario ya existe o no, y si existe devuelve error y aborta.
El problema es que he usado Locate en los dos campos, por lo tanto si introduzco PEPE GONZALEZ, al escribir GONZALEZ PEPE me suelta también error... ¿Cómo podría evitar eso?. Pongo aquí el código que uso:
__________________
:) |
#2
|
||||
|
||||
Puesto que quieres que funcione con los parámetros cambiados, sólo se me ocurre que hagas la llamada dos veces consecutivas (la segunda sólo si la primera ha fallado) para comprobar ambas posibilidades.
__________________
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. |
#3
|
|||
|
|||
El problema es que estás buscando en toda la tabla en las dos búsquedas, me explico, primero buscas si existe algún PEPE, y después si existe algún GONZALEZ, entonces si existe algún PEPE MARTINEZ y ANTONIO GONZALEZ, te va a dar error.
La función locate puede encontrar un registro con varios campos de búsqueda, algo así
|
#4
|
||||
|
||||
Mejor solución sería dejar que trabaje el motor de la base de datos, creando un indice único por los dos campos.
Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
#5
|
||||
|
||||
Bueno, el programa ya está terminado y ya solo queda arreglar bugs... Basti, me encantaría que me explicaras más a fondo tu planteamiento... por favor
__________________
:) |
#6
|
||||
|
||||
Lo que quiere decirte Basti es que una cosa es buscar por dos campos a la vez, justo el ejemplo que él presenta y que ha de funcionarte y otra lo que haces tú.
Primero buscas un campo y despues el otro ambos en toda la tabla, por lo que la única garantía que tienes es que se apellida igual, pero no sabes si el nombre es el tecleado o no. Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
#7
|
||||
|
||||
Cita:
// Saludos |
#8
|
||||
|
||||
Yo utilizo un nombre de usuario con clave única y además los usuarios solamente los da de alta el administrador, que también puede modificar el nombre y algunas veces también permito que los mismos usuarios se cambien su nombre y su clave, pero nunca que den de alta a nuevos usuarios esto solamente lo hace el administrador.
Como utilizo un solo campo para identificarlo y este es clave única, no se pueden repetir. Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
#9
|
||||
|
||||
Pero si te entiendo bien Marcos, de la manera que tú dices evitas, desde luego, que dos usuarios tengan la misma clave pero si esta clave la asigna tu sistema (o dicho de otra forma, si esta clave es "artificial") aún tienes muchas posibilidades de ingresar al mismo usuario con dos claves distintas. Yo más bien tenía en mente usar (aunque no como llave primaria, sí como clave única) un campo del estilo del SSN gringo (no sé en España cúal usen pero seguro que hay uno identificador único ¿no?).
// Saludos |
#10
|
||||
|
||||
[Error] uNuevoMiembro.pas(54): Too many actual parameters
__________________
:) |
#11
|
||||
|
||||
¿Qué? ¿Quieres que le hagamos de compilador?
¡Cierra el paréntesis de VarArrayOf! // Saludos |
#12
|
||||
|
||||
Cita:
__________________
:) |
#13
|
||||
|
||||
Código:
('Nombre;Apellidos', VarArrayOf([UpperCase(Nombre), UpperCase(Apellidos)],[]) 1 2 3 3 4 4 1 |
#14
|
||||
|
||||
Cita:
El hecho de que el compilador te de el error entre los corchetes simplemente es pq se piensa que son un argumento de VarArrayOf (debido a que te falta el paréntesis).
__________________
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. |
|
|
|