Fórum Problemas com Delphi #582004

31/05/2017

0

Galera.. estou tentando exportar os dados de uma dbGrid para um txt mas ele da um erro....
pesquisei alguns exemplos mas sou novato na linguagem e estou bem perdido pois peguei este programa pronto de um amigo....
a dbGrid possui varios itens mas n sei o porque esta dando esse erro....
em meu datasource tem dmBab.dsPedido;
e em meu dataset tem tbPedido;
meu código esta assim por enquanto:

var
BackUpFile : TextFile;
i: Integer;
begin
AssignFile(Arq, 'c:\\Arquivo.txt');
Rewrite(Arq);
DBGrid2.DataSource.DataSet.First;

while not DBGrid2.DataSource.DataSet.Eof do
begin
for i := 0 to DBGrid2.FieldCount - 1 do
begin
WriteLn(Arq, DBGrid2.Fields[i].asString);
end;

DBGrid2.DataSource.DataSet.Next;
end;

CloseFile(Arq);
end;
Rafael Yudi

Rafael Yudi

Responder

Posts

01/06/2017

Gabriel Baltazar

Que erro está dando?
Responder

Gostei + 0

01/06/2017

Rafael Yudi

"Project Bb.exe raised exception class EaccessViolation with message ''Access violation at address 004C6763 in module ''Bb.exe''.Read of address 00000000''.Process stopped.Use Step or Run to continue."
Mas assim... isso é quando eu compilo e entro no programa.... tudo o que eu quero é que ele escreva no txt oque sai na dbgrid =(. E só corrigindo ali o codigo:
arq : TextFile;
i: Integer;
begin
AssignFile(Arq, ''c:\\\\\\\\Arquivo.txt'');
Rewrite(Arq);
DBGrid2.DataSource.DataSet.First;
while not DBGrid2.DataSource.DataSet.Eof do
begin
for i := 0 to DBGrid2.FieldCount - 1 do
begin
WriteLn(Arq, DBGrid2.Fields[i].asString);
end;
DBGrid2.DataSource.DataSet.Next;
end;
CloseFile(Arq);
end;
Responder

Gostei + 0

01/06/2017

Jones Granatyr

Opa! Não está faltando fazer um comando "next" na sua query depois do comando write? DBGrid2.DataSource.DataSet.Next
Responder

Gostei + 0

01/06/2017

Rafael Yudi

no caso depois do writeln? antes do end?
Responder

Gostei + 0

01/06/2017

Natanael Ferreira

Fiz um teste com seu código e aqui funcionou.

Alterei apenas o caminho que estava com excesso de barras.

Troquei o caminho de:

''c:\\\\\\\\\\\\\\\\Arquivo.txt''


Para:

''c:\\Arquivo.txt''


Se não funcionar, tente salvar na pasta da aplicação, alterando para:

''Arquivo.txt''
Responder

Gostei + 0

01/06/2017

Natanael Ferreira

var
  arq: TextFile;
  i: Integer;
begin
  AssignFile(arq, 'Arquivo.txt ');
  Rewrite(arq);

  DBGrid2.DataSource.DataSet.First;

  while not DBGrid2.DataSource.DataSet.Eof do
  begin
    for i := 0 to DBGrid2.FieldCount - 1 do
      WriteLn(arq, DBGrid2.Fields[i].asString);
    DBGrid2.DataSource.DataSet.Next;
  end;

  CloseFile(arq);
end;
Responder

Gostei + 0

01/06/2017

Rafael Yudi

entao... esse erro deu mesmo com outro codigo que escrevi.. mas pelo jeito o erro esta em outra frm
Responder

Gostei + 0

02/06/2017

Rafael Yudi

Resolvi o problema galera... era um erro em outro frm
mas algum poderia me ensinar a fazer ele escrever por exemplo linha 1 produto: exemplo
linha 2 quantidade: exemplo
linha 3 valor: exemplo
linha 4 pular linha
Responder

Gostei + 0

02/06/2017

Rafael Yudi

consegui galera mas seguinte como faço pra dar nome do meu txt com a data atual?
Responder

Gostei + 0

02/06/2017

Natanael Ferreira

Adicione DateUtils na uses.

Troque:

AssignFile(arq, 'C:\\Arquivo.txt ');


Por:

AssignFile(arq, 'C:\\' +
       Format('%2.2d', [Dayof(date)]) +
       Format('%2.2d', [MonthOf(date)]) +
       IntToStr(YearOf(date)) + '.txt');
Responder

Gostei + 0

02/06/2017

Rafael Yudi

galera to com outro probleminha
dentro dessa dbGrid2 eu tenho varios itens com iniciais que indicam oque seria por exemplo maçã = m pêra = p
eu queria criar um contador disso com as quantidades que existem la pois na dbGrid tem um campo para produto e outro para quantidade
gostaria de saber como criar esse contador... e depois como imprimir ele
Responder

Gostei + 0

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

Aceitar