Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   sql a texto plano (https://www.clubdelphi.com/foros/showthread.php?t=58190)

arnedokpo 11-07-2008 16:30:47

sql a texto plano
 
Hola que tal alguien me podria dar una mano ..estoy haciendo una aplicacion usando ADOQUERY y quisiera que dada una consulta me lo grabe en un txt plano...alguien me podria ayudar?????????????????

muchas gracias!!!!

Caro 11-07-2008 16:44:59

Hola arnedokpo, una forma sería utilizando un StringList, almacenas ahí todo lo que tienes en tu consulta y luego utilizas su procedimiento SaveToFile, para guardar el archivo.

Código Delphi [-]
var
 slFile : TStringList;
 campo1, campo2 : String;
begin
  slFile := TStringList.Create;
 
  AdoQuery1.First;
  While Not AdoQuery1.Eof do
    begin
      campo1 := AdoQuery1.FieldbyName('Campo1').ASString;
      campo2 := AdoQuery1.FieldbyName('Campo2').ASString; 
 
      slFile.Add(campo1+' '+campo2); 

      AdoQuery1.Next;
     end;
  slFile.SaveToFile('archivo.txt');

Saluditos

coso 11-07-2008 17:26:38

Hola, tambien puedes usar directamente el método query.savetofile. saludos. (aunque, ahora estoy probandolo, y es un formato algo extraño)

arnedokpo 11-07-2008 19:08:14

Buenisimo gente :) pero una cosita mas que no pude hacer es ponerle el titulo de las columnas me podrian dar una mano?

Caro 11-07-2008 23:41:52

Hola de nuevo arnedokpo, no entiendo muy bien, quieres darle un titulo tu o quieres que aparezca los nombres de tus campos en cada columna.

Si es lo primero solo es añadir al principio de tu StringList lo que tu quieras:
Código Delphi [-]
  slFile.Add('NombreCampo1'+' '+'NombreCampo2');
  AdoQuery1.First;
  While Not AdoQuery1.Eof do
  ........

Si es lo segundo entonces puedes obtener la lista de campos de tu consulta con GetFieldNames, así quedaría tu codigo.

Código Delphi [-]
var
 slFile : TStringList;
 campo1, campo2 : String;
 slCampos : TStringList;
 Titulo : String;
begin
  slFile := TStringList.Create;
  slCampos := TStringList.Create;
 
  AdoQuery1.GetFieldNames(slCampos); //Obtenemos la lista de campos en slCampos
  Titulo := slCampos.CommaText;
  Titulo := AnsiReplaceStr(Titulo, ',', ' ');
  slFile.Add(Titulo);

  AdoQuery1.First;
  While Not AdoQuery1.Eof do
    begin
      campo1 := AdoQuery1.FieldbyName('Campo1').ASString;
      campo2 := AdoQuery1.FieldbyName('Campo2').ASString; 
 
      slFile.Add(campo1+' '+campo2); 

      AdoQuery1.Next;
     end;
  slFile.SaveToFile('archivo.txt');

donde CommaText nos devuelve una cadena con todos los elementos de nuestro StringList separados por comas y AnsiReplaceStr, nos reemplaza esa coma por un espacio.

Saluditos

tcp_ip_es 14-07-2008 08:38:52

Supongo que lo que quieres es el resultado de tu consulta, para eso es lo que te comenta Caro, si lo que quieres es el texto de tu consulta:

Código:

AdoQuery1.sql.savetofile('c:\prueba.txt');
pos eso.... :rolleyes:


La franja horaria es GMT +2. Ahora son las 02:24: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