Re: [delphi-br] ClientDataSet - Out Of Memory
Exatamente isso que eu estou fazendo agora... mudando para gravar em um banco.. estou estudando as possiblidades.. mas estou inclinado a usar o sqlite From: Roni Rodrigo Sent: Saturday, July 17, 2010 3:11 PM To: delphi-br@yahoogrupos.com.br Subject: Re: [delphi-br] ClientDataSet - Out Of Memory me metendo na conversa esse seu framework não poderia manipular um TDataSet ou um _RecordSet ao invés do cds? ai vc faria a consulta normalmente como o Fabiano falou... e já passaria o dataset ou recordset da consulta, independente do componente que estiver utilizando (cds, qry, procedure... ) sem necessidade de armazenar esses dados duplicados na memória... o/ Em 16/07/2010 23:44, Valdemir (yahoo) escreveu: na verdade .. montei um framework para gerar arquivos do governo... ele gera tanto arquivos de posição fixa (como o Sintegra), como arquivos separados com pipe (sped), entre outras funções ele visualiza os arquivos TXT como o Sintegra faz com o arquivo dele neste framework eu cadastro o layout, ou seja os registros, e cada campo com tamanho e tipo de arquivo... e eu ao gerar o txt, ele já faz algumas conferencias de acordo com o layout No sped, vc tem alguns registros Ex...I030 , que tem um campo com o total de registros do I030 que tem a quantidade de linhas do arquivo, ou seja logo no inicio do arquivo ele já me pede o total de linhas, neste caso eu tenho duas opções ou antes de gerar esta linha simulo a geração para saber o total de linhas, ou então arrumo um jeito de editar a linha apos eu gerar o arquivo inteiro. Entre gerar o arquivo e abrir o texto procurando por registro/posição no arquivo txt e ai substituir, eu preferi gravar tudo em cds e manipular o cds alterando o que é necessário From: Fabiano Moura Sent: Friday, July 16, 2010 10:49 PM To: delphi-br@yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br Subject: Re: [delphi-br] ClientDataSet - Out Of Memory *Boa noite!* Valdemir, por que você pega os dados da tabela e gera no clientdataset, não é mais fácil você pegar (restaurar) os dados do banco e jogar direto no arquivo texto? *Obrigado,* ** *Fabiano* [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] ClientDataSet - Out Of Memory
me metendo na conversa esse seu framework não poderia manipular um TDataSet ou um _RecordSet ao invés do cds? ai vc faria a consulta normalmente como o Fabiano falou... e já passaria o dataset ou recordset da consulta, independente do componente que estiver utilizando (cds, qry, procedure... ) sem necessidade de armazenar esses dados duplicados na memória... o/ Em 16/07/2010 23:44, Valdemir (yahoo) escreveu: na verdade .. montei um framework para gerar arquivos do governo... ele gera tanto arquivos de posição fixa (como o Sintegra), como arquivos separados com pipe (sped), entre outras funções ele visualiza os arquivos TXT como o Sintegra faz com o arquivo dele neste framework eu cadastro o layout, ou seja os registros, e cada campo com tamanho e tipo de arquivo... e eu ao gerar o txt, ele já faz algumas conferencias de acordo com o layout No sped, vc tem alguns registros Ex...I030 , que tem um campo com o total de registros do I030 que tem a quantidade de linhas do arquivo, ou seja logo no inicio do arquivo ele já me pede o total de linhas, neste caso eu tenho duas opções ou antes de gerar esta linha simulo a geração para saber o total de linhas, ou então arrumo um jeito de editar a linha apos eu gerar o arquivo inteiro. Entre gerar o arquivo e abrir o texto procurando por registro/posição no arquivo txt e ai substituir, eu preferi gravar tudo em cds e manipular o cds alterando o que é necessário From: Fabiano Moura Sent: Friday, July 16, 2010 10:49 PM To: delphi-br@yahoogrupos.com.br mailto:delphi-br%40yahoogrupos.com.br Subject: Re: [delphi-br] ClientDataSet - Out Of Memory *Boa noite!* Valdemir, por que você pega os dados da tabela e gera no clientdataset, não é mais fácil você pegar (restaurar) os dados do banco e jogar direto no arquivo texto? *Obrigado,* ** *Fabiano* [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] ClientDataSet - Out Of Memory
delphi 2010, sped contabil... com mais ou menos 400 mil lançamentos no ano de 2009 From: Jean Barreiros Sent: Friday, July 16, 2010 1:23 PM To: delphi-br@yahoogrupos.com.br Subject: Res: [delphi-br] ClientDataSet - Out Of Memory Olá amigo qual versão do delphi você tá usando e qual SPED você star gerando o txt, Fiscal ou Contabil? === Jean Barreiros Programador/Web-Designer Delphi|C++|PHP|JavaScript FireBird|MySql|SQLServer PostGree|Oracle msn: delphij...@gmail.com e-mail: delphij...@yahoo.com.br === De: Valdemir (yahoo) valdemi...@yahoo.com.br Para: delphi-br@yahoogrupos.com.br Enviadas: Quinta-feira, 15 de Julho de 2010 18:08:49 Assunto: [delphi-br] ClientDataSet - Out Of Memory Pessoal estou montando uma rotina para gerar o sped, em um movimento pequeno ok a rotina roda legal, mas em um movimento grande ao dar insert no CDS da erro Out Of Memory, apos processar um grande numero de registros Eu tenho um CDS onde vou armazenando os dados, para depois fazer um loop e jogar no TXT, para mim foi a saída mais fácil que eu encontrei, primeiro leio as tabelas e jogo no CDS, ai no CDS já com os dados no formato do governo, faço um loop no cds e gravo para o txt A principio estava usando um CDS em memoria, e ai é logico que deu o erro, mas ao preencher a propriedade FileName com o nome do arquivo ... ele começou a gerar os dados em arquivo binário, até ai ok, mas não encontrei nenhuma propriedade que eu informo que ele descarregue da memoria ram a cada x registros, então mesmo informado a propriedade nome do arquivo .. ele cria um arquivo.. e começa o processo, mas o tamanho fica com 0 até dar out of memory, e ai o tamanho do arquivo salta de 0 para um numero em bytes que ele conseguiu gerar Da a entender que mesmo informando o FileName, ele continua trabalhando somente com memoria ram, e só descarrega ela.. quando da o erro, eu imaginei que como esta informado o nome do arquivo, ele automaticamente ao carregar a RAM iria salvar os dados em disco, procurei no help mas não encontrei nenhum método ou propriedade para isso, antigamente no bde existia uma api para isso, mas no ClientDataSet eu não encontrei Alguém faz idéia do que possa estar ocorrendo ? Obrigado Valdemir [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] ClientDataSet - Out Of Memory
*Boa noite!* Valdemir, por que você pega os dados da tabela e gera no clientdataset, não é mais fácil você pegar (restaurar) os dados do banco e jogar direto no arquivo texto? *Obrigado,* ** *Fabiano* Em 16 de julho de 2010 22:31, Valdemir (yahoo) valdemi...@yahoo.com.brescreveu: delphi 2010, sped contabil... com mais ou menos 400 mil lançamentos no ano de 2009 From: Jean Barreiros Sent: Friday, July 16, 2010 1:23 PM To: delphi-br@yahoogrupos.com.br Subject: Res: [delphi-br] ClientDataSet - Out Of Memory Olá amigo qual versão do delphi você tá usando e qual SPED você star gerando o txt, Fiscal ou Contabil? === Jean Barreiros Programador/Web-Designer Delphi|C++|PHP|JavaScript FireBird|MySql|SQLServer PostGree|Oracle msn: delphij...@gmail.com e-mail: delphij...@yahoo.com.br === De: Valdemir (yahoo) valdemi...@yahoo.com.br Para: delphi-br@yahoogrupos.com.br Enviadas: Quinta-feira, 15 de Julho de 2010 18:08:49 Assunto: [delphi-br] ClientDataSet - Out Of Memory Pessoal estou montando uma rotina para gerar o sped, em um movimento pequeno ok a rotina roda legal, mas em um movimento grande ao dar insert no CDS da erro Out Of Memory, apos processar um grande numero de registros Eu tenho um CDS onde vou armazenando os dados, para depois fazer um loop e jogar no TXT, para mim foi a saída mais fácil que eu encontrei, primeiro leio as tabelas e jogo no CDS, ai no CDS já com os dados no formato do governo, faço um loop no cds e gravo para o txt A principio estava usando um CDS em memoria, e ai é logico que deu o erro, mas ao preencher a propriedade FileName com o nome do arquivo ... ele começou a gerar os dados em arquivo binário, até ai ok, mas não encontrei nenhuma propriedade que eu informo que ele descarregue da memoria ram a cada x registros, então mesmo informado a propriedade nome do arquivo .. ele cria um arquivo.. e começa o processo, mas o tamanho fica com 0 até dar out of memory, e ai o tamanho do arquivo salta de 0 para um numero em bytes que ele conseguiu gerar Da a entender que mesmo informando o FileName, ele continua trabalhando somente com memoria ram, e só descarrega ela.. quando da o erro, eu imaginei que como esta informado o nome do arquivo, ele automaticamente ao carregar a RAM iria salvar os dados em disco, procurei no help mas não encontrei nenhum método ou propriedade para isso, antigamente no bde existia uma api para isso, mas no ClientDataSet eu não encontrei Alguém faz idéia do que possa estar ocorrendo ? Obrigado Valdemir [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] ClientDataSet - Out Of Memory
na verdade .. montei um framework para gerar arquivos do governo... ele gera tanto arquivos de posição fixa (como o Sintegra), como arquivos separados com pipe (sped), entre outras funções ele visualiza os arquivos TXT como o Sintegra faz com o arquivo dele neste framework eu cadastro o layout, ou seja os registros, e cada campo com tamanho e tipo de arquivo... e eu ao gerar o txt, ele já faz algumas conferencias de acordo com o layout No sped, vc tem alguns registros Ex...I030 , que tem um campo com o total de registros do I030 que tem a quantidade de linhas do arquivo, ou seja logo no inicio do arquivo ele já me pede o total de linhas, neste caso eu tenho duas opções ou antes de gerar esta linha simulo a geração para saber o total de linhas, ou então arrumo um jeito de editar a linha apos eu gerar o arquivo inteiro. Entre gerar o arquivo e abrir o texto procurando por registro/posição no arquivo txt e ai substituir, eu preferi gravar tudo em cds e manipular o cds alterando o que é necessário From: Fabiano Moura Sent: Friday, July 16, 2010 10:49 PM To: delphi-br@yahoogrupos.com.br Subject: Re: [delphi-br] ClientDataSet - Out Of Memory *Boa noite!* Valdemir, por que você pega os dados da tabela e gera no clientdataset, não é mais fácil você pegar (restaurar) os dados do banco e jogar direto no arquivo texto? *Obrigado,* ** *Fabiano* Em 16 de julho de 2010 22:31, Valdemir (yahoo) valdemi...@yahoo.com.brescreveu: delphi 2010, sped contabil... com mais ou menos 400 mil lançamentos no ano de 2009 From: Jean Barreiros Sent: Friday, July 16, 2010 1:23 PM To: delphi-br@yahoogrupos.com.br Subject: Res: [delphi-br] ClientDataSet - Out Of Memory Olá amigo qual versão do delphi você tá usando e qual SPED você star gerando o txt, Fiscal ou Contabil? === Jean Barreiros Programador/Web-Designer Delphi|C++|PHP|JavaScript FireBird|MySql|SQLServer PostGree|Oracle msn: delphij...@gmail.com e-mail: delphij...@yahoo.com.br === De: Valdemir (yahoo) valdemi...@yahoo.com.br Para: delphi-br@yahoogrupos.com.br Enviadas: Quinta-feira, 15 de Julho de 2010 18:08:49 Assunto: [delphi-br] ClientDataSet - Out Of Memory Pessoal estou montando uma rotina para gerar o sped, em um movimento pequeno ok a rotina roda legal, mas em um movimento grande ao dar insert no CDS da erro Out Of Memory, apos processar um grande numero de registros Eu tenho um CDS onde vou armazenando os dados, para depois fazer um loop e jogar no TXT, para mim foi a saída mais fácil que eu encontrei, primeiro leio as tabelas e jogo no CDS, ai no CDS já com os dados no formato do governo, faço um loop no cds e gravo para o txt A principio estava usando um CDS em memoria, e ai é logico que deu o erro, mas ao preencher a propriedade FileName com o nome do arquivo ... ele começou a gerar os dados em arquivo binário, até ai ok, mas não encontrei nenhuma propriedade que eu informo que ele descarregue da memoria ram a cada x registros, então mesmo informado a propriedade nome do arquivo .. ele cria um arquivo.. e começa o processo, mas o tamanho fica com 0 até dar out of memory, e ai o tamanho do arquivo salta de 0 para um numero em bytes que ele conseguiu gerar Da a entender que mesmo informando o FileName, ele continua trabalhando somente com memoria ram, e só descarrega ela.. quando da o erro, eu imaginei que como esta informado o nome do arquivo, ele automaticamente ao carregar a RAM iria salvar os dados em disco, procurei no help mas não encontrei nenhum método ou propriedade para isso, antigamente no bde existia uma api para isso, mas no ClientDataSet eu não encontrei Alguém faz idéia do que possa estar ocorrendo ? Obrigado Valdemir [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
Re: [delphi-br] ClientDataSet - Out Of Memory
Eu já tive problemas utilizando TClientDataSet em memória parecido com isso devido a grande quantidade de registros, sem falar no desempenho deplorável. Agora utilizo um componente da devart chamado VirtualTable que vem junto com o ODAC da devart, mais é pago. Se não me engano, o JEDI VCl tem um componente chamado TJvMemoryTable, nunca usei, mais acredito ser mais otimizado. Em 15 de julho de 2010 18:08, Valdemir (yahoo) valdemi...@yahoo.com.brescreveu: Pessoal estou montando uma rotina para gerar o sped, em um movimento pequeno ok a rotina roda legal, mas em um movimento grande ao dar insert no CDS da erro Out Of Memory, apos processar um grande numero de registros Eu tenho um CDS onde vou armazenando os dados, para depois fazer um loop e jogar no TXT, para mim foi a saída mais fácil que eu encontrei, primeiro leio as tabelas e jogo no CDS, ai no CDS já com os dados no formato do governo, faço um loop no cds e gravo para o txt A principio estava usando um CDS em memoria, e ai é logico que deu o erro, mas ao preencher a propriedade FileName com o nome do arquivo ... ele começou a gerar os dados em arquivo binário, até ai ok, mas não encontrei nenhuma propriedade que eu informo que ele descarregue da memoria ram a cada x registros, então mesmo informado a propriedade nome do arquivo .. ele cria um arquivo.. e começa o processo, mas o tamanho fica com 0 até dar out of memory, e ai o tamanho do arquivo salta de 0 para um numero em bytes que ele conseguiu gerar Da a entender que mesmo informando o FileName, ele continua trabalhando somente com memoria ram, e só descarrega ela.. quando da o erro, eu imaginei que como esta informado o nome do arquivo, ele automaticamente ao carregar a RAM iria salvar os dados em disco, procurei no help mas não encontrei nenhum método ou propriedade para isso, antigamente no bde existia uma api para isso, mas no ClientDataSet eu não encontrei Alguém faz idéia do que possa estar ocorrendo ? Obrigado Valdemir [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM * Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages * Para falar com o moderador, envie um e-mail para: delphi-br-ow...@yahoogrupos.com.br Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ * Para sair deste grupo, envie um e-mail para: delphi-br-unsubscr...@yahoogrupos.com.br * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [delphi-br] ClientDataSet - Out Of Memory
Valdemir, se você prefere jogar os dados num ClientDataset para depois passar para um TXT, não precisa acumular todos os dados no ClientDataset para só no final gravar no TXT. Faça isso registro a registro, assim você só manterá em memória um registro por vez. -- Dirlei Dionísio http://MaisQueBomCodigo.blogspot.com Em 15 de julho de 2010 18:19, Fabricio Colombo fabricio.colombo@gmail.com escreveu: Eu já tive problemas utilizando TClientDataSet em memória parecido com isso devido a grande quantidade de registros, sem falar no desempenho deplorável. Agora utilizo um componente da devart chamado VirtualTable que vem junto com o ODAC da devart, mais é pago. Se não me engano, o JEDI VCl tem um componente chamado TJvMemoryTable, nunca usei, mais acredito ser mais otimizado. Em 15 de julho de 2010 18:08, Valdemir (yahoo) valdemi...@yahoo.com.brescreveu: Pessoal estou montando uma rotina para gerar o sped, em um movimento pequeno ok a rotina roda legal, mas em um movimento grande ao dar insert no CDS da erro Out Of Memory, apos processar um grande numero de registros Eu tenho um CDS onde vou armazenando os dados, para depois fazer um loop e jogar no TXT, para mim foi a saída mais fácil que eu encontrei, primeiro leio as tabelas e jogo no CDS, ai no CDS já com os dados no formato do governo, faço um loop no cds e gravo para o txt A principio estava usando um CDS em memoria, e ai é logico que deu o erro, mas ao preencher a propriedade FileName com o nome do arquivo ... ele começou a gerar os dados em arquivo binário, até ai ok, mas não encontrei nenhuma propriedade que eu informo que ele descarregue da memoria ram a cada x registros, então mesmo informado a propriedade nome do arquivo .. ele cria um arquivo.. e começa o processo, mas o tamanho fica com 0 até dar out of memory, e ai o tamanho do arquivo salta de 0 para um numero em bytes que ele conseguiu gerar Da a entender que mesmo informando o FileName, ele continua trabalhando somente com memoria ram, e só descarrega ela.. quando da o erro, eu imaginei que como esta informado o nome do arquivo, ele automaticamente ao carregar a RAM iria salvar os dados em disco, procurei no help mas não encontrei nenhum método ou propriedade para isso, antigamente no bde existia uma api para isso, mas no ClientDataSet eu não encontrei Alguém faz idéia do que possa estar ocorrendo ? Obrigado Valdemir [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM