Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   No repetir datos en una columna (https://www.clubdelphi.com/foros/showthread.php?t=30908)

edusus 23-04-2006 12:30:10

No repetir datos en una columna
 
Hola amigos,
¿Podríais decirme como puedo hacer para que cuando por ejemplo en la columna (nombres de una BD) no se introduzca el dato si ya existe el mismo nombre en otro campo de la misma columna?
Gracias por adelantado.

Lepe 23-04-2006 12:51:26

En teoría, antes de guardar (hacer el post), usas TTable.Lookup para buscar ese texto en toda la tabla.

Código Delphi [-]
var
  ExisteTarifas: Variant;
begin
    ExisteTarifas := tblTarifas.Lookup('FidCliente', TblClientesIdCliente.AsString,
      'FidCliente');
    if not (vartype(ExisteTarifas) in [varnull]) then
      //si  existen tarifas preguntar borrado

En la práctica es una lata, ya que pueden poner una letra de más o de menos, y entonces la búsqueda no sirve de nada.

Algo que no se recomienda, podría ser un "Autocompleta" en el nombre, así, conforme va escribiendo el usuario, ya sabe los que existen y pone cuidado en no repertirlo.

Osorio 23-04-2006 18:07:57

puede ser un indice tambien
 
Otra alternativa es crearle un indice unico al campo en mencion. asi al insertar otro igual, se dispara una excepcion.

Aunque como dice lepe, queda abierta la posibilidad de que agueguen o cambien una letra.

Depende tambien con que grado de restriccion quieres que no se repitan los datos.

Saludos...

edusus 23-04-2006 18:24:51

problema concreto
 
En el programa donde tengo el problema me pasa lo siguiente.
Cuando yo abro una ficha de un paciente, su nombre y otros datos se añaden creando un registro en una base de datos pero en la ejecución del programa hay momentos en que tengo que volver a abrir la ficha del paciente cuyos datos ya están en la base de datos pero me crea un nuevo registro repetido, por eso quiero la forma de lograr que cuando ya esté el nombre de ese paciente no me vuelva a crear un registro nuevo.
Gracias por ayudarme.


La franja horaria es GMT +2. Ahora son las 08:29:48.

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