PDA

Ver la Versión Completa : sql a texto plano


arnedokpo
11-07-2008, 16:30:47
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.


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:

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.


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:

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

pos eso.... :rolleyes: