GARANTIR DESCONTO

Fórum exportar dados para txt #452877

22/08/2013

0

ola galera, tudo bem, to iniciando no delphi e tenho uma duvida aqui


tenho um banco de dados aki e coloquei os campos no delphi
adoconnection
adoquery
datasource
botao 1
edit
dbgrid (mostra os dados da tabela, assim que digitado (edit) e clicado no botao (button1))
botao 2 (exportar para txt) -> seria algo como salvar um txt dos arquivos mostrados



codigo no botao 1 (esta funcionando)
procedure TForm1.Button1Click(Sender: TObject);
var
let: string;
begin
let:=(Edit1.Text);

with ADOQuery1 do
begin
close;
SQL.Clear;
SQL.Add(''SELECT IDBanco,NomeBanco'');
SQL.Add(''FROM TBBanco'');
SQL.Add(''WHERE (NomeBanco LIKE ''+#39+''%''+let+''%''+#39+'')'');
Open;
end;
end;
end.




codigo no botao 2 (nao esta funcionando)
procedure ExpTXT(DataSet: TDataSet; Arq: string);
var
i: integer;
sl: TStringList;
st: string;
begin
DataSet.First;
sl := TStringList.Create;
try
st := '''';
for i := 0 to DataSet.Fields.Count - 1 do
st := st + DataSet.Fields[i].DisplayLabel + '';'';
sl.Add(st);
DataSet.First;
while not DataSet.Eof do
begin
st := '''';
for i := 0 to DataSet.Fields.Count - 1 do
st := st + DataSet.Fields[i].DisplayText + '';'';
sl.Add(st);
DataSet.Next;
end;
sl.SaveToFile(Arq);
finally
sl.free;
end;
end;




gostaria de saber como fazer o botao 2 (exportar) funcionar, eu queria salvar os arquivos lidos no txt
por exemplo; digito caixa, ai mostra no dbgrid os dados de todos os bancos que contem caixa, isso ja esta certo, so que gostaria que o botao exportar funcionasse (criasse um txt, so para visualizaçao dos dados)
Eros Cardoso

Eros Cardoso

Responder

Post mais votado

02/09/2013

finalmente consegui exportar para txt

procedure TForm1.Button3Click(Sender: TObject);
var
txt : TextFile;
i:integer;
begin
Assignfile (txt,'Arquivo.Txt');
ReWrite (txt);
adoquery1.First;
while not adoquery1.Eof do
begin
for i := 0 to adoquery1.Fields.Count - 1 do
write(txt, adoquery1.Fields[i].AsString + '|');
writeln(txt, ''); // quebra a linha
adoquery1.Next;
end;
CloseFile(txt);
end;



e exportar para o excel tb
procedure TForm1.Button2Click(Sender: TObject);
var
Excel : Variant;
Linha,i:Integer;
begin
if not ADOQuery1.IsEmpty then
begin
ADOQuery1.First;
Excel := CreateOleObject('Excel.application');
Excel.Visible := False;
Excel.Workbooks.Add;
Linha := 1;
for i := 0 to ADOQuery1.FieldCount - 1 do
Excel.WorkBooks[1].Sheets[1].Cells[Linha,i+1] := ADOQuery1.Fields[i].DisplayName;
Linha := 2;
While not ADOQuery1.Eof do
Begin
for i := 0 to ADOQuery1.FieldCount - 1 do
Excel.WorkBooks[1].Sheets[1].Cells[Linha,i+1] := ADOQuery1.Fields[i].Value;
ADOQuery1.Next;
Linha:=Linha+1;
end;
Excel.Visible:=True;
end;
///
end;


obs: para exportar para o excel, deve colocar ComObj em uses;

Eros Cardoso

Eros Cardoso
Responder

Gostei + 1

Mais Posts

22/08/2013

Deivison Melo

Melhor forma de exportação de dados é utilizando a classe: Stringlist...


Você ficará surpreso com o que essa classe pode te proporcionar em flexibilidade!

Pesquisa sobre ela, caso não encontrar nada... Depois mando exemplo...

Abração e bons códigos!!

Atenciosamente,

Emanoel Deivison
Recife - PE
Responder

Gostei + 0

22/08/2013

Diego Garcia

@Deivison o @eros cardoso já está utilizando TStringList como você pode ver nos trechos de código que ele postou.

@eros cardoso, olhando seu código por cima ele não parece conter erros na procedure ExpTXT, qual é a falha que está acontecendo ?
simplesmente não acontece nada e também não sobe mensagem de erro? ou sobe algum erro? como você está preenchendo o argumento "Arq"?

[]'s
Responder

Gostei + 0

22/08/2013

Eros Cardoso

Diego, minha duvida é essa
esse codigo do botao 2, eu peguei ele de exemplo e queria colocar ele no meu programa, so que nao sei como faz pra ele funcionar
nao entendo mt de delphi, eu queria saber se tenho que declarar as variaveis e procedures do botao 2 la em cima no codigo
e tem outra coisa como fazer para o botao 2 se comunicar com o dbgrid, para que mostre o txt, isso que eu nao estou conseguindo

como você está preenchendo o argumento "Arq"?
essa pergunta eu nao entendi bem rs, desculpe minha ignorancia


eu tenho ate outro codigo aqui para o botao 2 que é esse abaixo, peguei aqui mesmo no devmedia, so n sei como colocar no meu programa;

procedure TForm1.gravarTxt();
var
txt : TextFile;
i : integer;
begin
AssignFile(txt, ExtractFilePath(ParamStr(0)) + 'bkp.txt');

Rewrite (txt);

// Minhatabela é um objeto Table qualquer, como um TTable, TSimpleDataSet, etc
MinhaTabela.First;
while not MinhaTabela.Eof do
begin
for i := 0 to MinhaTabela.Fields.Count - 1 do
write(txt, MinhaTabela.Fields[i].AsString + '|');

writeln(txt, ''); // quebra a linha

MinhaTabela.Next;
end;

CloseFile(txt);
end;




os nomes dos dados no delphi eu n mudei
o nome do botao1 é button1
o nome do botao2 é button2
o nome do adoconnection é ADOConnection1
o nome do adoquery é ADOQuery1
o nome do datasource é DataSource1
o nome do dbgrid é DBGrid1
o nome do edit é Edit1
Responder

Gostei + 0

22/08/2013

Diego Garcia

então amigo acho que o problema não é a questão de salvar o arquivo de texto, mas sim fazer a conexão com o banco de dados certo ?
Responder

Gostei + 0

22/08/2013

Eros Cardoso

então amigo acho que o problema não é a questão de salvar o arquivo de texto, mas sim fazer a conexão com o banco de dados certo ?


entao, como eu disse a ligaçao no banco de dados no botao 1 esta funcionando, la aparece direitinho, eu digito e mostra no dbgrid os dados
so que no botao 2 nao cria o arquivo txt que deveria ser criado, eu coloquei esse codigo ai no botao 2 nao sei se tem que configurar algo para que ele funcione
na verdade eu nao sei como faz pra ligar o botao 2 no dbgrid para que mostre os dados em um txt
Responder

Gostei + 0

23/08/2013

Eros Cardoso

o que eu queria é que o botao 2 salvasse em um txt o que eu pesquiso no botao 1
Responder

Gostei + 0

23/08/2013

Eros Cardoso

esse codigo aqui para o botao 2 esta funcionando, porem nao é bem o que eu quero

procedure TForm1.Button2Click(Sender: TObject);
var
tf : TextFile;
nome: string;
begin
nome:= edit1.Text;
Assignfile (tf,'Arquivo.Txt');
ReWrite (tf);
WriteLn (tf,'Nome do banco:', nome);
CloseFile (tf);
Edit1.Text := 'Arquivo Criado!';
end;
end.




esse comando cria o arquivo txt, so que ele retorna apenas os valores digitados no edit1.text
eu queria que ele retornasse os valores do dbgrid (ou seja da tabela sql que aparece)
Responder

Gostei + 0

23/08/2013

Wesley Yamazack

Opa eros, dá uma olhada neste artigo aqui, veja se ele pode lhe ajudar [url]https://www.devmedia.com.br/exportar-datasets-para-xmlhtmltxtdocexcel/13629[/url]

Um abraço
Responder

Gostei + 0

26/08/2013

Eros Cardoso

Opa eros, dá uma olhada neste artigo aqui, veja se ele pode lhe ajudar [url]https://www.devmedia.com.br/exportar-datasets-para-xmlhtmltxtdocexcel/13629[/url]

Um abraço


Yamazack, tentei entender e colocar no meu codigo e nao consegui
veja so como esta no meu botao 2 que é o de exportar



procedure TForm1.Button2Click(Sender: TObject);
var objExcel,Sheet,Chart,s : Variant;
cTitulo : string;
i : integer;
begin

cTitulo := 'Planilha de Teste';
objExcel := CreateOleObject('Excel.Application');
objExcel.Visible := True;
objExcel.Caption := cTitulo;

// Adiciona planilha(sheet)
objExcel.Workbooks.Add;
objExcel.Workbooks[1].Sheets.Add;
objExcel.Workbooks[1].WorkSheets[1].Name := cTitulo;
Sheet := objExcel.Workbooks[1].WorkSheets[cTitulo];


with ADOQuery1 do
begin
Sheet.Range['A1'] := 'NomeBanco';
SQL.Add('SELECT NomeBanco');
SQL.Add('FROM TBBanco');
Open;
end;

Sheet.PrintPreview;
end;








quando eu clico no botao de exportar, ele abre o excel so que aparece escrito apenas nomebanco
se eu mudo essa parte Sheet.Range['A1'] := 'NomeBanco'; para Sheet.Range['A1'] := edit1.text; vai sair apenas o que eu digitar no edit
eu queria que saisse o que aparece no dbgrid, ja tentei dbgrid1.SelectedField; e da erro, me ajudem por favor
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar