Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

optimizar ADOQuery

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Bases de Datos
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: optimizar ADOQuery Responder citando

Hola compañeros,
Estoy realizando una aplicación basada en una base de datos SQL-Server Express. Para ello utilizo DBGrids con un ADOQuery de datasource para mostrar los datos.
La aplicación funciona correctamente el problema es que tarda mucho en cargar los datos y mirando el administrador de tareas he visto que me chupa toda la CPU.

Alguien sabe a que se debe esto y como puedo optimizar el rendimiento de la aplicación???

Grácias.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Otro dato más!!!! Responder citando

Estoy realizando la carga de datos en el formshow, puede ser este el problema???
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

No creo que influya el hecho de estar en el FormShow, peor por si acaso te aconsejaría que probaras poniendo un botón y ejecutándolo en el OnClick.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Solucionado!!!! Responder citando

El problema es que estaba ejecutando una función en cada inserción en el DBGrid que funcionaba bién.... Ahora me va rápido!!!!

El problema que tengo ahora es que no se como controlar el ancho de las columnas en un TDBGrid!!! Hay alguna manera de poner el width de las columnas de antemano???


Grácias
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Verifica este enlace

Saludos!!
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Rendimiento muy bajo Responder citando

Hola Cesar,

He probado el código del enlace, pero va muy lento... Cada vez que intento cambiar el width de las columnas tarda como 15 segundos en responder.
Cargar los datos le cuesta muy poco, pero hecer el resize le cuesta mucho... Por que me pasa esto???
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Desconozco sinceramente como estas cargando tus datos, pero imagino que estas haciendo alguna operación en algún evento del DBGrid, puede ser OnDrawCell, puesto que los DBGrids solo son para consulta y la operaciones, de insercción o modificación, deben hacerse fuera de los eventos del DBGrid, imagino que si es una consulta estas trayendo TODOS los registros de tu Tabla, si puedes ponernos el codigo para revisar e indicarte donde esta el problema, no solo yo, si no qué todos podemos ayudarte.


Saludos.!!
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Código de la carga Responder citando

El código de carga de datos es el siguiente:

void TFPrincipal::RefreshOFGrid(AnsiString where)
{
AnsiString sql;
TDBGridColumnItem *col;

ADOQuery1->Close();
ADOQuery1->SQL->Clear();
sql = "SELECT OFs.OFNum, OFs.Descripcion, CLIENTES.Nombre, OBRAS.Direccion, SECCIONES.Seccion, OFs.TiempoEstimado, dbo.SINO(OFs.Presupost) as Presupuesto, OFs.numPresupost, dbo.SINO(OFs.Albaran) as Albaran, OFs.Estado, OFs.idCliente, OFs.idObra, OFs.Seccion ";
sql += "FROM OFs INNER JOIN CLIENTES ON OFs.idCliente = CLIENTES.idCliente INNER JOIN ";
sql += "OBRAS ON OFs.idObra = OBRAS.idObra INNER JOIN ";
sql += "SECCIONES ON OFs.Seccion = SECCIONES.idSeccion";
sql += " WHERE " + where;
ADOQuery1->SQL->Add(sql);
ADOQuery1->Open();

//Tengo el datasource del TDBGrid asociado aL ADOQuery1

}

Hasta aquí lo hace rápido, el problema es cuando cambio el width de las columnas:

grdOFs->Fields[0]->DisplayWidth = 20;
grdOFs->Fields[1]->DisplayWidth = 50;
grdOFs->Fields[2]->DisplayWidth = 100;
grdOFs->Fields[3]->DisplayWidth = 20;
grdOFs->Fields[4]->DisplayWidth = 50;
grdOFs->Fields[5]->DisplayWidth = 20;

estas opeaciones le cuestan como 15 segundos... Muchísimo!!
La verdad es que no tengo más de 100 registros, estoy perdido seguro que hay otra forma más eficiente....
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.