Problemas com Delphi

Delphi

31/05/2017

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

Curtidas 0

Respostas

Gabriel Baltazar

Gabriel Baltazar

31/05/2017

Que erro está dando?
GOSTEI 0
Rafael Yudi

Rafael Yudi

31/05/2017

"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;
GOSTEI 0
Jones Granatyr

Jones Granatyr

31/05/2017

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

Rafael Yudi

31/05/2017

no caso depois do writeln? antes do end?
GOSTEI 0
Natanael Ferreira

Natanael Ferreira

31/05/2017

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''
GOSTEI 0
Natanael Ferreira

Natanael Ferreira

31/05/2017

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;
GOSTEI 0
Rafael Yudi

Rafael Yudi

31/05/2017

entao... esse erro deu mesmo com outro codigo que escrevi.. mas pelo jeito o erro esta em outra frm
GOSTEI 0
Rafael Yudi

Rafael Yudi

31/05/2017

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
GOSTEI 0
Rafael Yudi

Rafael Yudi

31/05/2017

consegui galera mas seguinte como faço pra dar nome do meu txt com a data atual?
GOSTEI 0
Natanael Ferreira

Natanael Ferreira

31/05/2017

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');
GOSTEI 0
Rafael Yudi

Rafael Yudi

31/05/2017

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
GOSTEI 0
POSTAR