Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-05-2012
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.806
Poder: 22
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Para saber si un registro existe o no, deberías preguntarlo directamente a la base y no recorrer cada registro y comparar.

Esta parte
Código:
//Recorro la tabla de productos con una Query para comprobar que el producto no este ya en la BD    
                while (!XDatos->QRecorreProductos->Eof)
                {
                        if (XDatos->QRecorreProductosREFERENCIA->Value == StringGrid1->Cells[0][f])
                                     existe = true;
                        XDatos->QRecorreProductos->Next();
                }
Deberías realizarla con un query que te responda si existe o no.
No conozco como hacerlo en C, pero sería algo así:
Código:
   // Ejecuto query que cuentas cuantos registros tienen referencia=[lo que busco]
   XQueryExisteDato->SQL->Text = 'SELECT COUNT(*) FROM DATOS WHERE REFERECIA='||StringGrid1->Cells[0][f];
   XQueryExisteDato->ExecSQL;

   // Si existe la cuenta será mayor a 0
   if (XQueryExisteDato->FieldByName('COUNT')->Value > 0) 
   {existe = true;}
Lo mismo deberías hacer en cada caso en el que recorres las tablas con un while.
Responder Con Cita
  #2  
Antiguo 15-05-2012
ErYcK ErYcK is offline
Miembro
NULL
 
Registrado: abr 2012
Posts: 26
Poder: 0
ErYcK Va por buen camino
Muchas gracias

Probare a hacerlo de esa forma, usando consultas a ver si se agiliza el proceso y os comento.
Gracias de nuevo por la ayuda
Responder Con Cita
  #3  
Antiguo 16-05-2012
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.439
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Creo que es un código perfecto para utilizar un profiler (aquí hay algunos). Con estos programas puedes saber exactamente qué parte de tu programa es la que está tardando más tiempo. Las lecturas, algún procedimiento con strings,...
Con eso podrás saber exactamente a qué parte tienes que atacar para optimizar.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
CreateForm demasiado lento kverna Varios 6 06-03-2008 14:32:14
Procedure en Firebird lento o IbQuery lento capo979 Firebird e Interbase 14 17-07-2007 21:35:36
Demasiado lento programa Manuel Varios 1 27-10-2005 18:10:08
Proceso lento al dar enter sobre un boton Walterdf Varios 1 05-04-2005 18:20:50
Interbase demasiado lento diegofhernando Conexión con bases de datos 2 12-09-2003 22:05:24


La franja horaria es GMT +2. Ahora son las 09:49:56.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi