Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MS SQL Server
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-05-2007
andresenlared andresenlared is offline
Miembro
 
Registrado: oct 2003
Posts: 153
Poder: 21
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: 21
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: 28
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.932
Poder: 27
delphi.com.ar Va por buen camino
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: 28
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.932
Poder: 27
delphi.com.ar Va por buen camino
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



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 13:55:01.


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