Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-07-2010
Avatar de Faust
Faust Faust is offline
Miembro
 
Registrado: abr 2006
Ubicación: México D.F.
Posts: 930
Poder: 21
Faust Va por buen camino
Cita:
Empezado por manuc Ver Mensaje
Hola Faust,

Cuando he tenido que crear procedimientos muy parecidos a lo que comentas, he utilizado ClientsDataset para almacenar en memoria la información de los ficheros y así poder tratarla (ordernarla, locarlizar, comparar, etc).

Un problema que podrías tener al utilizar ClientDataset, como tablas temporales en memoria, es que cuando insertar muchos registros se quedan un poco lentos.

He probado a generar 130.000 registros en memoria y me ha tardado algo menos de un segundo.

En este caso, te diría que podrías utilizar un ClientDataset en memoria para manejar la información de tus ficheros.

Si decides probarlo, Hazle un ".MergeChangeLog", cada 100 insercciones, para que limpie "Basura interna"

Espero que te ayude.

Un saludo.

Vaya no sabía que pudiera usarse así un ClientDataSet, creí que solo funcionaban enlazados a bases de datos... perdón por abusar un poco de tu conocimiento, pero podrías poner un ejemplo sobre el uso de él de aunque sea 10 líneas si se puede y aunque no esté relacionado con mi problema...

Gracias

Ah, se me olvidaba una pregunta... es necesario instalar el BDE para utilizar el ClientDataSet, es que no quisiera instalarlo donde pongo la aplicación ya que es un servidor
__________________
Herr Heins Faust

Última edición por Faust fecha: 23-07-2010 a las 18:20:58.
Responder Con Cita
  #2  
Antiguo 23-07-2010
manuc manuc is offline
Miembro
 
Registrado: abr 2010
Posts: 165
Poder: 17
manuc Va por buen camino
Sí, claro. Es muy sencillo.

Agregas un ClientDataset a tu formulario. Le haces doble clic y le agregas los campos que quieras, nombre del fichero, fecha de modificación, etc.

Cada uno con el tipo de dato que te interese y en la propiedad FieldKind, le dejas fkData.

Para inicializarlo:
Código Delphi [-]
ClientDataSet1.CreateDataSet;
ClientDataSet1.Open;

Y a partir de aquí como un Dataset normal que esté conectado a base de datos:

Código Delphi [-]
var
 c:Integer;
 empieza:TDateTime;
begin
empieza := Now;
for c:= 1 to 130000 do
    begin
    if c mod 100 = 0 Then
       ClientDataSet1.MergeChangeLog; //Limpiamos las copias internas que realiza el componente; Para este caso nos sirve de nada y ralentiza una barbaridad. 
    ClientDataSet1.Append;
    ClientDataSet1fichero.AsString := 'fichero '+inttostr(c);
    ClientDataSet1fecha.AsDateTime := Now;
    ClientDataSet1.Post;
    end;
ShowMessage('Ya ' +FormatDateTime('hh:nn:ss:zzz',Now-empieza));

Como ves es muy simple y te da mucha fuerza a la hora de manejar la información.

Si necesitas algo más o tienes alguna duda, coméntame sin problemas.

Un saludo.
Responder Con Cita
  #3  
Antiguo 23-07-2010
Avatar de Faust
Faust Faust is offline
Miembro
 
Registrado: abr 2006
Ubicación: México D.F.
Posts: 930
Poder: 21
Faust Va por buen camino
Muchas gracias, ya estoy trabajando en eso y la verdad es muy rápido, hasta es posible verlo en un DBGrid

Sabes si es necesario instalar el BDE o alguna librería en especial para usar ClientDataSet, DataSource y DBGrid, no quisiera instalarlos, pues esta aplicación debe correr en un servidor.

Muchísimas gracias y aquí estaré molestándote ...

Ah de paso te invito una cerveza, estas ya no te alertan con el antivirus...

__________________
Herr Heins Faust
Responder Con Cita
  #4  
Antiguo 23-07-2010
manuc manuc is offline
Miembro
 
Registrado: abr 2010
Posts: 165
Poder: 17
manuc Va por buen camino
Smile

jeje, gracias por las cervezas, te las acepto, que aquí, ahora, hace mucha calor!!

Pues no tendrías que instalar nada. Simplemente añade a tus uses la unidad "MidasLib" y ya está.

Ciertamente lo puedes conectar a un dbGrid, pero ten en cuenta una cosa: si el Grid está activo las inserciones irán más lentas. Para evitar este problema, cuando vayas a insertar registros en el clientDataset hazle esto:
Código Delphi [-]
ClientDataset1.DisbleControls;
y cuando termines habilitalo de nuevo así.
Código Delphi [-]
ClientDataset1.EnableControls;

Un saludo.
Responder Con Cita
  #5  
Antiguo 23-07-2010
Avatar de Faust
Faust Faust is offline
Miembro
 
Registrado: abr 2006
Ubicación: México D.F.
Posts: 930
Poder: 21
Faust Va por buen camino
Oh si, eso ya lo he notado, pero al ejecutar me voy a ver los módulos que ocupa mi aplicación y veo que usa midas.dll... ojalá no sea problema y pueda copiarla y usarla sin pormenores.

gracias.
__________________
Herr Heins Faust

Última edición por Faust fecha: 23-07-2010 a las 19:25:27.
Responder Con Cita
  #6  
Antiguo 23-07-2010
manuc manuc is offline
Miembro
 
Registrado: abr 2010
Posts: 165
Poder: 17
manuc Va por buen camino
Si te refieres al fichero Midas.dll, si incluyes la unidad MidasLib, en los uses (del primer formulario que se cargue) no necesitarás copiar la librería, se embebe en el propio ejecutable.

Saludos.
Responder Con Cita
  #7  
Antiguo 23-07-2010
Avatar de Faust
Faust Faust is offline
Miembro
 
Registrado: abr 2006
Ubicación: México D.F.
Posts: 930
Poder: 21
Faust Va por buen camino
Aquí estoy de nuevo con otra duda... ya puedo usarlo, es muy rápido, pero como le hago para usarlo por segunda vez, simplemente ejecutando ClientDataSet1.Close y volviéndolo a llenar???

Desde ya muchas gracias.
__________________
Herr Heins Faust
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
Busqueda por fecha en FB2.0 david_uh Firebird e Interbase 4 18-07-2008 00:23:48
¿Búsqueda SQL por Fecha? lKinGl SQL 33 28-04-2008 19:33:41
Busqueda por fecha IBquery mjjj SQL 4 23-10-2007 20:36:47
Busqueda segun el mes de una fecha(no la fecha completa) federiconqn21 Firebird e Interbase 1 05-05-2006 15:39:53
Busqueda en un campo fecha seken Varios 7 14-04-2005 14:11:19


La franja horaria es GMT +2. Ahora son las 15:54:18.


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