Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-06-2011
ezequiel913 ezequiel913 is offline
Miembro
NULL
 
Registrado: may 2011
Posts: 39
Poder: 0
ezequiel913 Va por buen camino
Elegir destino al Exportar!!

hola gente!!!

El tema que tengo que resolver es: tengo una aplicacion que exporta los datos de un DBGrid a un TXT, ahora bien, yo en tiempo de diseño le asigno la ubicacion donde se tiene que guardar ese archivo y como se tiene que llamar. Lo que quiero es que cuando el usuario hace click en el boton de exportar tenga la posibilidad de elegir el destino del archivo y como se tiene que llamar.

este es el codigo que tengo para exportar:

Código Delphi [-]
procedure TBuscar.ExportarClick(Sender: TObject);
var
  i: Integer;
  s, TS: string;
  T: TextFile;
begin
  AssignFile(T,'.\CONSULTA.TXT');
  Rewrite(T);

  s:= '';
  for i:= 0 to DBGRid1.Columns.Count -1 do begin
   TS:= TS + DBGrid1.Columns[i].Title.Caption + TAB + TAB;
  End;
   Writeln(T, TS);
   Writeln(T);

    s:= '';
    for i:= 0 to DBGrid1.FieldCount - 1 do begin
     S := S + DBGrid1.Fields[i].AsString + TAB
    end;
    Writeln(T, s); //guardar campos formateados del registro

  CloseFile(T);

end;

TAB es el Tabulador, mas arriba tengo una constante TAB = char(9). lo uso para darle los espacios en el archivo.

gracias!!!
saludos!!!
Responder Con Cita
  #2  
Antiguo 14-06-2011
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.464
Poder: 21
newtron Va camino a la fama
Hola.

Si he entendido bien lo que quieres tendrías que incluir un componente OpenDialog y el código se quedaría de esta forma:

Código Delphi [-]
procedure TBuscar.ExportarClick(Sender: TObject);
var
i: Integer;
Archivo,s, TS: string;
T: TextFile;
begin
   DialogoGrabar.Initialdir := ExtractFilePath(application.ExeName) ;
   DialogoGrabar.Title  := 'Indicar localización y nombre del archivo a grabar';
   DialogoGrabar.Filter := 'Archivos txt|*.txt';
   if DialogoGrabar.Execute then begin
     If FileExists(DialogoGrabar.Filename) then begin
       if Application.MessageBox('El fichero ya existe, ¿desea sobreescribir?','ATENCION',mb_YesNo+mb_iconwarning) <> mrYes then exit;
         DeleteFile(DialogoGrabar.Filename);
       end else begin
         exit;
       end;
       Archivo:=DialogoGrabar.Filename;
     end;
   end else begin
     exit;
   end;
    AssignFile(T,Archivo);
 
    ... etc



Espero que te sirva.

Saludos
Responder Con Cita
  #3  
Antiguo 15-06-2011
ezequiel913 ezequiel913 is offline
Miembro
NULL
 
Registrado: may 2011
Posts: 39
Poder: 0
ezequiel913 Va por buen camino
hola Newtron!!!

bueno te comento lo que me pasaste me anduvo, pero ahora no me exporta lo que quiero. asi me quedo el codigo final.

Código Delphi [-]
procedure TForm1.ExportarClick(Sender: TObject);
var
  i: Integer;
  s, TS: string;
  T: TextFile;
  FullPath: String;
