Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-11-2003
vetustas vetustas is offline
Miembro
 
Registrado: oct 2003
Posts: 77
Poder: 21
vetustas Va por buen camino
consulta para dni repetido

Necesito una consulta SQL que me sirva para saber si un dni que he introducido está ya en la base de datos, tengo la siguiente tabla
alumno(cod_alumno,dni_alumno,...)
lo que yo tenia era:
SELECT dni_alumno
FROM alumno
WHERE dni_alumno=:dni

el dni se lo paso en un procedimiento, y luego lo que hacia era ver si me devolvia algun resultado. El problema es que si estoy tratando con un alumno y modifico sus datos luego me dice que esta repetido al haber encontrado un resultado (el propio alumno que trato). Estaria bien añadir a la consulta una condición como por ejemplo devolver resultado solo si el código del alumno no coincide (entonces si se tratarán de alumnos distintos).

Bueno, espero una ayudita
Responder Con Cita
  #2  
Antiguo 18-11-2003
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 estoy seguro de entender pero me imagino que deseas evitar que se repitan registros con el mismo dni y al momento de guardar los cambios (sea de un nuevo registro o de uno ya existente) quieres asegurarte de que no esté ya en la base.

Pero imagino que puedes determinar, según el estado del dataset, si estas en modo de inserción o de edición de manera que al guardar los cambios tendrías que revisra el dni sólo en caso de que estes insertando un nuevo registro y omitir la verificación en caso contrario.

Por otra parte también podrías crear un índice único sobre el dni para que sea la misma base de datos la que detecte si se está insertando un registro con el mismo dni.

// Saludos
Responder Con Cita
  #3  
Antiguo 18-11-2003
vetustas vetustas is offline
Miembro
 
Registrado: oct 2003
Posts: 77
Poder: 21
vetustas Va por buen camino
Gracias por responder tan rapido y si, me referia a eso concretamente.
Me puedes decir como se hace las dos cosas que me comentas? lo de verificar el estado del dataset y lo de poner dni como indice?

Graciassss
Responder Con Cita
  #4  
Antiguo 18-11-2003
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
Cita:
vetustas comentó:
Me puedes decir como se hace las dos cosas que me comentas? lo de verificar el estado del dataset y lo de poner dni como indice?
Todo DataSet tiene la propiedad State que determina el estado del DataSet (busca en la ayuda para ver todos los posibles valores). Cuando insertas un registro State es igual a dsInsert mientras que al editarlo State es dsEdit.

En cuanto al índice depende de qué base de datos uses. Si mal no recuerdo usas IB y no conozco IB pero supongo que con los mismo con lo que creas tus bases puedes crear los índices.

// Saludos
Responder Con Cita
  #5  
Antiguo 18-11-2003
vetustas vetustas is offline
Miembro
 
Registrado: oct 2003
Posts: 77
Poder: 21
vetustas Va por buen camino
A ver si he entendido bien, tu me propones que solo verifique el dni si estoy en modo inserción y no en edición...pero que pasa si cuando están en modo edición (porque yo tengo que dejarles modificar datos) me cambian el dni y me ponen uno que ya está. Entonces haciendolo asi no me valdria no?

Cita:
En cuanto al índice depende de qué base de datos uses. Si mal no recuerdo usas IB
Pos no, uso Paradox. Y creia tener definido el campo dni como índice secundario. Pero no se si será eso a lo que te refieres

Muchas graciassss
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


La franja horaria es GMT +2. Ahora son las 01:34:43.


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