Ver Mensaje Individual
  #7  
Antiguo 16-12-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Reputación: 22
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