Dividir registro do BD em vários arquivos txt

Delphi

19/03/2013

Boa noite.

Bom, estou querendo criar vários arquivos .txt a partir dos registros que tenho no banco.

Por exemplo dividir 600 registros em 30 arquivos .txt, para que cada um tenha 20 registros nele.

Estou fazendo isso para enviar mensagens separadas com o componente AcbrSMS, pq quando tento enviar todas de uma vez ele apresenta problema de TimeOut, e a única solução que achei foi essa, vi no fórum do ProjetoAcbr que mudando algumas configurações, como o Intervalo de Mensagens, podia dar certo, mas aqui não mudou muita coisa.

Agora a questão é que não sei por onde começar hehe, se alguém tiver alguma ideia por onde eu possa começar eu agradeço a ajuda :)

Grato.
Vander Carlos

Vander Carlos

Curtidas 0

Respostas

Joel Rodrigues

Joel Rodrigues

19/03/2013

Opa.
Faz um loop no dataset, e a cada 30 registros percorridos (guarde isso num contador de loop e verifique se ele é divisível por 30), crie um novo arquivo e salve o texto. Você pode usar a classe TStringList, que cria facilmente um arquivo de texto e é simples de manipular.
Boa sorte.
GOSTEI 0
Vander Carlos

Vander Carlos

19/03/2013

Joel, desculpe a demora.

Vou fazer alguns testes, quando tiver tudo ok posto aqui novamente.

Obrigado.
GOSTEI 0
Bruno Leandro

Bruno Leandro

19/03/2013

Vander de uma olhada neste exemplo acredito que com poucas adaptações funcione da forma que voce deseja, qualquer duvida estamos a disposição


var
i,i2: integer;
slVar: tstringlist;
begin
query.first;
slVar := tstringlist.create;
i := 1;
i2 := 0;
while not(query.eof) do
begin
slVar.add('conteudo da linha '+IntToStr(i2));

i2 := i2 + 1;

if (i2 = 20) then
begin
i2 := 0;
while (fileexists('C:\caminho\nome_'+IntToStr(i)+'.txt')) then
begin
i := i + 1;
end;
slVar.savetofile('C:\caminho\nome_'+IntToStr(i)+'.txt');
slVar.clear;
end;
query.next;
end;
if (i2 > 0) then
begin
i2 := 0;
while (fileexists('C:\caminho\nome_'+IntToStr(i)+'.txt')) then
begin
i := i + 1;
end;
slVar.savetofile('C:\caminho\nome_'+IntToStr(i)+'.txt');
slVar.clear;
end;

freeandnil(slVar);
end;
GOSTEI 0
POSTAR