Olá Junior, Vc tá no caminho. O mais correto é vc ler as informações via cursor pois assim não consome muita memória para armazenas. Não sei qual componente vc está usando mas caso aceite, desabilite o fetchAll do dataset de leitura. Outro artifício q vc pode usar é ao invés de abrir um dataset e dar append vc montar uma query de insert com os devidos parametros e somente fornecer os parâmetros do insert para cada registro de origem. Trabalhe com parâmetros pois a maioria dos componente DBWare otimizam junto ao banco a execução da DML. Assim a aplicação irá consumir pouca memória pois os dados estarão sendo lido via cursor e inseridas no banco através de inserts diretos. []´s Sergio Uetanabaro
_____ De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Red Mosquito Enviada em: quarta-feira, 24 de outubro de 2007 04:06 Para: [EMAIL PROTECTED]; delphi-br@yahoogrupos.com.br Assunto: [delphi-br] ClientDataSet estourando memória Delphi 7 com SQLServer usando ADO Tenho 5 tabelas. NF_COMPRA e ITENS_NF_COMPRA, NF_VENDA e ITENS_NF_VENDA e MOVIMENTO_ESTOQUE Objetivo: -Ler nf_compra e seus respectivos itens e gerar MOVIMENTO_ESTOQUE (entrada) -Ler nf_venda e seus respectivos itens e gerar MOVIMENTO_ESTOQUE (saida) -Atualizar o saldo diário do produto cf a inserção de registros em Mov.Est. Cada tabela tem um ClientDataSet, já que são precisos vários campos das tabelas para serem gravados em MOVIMENTO_ESTOQUE. O problema é que cf vou lendo mais registros a memória do windows vai indo pro espaço. Exemplo: -Dou um select em NF_COMPRA (ex: nf 00001) -em seguida dou um select somente nos produtos desta NF_COMPRA 00001 -para cada registro em ITENS_NF_COMPRA eu gero um registro em MOVIMENTO_ESTOQUE -dou um close nos CDSs NF_COMPRA e ITENS_NF_COMPRA -dou um createDS nesses 2 CDSs -dou um open nesses 2 CDSS (o mesmo procedimento faço com Vendas) Colocando close+createDS+open a memória aguenta mais tempo. Se não colocar dá memória insuficiente rapidinho Estou procedendo corretamente ? Há alguma forma de liberar o CDS da memória ? Sei que deve haver formas mais fáceis, porém este programa eu já peguei pronto. Obrigado pela atenção Junior [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]