FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Algo interesante Evitar el mismo nombre de un registro
estoy haciendo una pantalla de actualizacion de dispositivos tipo ABC
pero cuando edito un registro no puede tener el mismo nombre de dispositivo que otro entonces cuando doy de alta checo que el record count no sea mayor que 0 pero cuando edito uno existente y repito el nombre aproposito antes de guardarlo ya se que hay uno como puedo hacer para que no se incluya el mismo en caso de que la condicion diga que es >1
Gracias de Antemano Última edición por roman fecha: 05-06-2004 a las 04:40:16. Razón: formato de código |
#2
|
||||
|
||||
Creo que estás optando por un método demasiado rebuscado. Si requieres que el nombre de dispositivo no se repita puedes simplemente establecer un índice único (índice sin duplicados) sobre dicho campo y manejar el evento OnPostError:
Este evento se disparará si se repite el nombre de dispositivo tanto si es por una inserción como por una edición. Únicamente tendrías que fijarte en el evento si el error realmente se debe a eso o bien a otra cosa. // Saludos |
#3
|
||||
|
||||
Cita:
El evento OnPostError puede generarse por varias razones; una de ellas es la repetición de un campo con índice único, pero puede haber otras, por ejemplo, que no se proporcione valor para un campo requerido. En general, el evento se puede generar por cualquier cosa que contravenga a las restricciones impuestas en la estructura de la tabla. Por ello es que debes determinar qué tipo de error es el que generó el evento y actuar de acuerdo a ello. Para determinar el error debes hacer uso del parámetro E del evento. Este parámetro es un objeto excepción. Qué clase de objeto sea dependerá de la forma en que accedas a la base de datos. En tu caso, dado que accedes por medio del BDE, E será de clase EDBEngineError por lo que debes hacer un moldeo de tipos y usar la propiedad Error del objeto para determinar el tipo de error. Un ejemplo sencillo:
Si el error que genera el evento no es ninguno de los especificados entonces el parámetro Action seguirá con su valor por defecto que es daFail que ocasionará que aparezca el mensaje por defecto para ese error. Las constantes eKeyViol, eRequiredFieldMissing tienes que definirlas tú. Puedes consultar este hilo para más detalles de esto último. // Saludos |
#4
|
||||
|
||||
Hola a todos
Cita:
En concreto, la de clave duplicada sería DBIERR_KEYVIOL Espero que te seriva |
#5
|
||||
|
||||
Cita:
Gracias por la info. |
#6
|
||||
|
||||
Cita:
Este archivo lo tenéis en la carpeta ..\Borland\DelphiX\Doc donde DelphiX es la versión de Delphi no superior a la 6
__________________
Si no tienes algo que decir más importante que el silencio, cállate Última edición por cbrrr fecha: 05-06-2004 a las 09:31:59. |
#7
|
|||
|
|||
Tienes Razon Roman te agradezco el consejo ya lo arregle con un try y exception y con eso me quite el problema ya que si lo etaba haciendo de una forma rebuscada y mal analizada
Try customform.Formcustom.wwTableD.ApplyUpdates; customform.Formcustom.wwTableD.Refresh; Except customform.Formcustom.wwTableD.CancelUpdates; customform.Formcustom.wwTableD.RevertRecord; //showmessage('ya existe un dispositivo con este nombre'); Abort; End; Gracias A todos Última edición por carlosmoralesm fecha: 05-06-2004 a las 22:21:20. Razón: agregar codigo |
|
|
|