Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-11-2008
lucho1981 lucho1981 is offline
Miembro
 
Registrado: abr 2006
Ubicación: Tucuman-Argentina
Posts: 44
Poder: 0
lucho1981 Va por buen camino
Thumbs down Validar la existencia de un registro

Buenas gente. Como hago para insertar un registro y no duplicarlo?
Si trabajo con la el campo Id en auto increment como clave (con mysql y delphi 7), como hago para no ingresar dos veces a la misma persona? como tendria q validar los datos antes de cargarlos?
Responder Con Cita
  #2  
Antiguo 17-11-2008
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
que campos diferencia una persona de otra?, algun numero de identificacion
?
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #3  
Antiguo 17-11-2008
Avatar de felipe88
[felipe88] felipe88 is offline
Miembro Premium
 
Registrado: may 2007
Ubicación: Mi Valle del Cauca... Colombia!!!
Posts: 1.120
Poder: 18
felipe88 Va por buen camino
Tal vez se refiera a no registrar a la misma persona dos veces... como usa un id automático...
Responder Con Cita
  #4  
Antiguo 17-11-2008
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
Cita:
Empezado por felipe88 Ver Mensaje
Tal vez se refiera a no registrar a la misma persona dos veces... como usa un id automático...
Entendi la parte de no repetir la persona, pero te explico:

Aqui hay algo que se llama cédula de identidad, lo cual es obligatorio para toda persona mayor de 9 años de edad, es un numero unico, que sirve para identificar la persona, no se si en el pais del amigo existiria tal documento, o como se puede diferenciar, obviamente no puede ser por nombre, si lo hace por nombre el sistema solo deberia dar una advertencia que existe alguien con ese nombre...
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #5  
Antiguo 17-11-2008
Avatar de felipe88
[felipe88] felipe88 is offline
Miembro Premium
 
Registrado: may 2007
Ubicación: Mi Valle del Cauca... Colombia!!!
Posts: 1.120
Poder: 18
felipe88 Va por buen camino
Cita:
Empezado por eduarcol Ver Mensaje
Entendi la parte de no repetir la persona, pero te explico:

Aqui hay algo que se llama cédula de identidad, lo cual es obligatorio para toda persona mayor de 9 años de edad, es un numero unico, que sirve para identificar la persona, no se si en el pais del amigo existiria tal documento, o como se puede diferenciar, obviamente no puede ser por nombre, si lo hace por nombre el sistema solo deberia dar una advertencia que existe alguien con ese nombre...
claro... aca tambien lo hay... solo que el compañero lucho1981 no lo esta usando, entonces es muy dificil que pueda diferenciar a los usuarios por el simple nombre... como validar que se registre dos veces alguien llamado Juan si no se sabe si es el mismo... lo mejor lucho1981 es que uses el documento de identificacion....
Responder Con Cita
  #6  
Antiguo 17-11-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Tambien se podria usar el reconocimiento por huella digital, con un sencillo programa de escaneo que bueno con delphi es simplisimo.
O bien usar el reconocimiento por voz, eso si es mas complicado ya que se necesita instalar un microfono en el ordenador.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #7  
Antiguo 17-11-2008
Avatar de felipe88
[felipe88] felipe88 is offline
Miembro Premium
 
Registrado: may 2007
Ubicación: Mi Valle del Cauca... Colombia!!!
Posts: 1.120
Poder: 18
felipe88 Va por buen camino
Cita:
Empezado por Caral Ver Mensaje
Hola
Tambien se podria usar el reconocimiento por huella digital, con un sencillo programa de escaneo que bueno con delphi es simplisimo.
O bien usar el reconocimiento por voz, eso si es mas complicado ya que se necesita instalar un microfono en el ordenador.
Saludos
Te falto el del iris
Responder Con Cita
  #8  
Antiguo 17-11-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Cita:
Empezado por felipe88 Ver Mensaje
Te falto el del iris
Vamos hombre, ya sabemos que el del iris es para avanzados y no es código abierto.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #9  
Antiguo 17-11-2008
Avatar de felipe88
[felipe88] felipe88 is offline
Miembro Premium
 
Registrado: may 2007
Ubicación: Mi Valle del Cauca... Colombia!!!
Posts: 1.120
Poder: 18
felipe88 Va por buen camino
Cita:
Empezado por Caral Ver Mensaje
Hola

