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 08-09-2010
Delfino Delfino is offline
Miembro
 
Registrado: jul 2003
Ubicación: Madrid
Posts: 974
Poder: 21
Delfino Va por buen camino
Ado Excel muchos datos

Estoy accediendo por medio de dos AdoQuery a dos hojas Excel y con una bucle recorriendo sus datos para automatizar un proceso. Cuando hay pocos datos funciona a la perfección, pero cuando pasan de las 5000 filas o menos la bucle es interminable. No da error pero se queda ahí pensando. Alguien sabría una solución? Saludos..
__________________
¿Microsoft? No, gracias..
Responder Con Cita
  #2  
Antiguo 08-09-2010
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: 18.281
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
¿Exactamente cual es el código del bucle? ¿Qué haces para cada fila?
No me parece que 5000 filas sean un número demasiado grande.
__________________
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
  #3  
Antiguo 08-09-2010
Delfino Delfino is offline
Miembro
 
Registrado: jul 2003
Ubicación: Madrid
Posts: 974
Poder: 21
Delfino Va por buen camino
Ahi va el codigo :
Código Delphi [-]
   adoXls1.First;
   while not adoXls1.Eof do
    begin
     if TryStrToInt(adoXls1.Fields[0].AsString, IntVal) = False  then
      Continue;
     adoXls2.First;
     while not adoXls2.Eof do
      begin
       if adoXls2.Fields[0].AsInteger = IntVal then
        begin
         cdsCommon1.Insert;
         cdsCommon1.Fields[1].AsString := adoXls1.Fields[0].AsString;
         cdsCommon1.Fields[0].AsInteger := adoXls2.Fields[0].AsInteger;
         cdsCommon1.Post;
         Break;
        end;
       adoXls2.Next;
      end;
     if adoXls2.Eof then
      begin
       cdsDiff1.Insert;
       cdsDiff1.Fields[1].AsString := adoXls1.Fields[0].AsString;
       cdsDiff1.Fields[0].AsInteger := adoXls2.Fields[0].AsInteger;;
       cdsDiff1.Post;
      end;
     Application.ProcessMessages;
     adoXls1.Next;
    end;
Lo q quiero es entre dos Excel y basado en un campo clave sacar los valores q tiene en comun y los q tiene uno pero el otro no tiene, no se si hay mejor manera
__________________
¿Microsoft? No, gracias..
Responder Con Cita
  #4  
Antiguo 08-09-2010
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: 18.281
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
Cita:
Empezado por Delfino Ver Mensaje
Lo q quiero es entre dos Excel y basado en un campo clave sacar los valores q tiene en comun y los q tiene uno pero el otro no tiene, no se si hay mejor manera
Tal vez podrías utilizar un par de SQL's.
Haciendo la INNER JOIN de ambas por el campo clave deberías obtener sólo aquellos registros coincidentes.

Y una LEFT JOIN o RIGHT JOIN y luego preguntando por NULOS te permirta saber los que están en uno y en otro no.
__________________
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
  #5  
Antiguo 08-09-2010
Delfino Delfino is offline
Miembro
 
Registrado: jul 2003
Ubicación: Madrid
Posts: 974
Poder: 21
Delfino Va por buen camino
Los joins donde irian? en una tercera AdoQuery?
Son dos archivos Excel independientes uno del otro..

Tienes algun ejemplo?
__________________
¿Microsoft? No, gracias..
Responder Con Cita
  #6  
Antiguo 08-09-2010
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: 18.281
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
Cita:
Empezado por Delfino Ver Mensaje
Los joins donde irian? en una tercera AdoQuery?
Son dos archivos Excel independientes uno del otro..
Tienes algun ejemplo?
Mi idea era realizar una query con la JOIN sobre los dos excels que tienes ahora, utilizando hojas como tablas; El problema es que ningu he probado a realizarlo con libros distintos.

Se trataría de utilizar un Query que hiciera directamente la INNER entre las 2 hojas de los dos libros.

En SQL Server y ADO funciona esta nomenclatura:

Código SQL [-]
Select A.*, B.* from [BASEDATOS1].dbo.TTabla1 AS A
INNER JOIN [BASEDATOS2].dbo.TTabla2 AS B 
ON A.ID=B.ID

Se trataría de intentar hacer lo mismo, pero en este caso (Excel) las Hojas corresponden a las tablas y los libros a las Bases de Datos.

La teoría es esa, pero nunca lo he probado y no si el driver de Excel admite esa sintasix.
__________________
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



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
Mostrar en un DBGRID Relacion Muchos Muchos dmassive SQL 6 12-02-2009 18:55:19
Problemas con generadores en relacion Muchos-a-Muchos Hagen Firebird e Interbase 3 30-10-2006 16:47:51
¿Cómo Mostrar muchos datos? Bauhaus1975 Varios 10 29-05-2006 13:15:07
creacion de base de datos - interbase - muchos Domains Patricio Conexión con bases de datos 4 02-12-2005 14:25:12
Mejorar velocidad de un SQL al consultar muchos datos. RONPABLO SQL 3 24-11-2005 18:10:02


La franja horaria es GMT +2. Ahora son las 05:11:23.


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