Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Exportar en un archivo txt (https://www.clubdelphi.com/foros/showthread.php?t=20260)

alfredosg19 10-04-2005 17:56:31

Exportar en un archivo txt
 
Hola, estoy intentando exportar de un TADO a un archivo de texto, el problema es que a la hora de guardarme los datos en el archivo sólo me guarda el primer registro, no entiendo el motivo por el cual se salta el While y se sale del bucle,:confused:. Si alguien pudiera ayudarme le estaría muy agradecido. GRAAACIASSS.:cool:

Código:

procedure TfrmClients.sbExportaClick(Sender: TObject);
 var NomArxiu: String;
        S:string;
        f:Textfile;
 begin
 If sdGuarda.Execute then
  Begin
        NomArxiu:=sdGuarda.Filename;
        AssignFile(F,'Dades.txt');
        Rewrite(F);
        ADOTClient.First;
  While not ADOTClient.EOF do
        Begin
          s:='#';
          s:=s+ADOTClient.FieldbyName('CodiT02').asString+'#';
          s:=s+ADOTClient.FieldbyName('NomT02').asString+'#';
          s:=s+AdoTClient.FieldbyName('DireccioT02').asString+'#';
          s:=s+AdoTClient.FieldbyName('PoblacioT02').asString+'#';
          s:=s+AdoTClient.FieldbyName('CodiPostalT02').asString+'#';
          s:=s+AdoTClient.FieldbyName('ProvinciaT02').asString+'#';
          s:=s+AdoTClient.FieldbyName('Telf1T02').asString+'#';
          s:=s+AdoTClient.FieldbyName('Telf2T02').asString+'#';
          s:=s+AdoTClient.FieldbyName('FaxT02').asString+'#';
          Writeln(F,s);
          ADOTClient.Next;
        end;
 end;
 Closefile(F);
  end;


Lepe 10-04-2005 20:18:07

Es más que probable que ese archivo se vaya a parar a c:\windows, ahí si debe estar todos los registros. El archivo que solo tiene un registro, será de pruebas anteriores.

Pasa siempre la ruta completa 'c:\dades.txt'

Por cierto, el CloseFile, no está dentro del bloque del IF.

Un saludo

alfredosg19 10-04-2005 20:40:10

Sigue el error..., detallo más.
 
El error continua, he arreglado lo del Closefile (gracias Lepe) y lo de la ubicación del archivo, pero aún así sigue fallando. Lo que pasa es que entra en el bucle anterior pero sólo una vez, después se sale (sin respetar la condición):confused::eek:.

marcoszorrilla 10-04-2005 21:12:06

Por más vueltas que le doy al bucle no le veo fallo alguno. ¿Por qué no pones una rejilla conectada alADOTClient ?

No vaya a ser que por algún motivo solamente te esté devolviendo un registro.

Un Saludo.

alfredosg19 11-04-2005 08:32:35

¿Qué es una rejilla?.
 
Hola, y antes que nada agradezco tu ayuda, lo que pasa es que no sé a que te refieres con lo de la rejilla. ¿Me lo podria explicar alguien?. Muchas gracias.

Lepe 11-04-2005 10:03:16

Rejilla es la traducción oficial para DBGRID ;)

Un saludo

alfredosg19 11-04-2005 10:16:36

Ya puse la rejilla y hace lo mismo.
 
No entiendo por qué se sale del bucle cuando la condición no se dá. En la rejilla pasa lo mismo, es decir que cuando ejecuto el programa me guarda el primer registro en el archivo y se me situa el cursor en la segunda fila, he provado con varios cambios en el bucle (cambiarlo por un for desde el primer registro hasta el último o un if) pero es el mismo problema. Es curioso porque en el libro de la cara oculta de Delphi 4, viene el bucle anterior como ejemplo para exportar archivo.

marcoszorrilla 11-04-2005 10:43:55

Pruba a quitarle campos a ver si el tamaño de la cadena ocasiona algún problema.

Un Saludo.

alfredosg19 11-04-2005 13:15:32

Persiste el problema.
 
He reducido a uno el número de campos que exporto, pero aún así sólo me copia un registro al archivo (esto me terminará por volver loco).:mad:.Gracias foreros por la ayuda.

oscorm 11-04-2005 15:55:29

lo he probao y funciona, app_path es el directorio donde se ejecuta la aplicacion
Código Delphi [-]
 function app_path: String;
 begin
      Result := ExtractFilePath(Application.ExeName);
 end;
 
  
 procedure Tmiform.Button1Click(Sender: TObject);
 var S: string; f: Textfile;
 begin
      AssignFile(F,app_path + 'Dades.txt');
      Rewrite(F);
      coches.First;
      While not coches.EOF do Begin
            s:='#';
            s:=s+coches.FieldbyName('Interno').asString+'#';
            s:=s+coches.FieldbyName('Referencia').asString+'#';
            Writeln(F,s);
            coches.Next;
      end;
      Closefile(F);
 end;

Lepe 11-04-2005 18:00:37

Hola alfredo:

Bien, de todo lo anterior, deducimos que el bucle no es el problema, así que habrá que mirar por otro sitio.

- Haces algo en los eventos beforeScroll, AfterScroll de la tabla ?
- Tienes algun código escrito para el Datasource, OnStateChange,OnDataChange?
- Algún código en los eventos de los campos, quizás en el OnGetText ?
- Algún dato a exportar es nulo ?
- Ocultas alguna excepción en tu aplicación ?
Algo del estilo try ... except on e:except do ;
- Cierras la tabla en algún momento ?
Un saludo, y suerte!!


La franja horaria es GMT +2. Ahora son las 03:35:50.

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