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 14-08-2005
mangk mangk is offline
Registrado
 
Registrado: ago 2005
Posts: 5
Poder: 0
mangk Va por buen camino
oncalcfield y filter con access

Hola, tengo una base de datos Access y necesito calcular unos campos en base a la misma tabla sumando un campo desde el primer registro hasta el actual dependiendo de otros campos, una especie de acumulador.
El tema es que con el evento oncalcfield tarda bastante en actualizar la tabla, he probado de cambiar el cache y otras propiedades de la tabla , y no he conseguido mejora, la tabla tiene apenas 200 registros y la utilizo mediante los componentes ADO de delphi.
El proceso de calculo lo hago recorriendo la tabla desde el principo hasta el registro en el que esta posicionando, usando otro dataset referenciando a la misma tabla.

Por otro lado cuando establezco la condicion de filter de una tabla si pongo expresiones que utilicen el mismo campo 2 veces y/o el operador "or" cuando ejecuto la aplicacion me da un error. (ej : "a=100 or a =200"). A alguien le ha pasado?, Esto me fuerza a utilizar el evento OnFilterRecord y es muchiiiisimo mas lento que el filter que se evalua antes de devolver los registros a Delphi.



Gracias por cualquier consejo o sugerencia.
Responder Con Cita
  #2  
Antiguo 14-08-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos

Recorrer la tabla es un procedimiento que consume recursos, lo recomendable es utilizar sentencias SQL para obtener sumatorias de un campo o contar la cantidad de registros y el resultado de esto desplagado en algun edit
Utiliza AdoQuery o AdoDataset, personalmente creo que es mejor
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #3  
Antiguo 15-08-2005
MasterXP MasterXP is offline
Miembro
 
Registrado: ene 2005
Posts: 193
Poder: 20
MasterXP Va por buen camino
Yo pienso lo mismo que el compañero vtdeleon.
si fuera tu hiciera lo siguiente:

Pusiera un ADOQuery, le modificas la propiedad conection (en modo Design).
ya en Runtime, haces lo siguiente:
Código Delphi [-]
 
//Hacer la consulta
With Adoquery1 DO
Begin
Close;
Adoquery1.SQL.Clear;
Adoquery1.SQL.Add('Select Sum(Campo_a_Sumar) Where A=100 or A=200');
Open;
end;
 
//Aginar el resultado de la consulta a un Edit
Edit1.text:=Adoquery1.field.Field[0].asString;


salu2.

Última edición por MasterXP fecha: 15-08-2005 a las 00:29:33.
Responder Con Cita
  #4  
Antiguo 17-08-2005
mangk mangk is offline
Registrado
 
Registrado: ago 2005
Posts: 5
Poder: 0
mangk Va por buen camino
Gracias, usando ADOQuery mejoro bastante los tiempos, no es una maravilla pero esta mucho mejor.
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 21:21:44.


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