begin

   Dialogo.Initialdir := ExtractFilePath(application.ExeName) ;
   Dialogo.Title  := 'Indicar localización y nombre del archivo a grabar';
   Dialogo.Filter := 'Archivos txt|*.txt';
   if Dialogo.Execute then begin
     If FileExists(Dialogo.Filename) then begin
       if Application.MessageBox('El fichero ya existe, ¿desea reemplazarlo?','ATENCION',mb_YesNo+mb_iconwarning) <> mrYes then exit;
         DeleteFile(Dialogo.Filename);
       end;
     FullPath:=Dialogo.Filename;
     end
   else begin
     exit;
   end;
    AssignFile(T,FullPath);

  TS:= '';
  for i:= 0 to DBGRid1.Columns.Count -1 do
   TS:= TS + DBGrid1.Columns[i].Title.Caption + TAB;
   Writeln(T, TS);       // aca esta el problema recorre todo el FOR pero    cuando tiene que escribir no lo hace me tira un error.
   Writeln(T);

   CP:= trim(DBGrid1.Columns[0].Field.AsString);
   LOCALIDAD:= trim(DBGrid1.Columns[1].Field.AsString);
   PROVINCIA:= trim(DBGrid1.Columns[2].Field.AsString);


   s:= '';
   s:= s + CP + TAB + LOCALIDAD + TAB + PROVINCIA;

   Writeln(T, s); // guardar campos formateados del registro

  CloseFile(T);

end;

bueno el problema esta en la parte de escribir, nose por que no lo hace, sera por que no asigna bien la ubicacion ala variable TextFile??

este es el error que me devuelve:



esto me lo muestra despues de salir del primer FOR y al pasar por la linea de WRITELN (T, TS).

bueno saludos, gracias!!!
Responder Con Cita
  #4  
Antiguo 15-06-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

El error sucede por que no estas abriendo el archivo antes de escribir en él.
Pero además, la parte de tu código que debería copiar todos los registros desde el DBGrid sólo copiaría el actual.

Probá de este modo:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
const
  TAB = #9;
var
  i: Integer;
  Cabecera: string;
  T: TextFile;
  BM: TBookmarkStr;
begin
   Dialogo.Initialdir := ExtractFilePath(application.ExeName);
   Dialogo.Title  := 'Indicar localización y nombre del archivo a grabar';
   Dialogo.Filter := 'Archivos txt|*.txt';
   if Dialogo.Execute then
   begin
     if FileExists(Dialogo.Filename) and
        (Application.MessageBox('El fichero ya existe, ¿desea reemplazarlo?',
         'ATENCION',MB_YESNO + MB_ICONWARNING) = IDNO) then
      Exit;
     AssignFile(T, Dialogo.FileName);
     Rewrite(T);
     Cabecera:= '';
     for i:= 0 to DBGRid1.Columns.Count -1 do
       Cabecera:= Cabecera + DBGrid1.Columns[i].Title.Caption + TAB;
     Writeln(T, Cabecera);
     BM:= DBGrid1.DataSource.DataSet.Bookmark;
     DBGrid1.DataSource.DataSet.DisableControls;
     DBGrid1.DataSource.DataSet.First;
     while not DBGrid1.DataSource.DataSet.Eof do
     begin
       Writeln(T, Trim(DBGrid1.Columns[0].Field.AsString)+ TAB +
                  Trim(DBGrid1.Columns[2].Field.AsString)+ TAB +
                  Trim(DBGrid1.Columns[2].Field.AsString));
       DBGrid1.DataSource.DataSet.Next;
     end;
     DBGrid1.DataSource.DataSet.Bookmark:= BM;
     DBGrid1.DataSource.DataSet.EnableControls;
     CloseFile(T);
   end;
end;
Un comentario, este modo con el que guardas no tabulará correctamente los datos.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 15-06-2011 a las 07:09:47. Razón: Corregir el identado
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
Elegir Carpeta de Destino golf2008 API de Windows 2 15-08-2008 12:05:16
Cuando el destino nos alcance egostar La Taberna 12 26-06-2008 01:48:24
Elegir Carpeta de Destino madiazg API de Windows 3 22-09-2007 00:18:07
¿Crees en el destino? ContraVeneno Debates 19 08-11-2005 20:00:21
Tres hombres y un destino. obiwuan Humor 0 26-03-2004 20:34:01


La franja horaria es GMT +2. Ahora son las 14:55:22.


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