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!!!!
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
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?
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:
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.