Vamos hombre, ya sabemos que el del iris es para avanzados y no es código abierto.
Saludos
Pues mira que no parece estar ni tan lejos
http://www.freedownloadmanager.org/e...dows)_54666_p/ dice que funciona con Delphi7 ... quien sabe
Responder Con Cita
  #10  
Antiguo 17-11-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Ya me quitaron el invento.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #11  
Antiguo 18-11-2008
lucho1981 lucho1981 is offline
Miembro
 
Registrado: abr 2006
Ubicación: Tucuman-Argentina
Posts: 44
Poder: 0
lucho1981 Va por buen camino
Exclamation Gracias

Cita:
Empezado por eduarcol Ver Mensaje
que campos diferencia una persona de otra?, algun numero de identificacion
?
Si, el dni diferenciaria a una persona de otra. Pero q pasaria si intento cargar por error a la misma persona? ya sea con el mismo dni. Hay algun forma de preguntar si existe ese dni? o poner 2 campos clave?
Responder Con Cita
  #12  
Antiguo 18-11-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Si ya tienes una clave primaria, pon un índice único al dni, así no permitirá duplicados y lanzará un error desde la base de datos. Después ya puedes capturar el error en delphi, bien con el ApplicationEvents o con un try.. except al guardar.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #13  
Antiguo 18-11-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.278
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por lucho1981 Ver Mensaje
Como hago para insertar un registro y no duplicarlo?
Si trabajo con la el campo Id en auto increment como clave (con mysql y delphi 7), como hago para no ingresar dos veces a la misma persona?
A parte de la clave primaria, existen índices únicos que puedes asignar a otros campos o grupos de ellos. Por ejemplo, aunque el ID sea clave primaria, el DNI (por poner un ejemplo) puede tener índice único.
__________________
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.
Responder Con Cita
  #14  
Antiguo 18-11-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
parece que en este foro hay eeeeecoooo... eeecoooo... eeecoooooo
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #15  
Antiguo 18-11-2008
Avatar de felipe88
[felipe88] felipe88 is offline
Miembro Premium
 
Registrado: may 2007
Ubicación: Mi Valle del Cauca... Colombia!!!
Posts: 1.120
Poder: 18
felipe88 Va por buen camino
Cita:
Empezado por Lepe Ver Mensaje
parece que en este foro hay eeeeecoooo... eeecoooo... eeecoooooo
... pero quien deberia escucharlo no lo hace ...
Responder Con Cita
  #16  
Antiguo 18-11-2008
lucho1981 lucho1981 is offline
Miembro
 
Registrado: abr 2006
Ubicación: Tucuman-Argentina
Posts: 44
Poder: 0
lucho1981 Va por buen camino
Talking Gracias lepe

Cita:
Empezado por Lepe Ver Mensaje
Si ya tienes una clave primaria, pon un índice único al dni, así no permitirá duplicados y lanzará un error desde la base de datos. Después ya puedes capturar el error en delphi, bien con el ApplicationEvents o con un try.. except al guardar.

Saludos
Tengo el dni como indice unico en mysql, y cuando intento duplicarlo me salta un error y se cierra el programa. Lo q no se, es como lanzar el error desde la base de datos y capturar el error. Me podrias explicar como? Desde ya muchas gracias.
Responder Con Cita
  #17  
Antiguo 18-11-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.278
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Activa el Check para que "salten" las excepciones desde el IDE y a ver en qué línea está fallando. Y qué se hace luego. No es normal que por un error de este tipo se cierre el programa.

Tools/Debugger options/Language exceptions/Stop on Delphi exceptions
(Actícvalo)
__________________
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.
Responder Con Cita
  #18  
Antiguo 18-11-2008
lucho1981 lucho1981 is offline
Miembro
 
Registrado: abr 2006
Ubicación: Tucuman-Argentina
Posts: 44
Poder: 0
lucho1981 Va por buen camino
Thumbs down

Cita:
Empezado por Neftali Ver Mensaje
Activa el Check para que "salten" las excepciones desde el IDE y a ver en qué línea está fallando. Y qué se hace luego. No es normal que por un error de este tipo se cierre el programa.

