Dividir registro do BD em vários arquivos txt
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.
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
Curtidas 0
Respostas
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.
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
19/03/2013
Joel, desculpe a demora.
Vou fazer alguns testes, quando tiver tudo ok posto aqui novamente.
Obrigado.
Vou fazer alguns testes, quando tiver tudo ok posto aqui novamente.
Obrigado.
GOSTEI 0
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;
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