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 02-12-2009
cocute cocute is offline
Miembro
 
Registrado: nov 2008
Posts: 403
Poder: 16
cocute Va por buen camino
Busqueda constante en tabla con un Ttimer

Hola, soy un poco novato en el tema, bueno más que novato es que llevo mucho tiempo desconectado del tema de bases de datos.
Pues eso, uso una tabla (TKbmMemTable) que tengo en un DBgrid,
y tengo en un Ttimer una función que recorre la tabla cada segundo para ver si coincide el campo fecha y hora con la fecha hora actual.
El problema, es que al estar el timer activo la tabla no es editable ya que al recorrerla se va cambiando de campos.
Cual creeis que seria la forma correcta de hacer esto para que no me ocurra este problema.

Solo se me ocurre crear otra tabla con el mismo contenido y cargarlo en la otra si lo modifico.

Última edición por cocute fecha: 02-12-2009 a las 13:46:01.
Responder Con Cita
  #2  
Antiguo 02-12-2009
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 913
Poder: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Podrias usar 2 TKbmMemTable.

TKbmMemTable 1: Asociada al Grid permitiendo edicion, insercion, eliminacion.
TKbmMemTable 2: Se recorre segun indique el ttimer para buscar las coincidencias de fecha y hora.

Por supuesto ambos TKbmMemTable apuntando al mismo archivo de datos.

Lo de crear una segunda tabla y copiar datos creo que estaria de mas.

Saludos...
Responder Con Cita
  #3  
Antiguo 02-12-2009
cocute cocute is offline
Miembro
 
Registrado: nov 2008
Posts: 403
Poder: 16
cocute Va por buen camino
Ok gracias ya lo he hecho y funciona perfectamente,

otra pequeña duda, como deberia comprobar si un campo de tipo boolean esta a TRUE?, he probado esto pero no funciona

if kbmemetable1.Fields.FieldByName('Activado') then ....
if kbmemetable1.Fields.FieldByName('Activado').checked then ....
if kbmemetable1.Fields.FieldByName('Activado').text='True' then ....

no doy con la forma adecuada


gracias
Responder Con Cita
  #4  
Antiguo 02-12-2009
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 913
Poder: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Esta seria la forma correcta...
Código:
//if kbmemetable1.FieldByName('Activado') then ....

//Forma correcta...
if kbmemetable1.FieldByName('Activado').AsBoolean then ....
Saludos
Responder Con Cita
  #5  
Antiguo 02-12-2009
gerardus gerardus is offline
Miembro
 
Registrado: dic 2007
Posts: 43
Poder: 0
gerardus Va por buen camino
Hola, no se que estas intentando hacer exactamente, pero esto de recorrer la tabla cada segundo para comprobar un campo me parece muy ineficiente.
Si hay suficientes registros, se te va a "congelar" la aplicación, por rápida que sea la TkbmMemTable.
Por qué no usas un evento AfterPost de la tabla para saber cuando se ha guardado un registro y entonces miras el valor del campo que te interesa?

Cordialmente,

Gerard.

Última edición por gerardus fecha: 02-12-2009 a las 18:12:26.
Responder Con Cita
  #6  
Antiguo 02-12-2009
cocute cocute is offline
Miembro
 
Registrado: nov 2008
Posts: 403
Poder: 16
cocute Va por buen camino
Cita:
Empezado por gerardus Ver Mensaje
Hola, no se que estas intentando hacer exactamente, pero esto de recorrer la tabla cada segundo para comprobar un campo me parece muy ineficiente.
Si hay suficientes registros, se te va a "congelar" la aplicación, por rápida que sea la TkbmMemTable.
Por qué no usas un evento AfterPost de la tabla para saber cuando se ha guardado un registro y entonces miras el valor del campo que te interesa?

Cordialmente,

Gerard.
Aunque no es propiamente eso, lo que necesito es digamos un programador de tareas.
Como ya he puesto lo que quiero es que cuando la fecha y hora que esta dentro de un campo coincida con la fecha y hora actual pues haga una acción con los datos de esa ficha.
Al necesitar que coincidan hasta los segundos solo se me ocurre comprobarlo cada segundo con un timer.
Lo que tambien tengo duda es de si no le diese tiempo en un segundo a realizar la busqueda en las fichas si se saltaria alguna vez alguna tarea.
No se si existe otra forma de hacer esto, seguramente que si, pero no se me ocurre.

Última edición por cocute fecha: 02-12-2009 a las 18:58:46.
Responder Con Cita
  #7  
Antiguo 02-12-2009
cocute cocute is offline
Miembro
 
Registrado: nov 2008
Posts: 403
Poder: 16
cocute Va por buen camino
Cita:
Empezado por cloayza Ver Mensaje
//Forma correcta...
if kbmemetable1.FieldByName('Activado').AsBoolean then ....
muchas gracias, todo OK

Última edición por cocute fecha: 02-12-2009 a las 18:23:33.
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
Busqueda en Tabla Filtrada don malo Conexión con bases de datos 9 04-07-2007 20:54:53
Ayuda con la busqueda en una tabla mjjj Conexión con bases de datos 5 02-04-2007 23:48:12
Búsqueda de datos en una tabla Tonio Conexión con bases de datos 2 22-05-2004 00:06:45
Tabla de búsqueda silviodp Conexión con bases de datos 21 27-02-2004 01:17:07
Tabla de Búsqueda silviodp Varios 3 02-10-2003 21:09:53


La franja horaria es GMT +2. Ahora son las 08:33:35.


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