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 16-12-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 24
Caro Va por buen camino
[quote=Cecilio;331090Si de camino alquien quiere mejorar el código que he puesto mejor, así aprendo directamente de los maestros. [/quote]

Hola cecilio, la diferencia entre el Assign y el igual ya te lo ha explicado el amigo coso. También puedes utilizar el procedimiento GetFieldNames que te devuelve la lista de campos de tu DataSet en el TString que le pases como parametro y para grabar en tu archivo puedes hacerlo direcatmente con SaveToFile de tu StringList.

Tu codigo quedaría así mas o menos

Código Delphi [-]
procedure TForm1.Generico(tb: string);
var
   s: string;
   n,v: integer;
   slCampos, slDatos: TstringList;
   ibb: TIBquery;
begin
 if not IBDatabase1.Connected then
  begin
    IBDatabase1.DatabaseName:=server.Text;
    ibDatabase1.Connected:=true;
  end;
  ibb:= TibQuery.Create(nil);
  ibb.Database:=Ibdatabase1;
  ibb.Transaction:=IbTransaction1;

  Ibb.SQL.Add('select * from '+tb);
  ibb.Open;

  slCampos :=TstringList.Create;
  slDatos :=TstringList.Create;
 
Try
  ibb.First;
  ibb.Last;
  Progressbar1.Max:=Ibb.RecordCount;
  progressbar1.Position:=0;

  ibb.GetFieldNames(slCampos);

  s:='';
  for v:=0 to slCampos.Count-1 do
      s:=s+slCampos[v]+';';
  
  slDatos.Add(s);

  ibb.First;
  n:=0;
  while not ibb.Eof do
  begin

     s:='';
     for v:=0 to ibb.FieldCount-1 do
      s:=s+ibb.Fields.Fields[v].AsString+';';

     slDatos.Add(s);

     inc(n);
     progressbar1.Position:=n;
    ibb.Next;
  end;//While
  slDatos.SaveToFile('C:\file.txt');
Finally
 ibb.Close;
 ibb.Free;
 slCampos.Free;
 slDatos.Free;
end;//try
end;

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #2  
Antiguo 16-12-2008
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.610
Poder: 32
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
¡Hola!

Aquí hay otro ejemplo de cómo vaciar el contenido de un conjunto de datos a un CSV: http://www.youcantwin.com/dasblogce/...SaveToCsv.aspx

Se menciona a los Client Data Sets, pero la función sirve con cualquier otro tipo de conjunto de datos.

Pero, al igual que Linett, creo que yo también emplearía un TStringList y vaciaría el contenido a disco con el método SaveToFile, en lugar de usar las antiguas y entrañables funciones para manejo de archivos de Pascal.

Un vaciado abrazo.

Al González.
Responder Con Cita
  #3  
Antiguo 17-12-2008
Avatar de javier7ar
javier7ar javier7ar is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 124
Poder: 21
javier7ar Va por buen camino
Por si te sirve, podes usar un TClientDataSet, que tiene un metodo SaveToFile y te guarda todo en un XML con un solo metodo y no tenes que andar haciendo todo el laburo vos. Despues lo podes recuperar con el metodo LoadFromFile y lo levantas al TClientDataSet de nuevo. A menos que necesites que el archivo sea CSV, el XML con el TClientDataSet me parece la opcion mas facil.
Saludos
Responder Con Cita
  #4  
Antiguo 17-12-2008
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 19
rgstuamigo Va por buen camino
Arrow Tengo una duda con respecto a error

Hola amigos ,leyendo este hilo se me quedo una duda y seria bueno que me lo pudieran aclarar ,la duda es en esta linea de codigo que puso el amigo Cecilio:

Código Delphi [-]
var
.
.
.
gs: TstringList;
..
.
.
.
gs:=TstringList.Create;//no seria necesario crearlo segun yo
gs:=ibb.FieldList;
.
.
.
gs.Free;//no hace falta liberarlo ya que es una referencia a bb.FieldList

Como podran verla variable gs no seria nesesario crearla(en este caso) sino darle solamente la asigancion que seria una referencia, lo que entiendo yo que hace el costructor Create es que reserva memoria para el objeto en si e inicializa sus atributos, pero en este caso ya para que crearlo si luego le voy a hacer una asignacion de otro objeto, no se si me explico, es algo asi como tener dos punteros apuntando a la misma direccion de memoria.
Esa es mi humilde opinion sobre el caso, si alguien tiene alguna objecion seria bueno para aclarar el asunto.
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #5  
Antiguo 17-12-2008
Avatar de javier7ar
javier7ar javier7ar is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 124
Poder: 21
javier7ar Va por buen camino
claro, eso fue lo que le corrigieron en los primeros posts. El no se daba cuenta de eso, e incluso estaba teniendo un error por eso. Fijate que le dieron dos alternativas, una hacer un Assing (en ese caso si es necesario crearlo y liberarlo) y la otra usar directamente ibb.FieldList (ahi no necesitas ni la variable)
Saludos
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
extraño error con TStringList lookmydoom OOP 4 11-01-2007 22:38:50
Algo Extraño Esau Varios 2 28-05-2006 17:50:04
Algo un poco extraño JerS Varios 1 19-10-2005 22:22:56
Es algo importante ejecución de .exe y algo más ayúdenme kakesoft Varios 5 02-05-2005 10:01:14


La franja horaria es GMT +2. Ahora son las 16:01:14.


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