FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Como validar con una DBgrid...
Saludos
disculpen, alguien ha tenido que hacer una validacion de un campo, es decir, tengo una tabla llamada etiquetas con un campo Estado definido como Char(1); donde solo admite dos valores T y A. cuando se da de alta un registro, esta en estado T y cuando ya estan acompletados los datos despues de haber pasado por varios porcesos a evaluar en las areas involucradas se da por echo una Afirmacion = A me solicitan que cuando ya este en estado A ya no se pueda modificar cierto registro, ni siquera en los componentes dbedit, todos los datos a ver estan en la misma forma: ya sea en una dbGrid y en Dbedit. bueno realize un procediento que cada vez que navege entre los registro evalue el ESTADO pero como seria ahora cuando este posicionado sobre la BDgrid que de igual forma se puede navegar entre registros. Procedure TfrmEtiquetas.Selecionar; var Estado : boolean; begin If BD.ibEtiquetasESTADO.Value='A' then begin Estado := False; acModificar.Enabled := Estado; end este proc. esta en cada boton personalizado para navegar < > entre registro. gracias. |
#2
|
||||
|
||||
En lugar de abarcar todas las posibles formas de navegar por los registros utiliza el evento AfterScroll del dataset para determinar si el registro actual es o no modificable.
Y para mayor seguridad podrías usar el evento BeforePost del dataset para impedir que se modifique un registro con Estado = 'A'. // Saludos |
#3
|
|||
|
|||
saludos,
a que se refiere a que sea el regitsro actual modificable o no dentro del evento AfterScroll del dataset. que desde ahi comprueba si tiene el estado A o T ? e incluir la unidad de la forma al modulo de datos para que desde ahi valide el estado, alguna opinion. gracias. |
#4
|
||||
|
||||
El evento AfterScroll se lanza cada vez que te mueves de registro,ya sea por código, con un DBNavigator o con un DBGrid. Por ello, en lugar de implementar una revisión del estado para cada posible método de navegación, usas este evento. Cuando el evento se lance bastará que examines el campo ESTADO para habilitar o inhabilitar tus controles.
// Saludos |
#5
|
|||
|
|||
saludos,
les comento que con las indicaciones de validar en el evento onAfterscroll de dataset me sirvio, nadamas tengo una duda de que me da un error. realize un procedimiento para los controles que cambiara la propiedad ReadOnly a True,
el segundo procediento en el Modulo de datos: en
Si agrego estadoEtiq me da un errror de acess violation at adress 009ee93b in modulo ventas.exe read or adress ffffffff cuando voy al menu de etiquetas; esto es lo raro si la agrego me da error y despues tengo que volver al menu y entrar a etiquetas. Que puediera ser, alguna razon gracias Última edición por roman fecha: 14-04-2005 a las 22:16:29. |
#6
|
||||
|
||||
Cita:
Para empezar yo no usaría RTTI a no ser que fuera absolutamente necesario e imposible hacerlo de otra forma. Si no se domina, las probabilidades de encontrarse un "Access Violation" son altísimas ya que se hace un uso fuera de lo común (en Delphi) de apuntadores. Por ejemplo, tu haces la verificación
La primera parte de la condición ciertamente te garantiza que PropInfo no es nil pero en la segunda parte no sólo referencias PropInfo sino que vas hasta PropInfo^.PropType^.Kind. ¿Quién te garantiza que PropInfo^.PropType no es nil? Y como te decía, ¿realmente te es necesario usar RTTI? // Saludos |
#7
|
||||
|
||||
Seguramente no ha sido creada la forma la primera vez que se ejecuta el código. Bastaría añadir un IF al método EstadoEtiq para verificar que la variable frmEtiquetas no sea nil.
En particular, este tipo de manipulación de componenetes visuales, y principalmente para evitar las referencias en el módulo de datos a formas, yo me valgo del evento OnDataChange del DataSource. Hasta luego. Hasta luego;
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
|
|
|