Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-10-2003
carlosmari carlosmari is offline
Miembro
 
Registrado: jul 2003
Posts: 34
Poder: 0
carlosmari Va por buen camino
Cómo desactivar el evento OnDataChange?

Hola !!


¿Cómo se hace para desactivar en un momento dado el evento OnDataChange de un DataSet?

Resulta que estoy insertando registros y en el OnDataChange de mi DataSet tengo ciertas cosas que no quiero que se estén ejecutando hasta tanto no haya terminado de insertar todos mis registros. Inmediatamente, luego de haber terminado mi proceso de inserciones, si necesito que se active.

Trabajo con D7 y dbExpress.

Gracias por la ayuda que puedan darme.
__________________
Carlos Marí
Responder Con Cita
  #2  
Antiguo 27-10-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
Puedes poner una "bandera" para indicar que en un momento dado no se debe ejecutar el evento:

Código:
var
  Actualizar: Boolean;

procedure DataSetDataChage(...);
begin
  if Actualizar then
  {
     Código del evento
  }
end;
Y poner Actualizar en false cuando requieras que no se ejecute el evento y restaurarlo a true cuando estés listo para procesar nuevamente el evento.

También puedes simplemente poner a nil el evento antes de las inserciones y reastaurarlo cuando termines:

DataSet.OnChange := nil;
...
DataSet.OnChange := DataSetChange;

// Saludos
Responder Con Cita
  #3  
Antiguo 27-10-2003
carlosmari carlosmari is offline
Miembro
 
Registrado: jul 2003
Posts: 34
Poder: 0
carlosmari Va por buen camino
Estuve probando la segunda opción y tengo problemas al compilar ...
Te cuento lo que hago:

DataSource1.OnDataChange := nil; // aquí no tengo problemas
...
...
// cuando quiero volver a activar el evento me salta un error de compilación
DataSource1.OnDataChange := DataSource1.DataSetChange;

¿Cuál es mi error? Creo haber escrito lo que tu me dijiste
('DataSet.OnChange := DataSetChange'). Lo único que cambié es OnDataChange en lugar de OnChange.
Probé varias alternativas pero sigue dándome error de compilación.

Gracias por vuestro apoyo.
__________________
Carlos Marí
Responder Con Cita
  #4  
Antiguo 27-10-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
Disculpa, me equivoqué y confundí DataSource con DataSet.

De cualquier forma lo que debes hacer es asignar a DataSource.OnDataChange el evento que durante el diseño le haya asignado, que posiblemente sea DataSourceChange.

// Saludos
Responder Con Cita
  #5  
Antiguo 27-10-2003
carlosmari carlosmari is offline
Miembro
 
Registrado: jul 2003
Posts: 34
Poder: 0
carlosmari Va por buen camino
Espectacular !!! Funcionó !!!

Mil gracias por tu ayuda.

Bendiciones para ti.
__________________
Carlos Marí
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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:38:52.


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