Fórum exportar dados para txt #452877
22/08/2013
0
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
Curtir tópico
+ 0Post mais votado
02/09/2013
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
Gostei + 1
Mais Posts
22/08/2013
Deivison Melo
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
Gostei + 0
22/08/2013
Diego Garcia
@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
Gostei + 0
22/08/2013
Eros Cardoso
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
Gostei + 0
22/08/2013
Diego Garcia
Gostei + 0
22/08/2013
Eros Cardoso
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
Gostei + 0
23/08/2013
Eros Cardoso
Gostei + 0
23/08/2013
Eros Cardoso
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)
Gostei + 0
23/08/2013
Wesley Yamazack
Um abraço
Gostei + 0
26/08/2013
Eros Cardoso
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
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)