Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MS SQL Server
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 17-05-2007
andresenlared andresenlared is offline
Miembro
 
Registrado: oct 2003
Posts: 153
Poder: 23
andresenlared Va por buen camino
Question Exportar a TXT-Mejorar rendimiento

Saludos.

Necesito mejorar el rendimiento al exportar datos de un Objeto SimpleDataset de los IBexpert, este objeto se crea en runtime, y no se conocen los campos totales de la consulta. en este momento estoy haciendo un recorrido sobre el resultado de la consulta y un ciclo interno que me indica los campos y los valores los capturo en una cadena que luego la asigno al archivo. El proceso es muy lento...si conocen un metodo mas rapido o algo parecido al BUlk pero para exportar, porque siempre los datos que se recuperan estan entre los 200000 y millon.

Muchas gracias por su valiosa ayuda.


Código Delphi [-]
procedure TfrmGenerador.salvar_txt(datos: Tdataset);
var
 i,j:integer;
 archivo: Textfile;
 registro: String;
begin
  DBGrid1.Columns.SaveToFile('c:\plano.txt');
  AssignFile(archivo,ExtractFileDir(Application.ExeName) + '\tmp\Datos.txt');
  Rewrite(Archivo);
  datos.Prior;
  for i:=0 to datos.RecordCount-1 do
     begin
     registro:='';
       for j:=0 to datos.FieldCount-1 do
         if j=datos.FieldCount-1  then
           registro:=registro+VarToStr(datos.Fields[j].Value)
         else
           registro:=registro+VarToStr(datos.Fields[j].Value)+',';
       writeln(archivo,registro);
       datos.Next;
     end;
     CloseFile(archivo);
     ShowMessage('Archivo Exportado');
end;

Última edición por andresenlared fecha: 17-05-2007 a las 23:05:39. Razón: no se indico la base de datos utilizada y el codigo quedo resaltado como php y e sdelhi
Responder Con Cita
  #2  
Antiguo 17-05-2007
andresenlared andresenlared is offline
Miembro
 
Registrado: oct 2003
Posts: 153
Poder: 23
andresenlared Va por buen camino
Que pena el codigo es delphi no php
Responder Con Cita
  #3  
Antiguo 18-05-2007
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 30
jachguate Va por buen camino
En principio, el código que te envío debiera ejecutarse mas rápido... probalo e informanos de la diferencia en el desempeño.

Código Delphi [-]
procedure TfrmGenerador.salvar_txt(Datos: Tdataset);
var
  I: Integer;
  Registro: string;
  Strs: TStringList;
begin
  Strs := TStringList.Create;
  Datos.DisableControls;
  try
    Datos.First;
    while not Datos.Eof do
    begin
      Registro := '';
      for I := 0 to Datos.FieldCount - 1 do
        Registro := Registro + ',' + Datos.Fields[i].AsString;
      Delete(Registro, 1, 1);
      Strs.Add(Registro);
      Datos.Next;
    end;
    Strs.SaveToFile(ExtractFileDir(Application.ExeName) + '\tmp\Datos.txt');
  finally
    Strs.Free;
    Datos.EnableControls;
  end;
end;

Saludos.
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #4  
Antiguo 18-05-2007
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.964
Poder: 29
delphi.com.ar Va camino a la fama
Prueba esto:
http://www.clubdelphi.com/foros/show...46&postcount=4
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #5  
Antiguo 18-05-2007
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 30
jachguate Va por buen camino
Cita:
Empezado por delphi.com.ar
Prueba esto:
Federico... ¿estas seguro que esto trabaja con interbase/firebird?

lo digo, porque al parecer, ese es el origen de los datos:

Cita:
Empezado por andresenlared
Necesito mejorar el rendimiento al exportar datos de un Objeto SimpleDataset de los IBexpert
Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #6  
Antiguo 18-05-2007
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.964
Poder: 29
delphi.com.ar Va camino a la fama
Cita:
Empezado por jachguate
Federico... ¿estas seguro que esto trabaja con interbase/firebird?

lo digo, porque al parecer, ese es el origen de los datos:
Pues no.. es algo exclusivo de MS SqlServer, no me percaté del detalle. Respondí ciegamente ya que la pregunta se encuentra dentro del foro de Sql Server.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
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
Mejorar rendimiento usando ODBC??? Tanis30 Conexión con bases de datos 3 15-12-2006 14:45:59
Mejorar un cronometro kokogua Varios 3 10-12-2006 14:12:57
Para mejorar el currículum Pablo Carlos Humor 3 02-09-2005 16:46:34
Mejorar aspecto de un reloj zugazua2001 Varios 1 11-08-2005 14:40:23
Mejorar metodo!! kye_z Varios 2 21-10-2004 18:56:53


La franja horaria es GMT +2. Ahora son las 03:05:46.


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