Tools/Debugger options/Language exceptions/Stop on Delphi exceptions
(Actícvalo)
Tengo activado el Stop on Delphi, me explique mal anteriormente. Lo unico q puedo hacer una vez q quedo en STOP es apretar ctrl+F2 (seguro q solo puedo hacer eso por mi ignorancia), y asi salir de la ejecución.
Este el el error q me devuelve delphi.


Este es el codigo q utilizo para cargar el registro. En que deberia modificarlo?
Código Delphi [-]
if ((ap.text='')or(nom.text='')or(dni.text='')or
            (dir.text='')or(Maskedit1.text='')or(acceso.text='')) then
            begin
            application.messagebox('debe ingresar todos los datos','ERROR',0);
            end
  else
      begin
              with DM.QsinUSER do
                begin
                    ParamByName('pap').Value := ap.Text;
                    ParamByName('pnom').Value := nom.Text;
                    ParamByName('pdni').Value := dni.Text;
                    ParamByName ('ptel').Value := Maskedit1.Text;
                    ParamByName ('pdir').Value := dir.Text;
                    ParamByName ('pacceso').Value := acceso.Text;
                    ExecSQL;
                    Application.MessageBox('Los datos fueron cargados correctamente','Mensaje',0) 
                end;

  DM.tusuarios.Close;
  DM.tusuarios.Open;

  dni.Text :='';
  ap.Text := '';
  nom.Text := '';
  Maskedit1.Text := '';
  dir.Text := '';
  acceso.Text := '';

  ap.SetFocus;
  end;
Gracias
Responder Con Cita
  #19  
Antiguo 18-11-2008
Avatar de felipe88
[felipe88] felipe88 is offline
Miembro Premium
 
Registrado: may 2007
Ubicación: Mi Valle del Cauca... Colombia!!!
Posts: 1.120
Poder: 18
felipe88 Va por buen camino
Añade esto...

Código Delphi [-]
if ((ap.text='')or(nom.text='')or(dni.text='')or
            (dir.text='')or(Maskedit1.text='')or(acceso.text='')) then
            begin
            application.messagebox('debe ingresar todos los datos','ERROR',0);
            end
  else
      begin
          try //----
              with DM.QsinUSER do
                begin
                    ParamByName('pap').Value := ap.Text;
                    ParamByName('pnom').Value := nom.Text;
                    ParamByName('pdni').Value := dni.Text;
                    ParamByName ('ptel').Value := Maskedit1.Text;
                    ParamByName ('pdir').Value := dir.Text;
                    ParamByName ('pacceso').Value := acceso.Text;
                    ExecSQL;
                    Application.MessageBox('Los datos fueron cargados correctamente','Mensaje',0) 
                end;
         except raise exception.create('No se pudo guardar el registro'); //----
         end; //----

  DM.tusuarios.Close;
  DM.tusuarios.Open;

  dni.Text :='';
  ap.Text := '';
  nom.Text := '';
  Maskedit1.Text := '';
  dir.Text := '';
  acceso.Text := '';

  ap.SetFocus;
  end;
Responder Con Cita
  #20  
Antiguo 18-11-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Con esa ventana de excepción, puedes pulsar OK y después F9 para que salte de verdad la excepción, después aceptas la ventana y sigues ejecutando tu programa normalmente.

Obviamente al mostrarse una excepción no ha grabado el registro, de eso se trata. O ejecutas el programa fuera del IDE o desactiva la captura de excepciones: tool -> debugger -> language exception -> stop on delphi exception.

Ahora modifica tu codigo y ejecuta esto:
Código Delphi [-]
try 
   ExecSQL;
except
  ShowMessage('uuuuyyssss');
end;

En realidad deberías capturar qué error está dando.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
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
Validar registro antes de insertar Moparova SQL 10 30-10-2008 16:11:42
Eliminar Registro (Validar) UTECYBER OOP 8 29-10-2008 18:15:13
validar registro jefferson Internet 1 23-10-2008 20:41:22
Validar la existencia de una tabla sidneyb Conexión con bases de datos 2 22-11-2007 15:00:11
Validar la existencia de una carpeta en un equipo de la red... jaderl API de Windows 1 15-10-2005 16:16:22


La franja horaria es GMT +2. Ahora son las 20:36:11.


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