Dividir registro do BD em vários arquivos txt
19/03/2013
0
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
Posts
19/03/2013
Joel Rodrigues
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.
22/03/2013
Vander Carlos
Vou fazer alguns testes, quando tiver tudo ok posto aqui novamente.
Obrigado.
22/03/2013
Bruno Leandro
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;
Clique aqui para fazer login e interagir na Comunidade :)