Dividir registro do BD em vários arquivos txt

19/03/2013

1

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.
Responder

Posts

19/03/2013

Joel Rodrigues

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.
Responder

22/03/2013

Vander Carlos

Joel, desculpe a demora.

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

Obrigado.
Responder

22/03/2013

Bruno Leandro

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;
Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira