![]() |
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:
|
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.
|
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í
|
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. |
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
|
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. |
Cita:
// Saludos |
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. |
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 |
De acuerdo, pero referente a la clave yo me estoy refiriendo a la clave de acceso, y puede haber 2 usuarios que por un casual tengan la misma clave.
Un usuario solamente puede darse de alta una vez pero su clave de acceso es la que el elija. Campo Usuario Texto 20 por ejemplo, este es el que yo pongo clave única. Clave de accesso, la que el quiera pero la codifico. Los usuarios los da de alta el administrador, por lo tanto no hay ni claves ni usuarios que los dé de alta el sistema automáticamente. Luego al usuario se le permite cambiar su nombre si no le gusta, siempre y cuando que el que elija no exista, en cuanto a la clave de acceso, como dije anteriormente es la que el crea oportuna exista o no. Un Saludo. |
[Error] uNuevoMiembro.pas(54): Too many actual parameters
:( :( :( |
¿Qué? ¿Quieres que le hagamos de compilador?
¡Cierra el paréntesis de VarArrayOf! // Saludos |
Cita:
|
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). |
Código:
('Nombre;Apellidos', VarArrayOf([UpperCase(Nombre), UpperCase(Apellidos)],[]) |
Cita:
Muchísimas gracias Román, por tener la paciencia suficiente y de paso enseñarme a contar :o :D :D :D |
Y a Neftali también!!, que se me pasaba, jeje ;) .
Marcos, tu solución no me valía, pues Nombre y Apellidos son campos separados, y no me importa que Nombre o Apellidos estén repetidos mientras no sea juntos ;) , aún así, gracias por la sugerencia. |
Cita:
Un Saludo. |
Mmmm.... bueno, pues sí, pero yo creía que te referías a crear un Índice Único para el campo :p
|
La franja horaria es GMT +2. Ahora son las 04:27:58. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi