Dúvida com transfeência de Registro

Delphi

16/06/2005

Estou fazendo um programa de tranferência de um ClientDataSet para outro. É bem simples, eu abro o Primeiro Client, dou um Apend no Segundo e Copio os ddados de Primeiro para o segundo. A cada 1000 Posts, eu executo um Apply no Segundo. Estou calculando o tempo de demora a cada 1000 Registros copiados e este número vai crescendo conforme o número de regsitros aumenta. O que devo fazer para que este número não aumente a cada 1000 tranferências?
Valew


Seu_madruga

Seu_madruga

Curtidas 0

Respostas

Sremulador

Sremulador

16/06/2005

já tentou executar a transação, esvaziar a memória...


GOSTEI 0
Seu_madruga

Seu_madruga

16/06/2005

já tentou executar a transação, esvaziar a memória...


Executar a transação? Não sei fazer isso cara. A única coisa que eu faço quando dou o Apply no Segundo Client, eu fecho ele e abro novamnete para esvaziar o Data mas nem sei se isso resolve. Agora esvaziar a memória não sei, como eu faço isso?


GOSTEI 0
Seu_madruga

Seu_madruga

16/06/2005

Ninguém?
Alguém já fez este tipo de rotina?


GOSTEI 0
Isabelct

Isabelct

16/06/2005

Qual banco de dados você utiliza? Acho que o ideal seria você aplicar o Commit após aplicar o ApplyUpdates, ou seja, a cada 1000 registros, porque assim você esvaziaria o buffer de registros pendentes para alteração, e com isso ganharia um pouco em velocidade.


GOSTEI 0
Seu_madruga

Seu_madruga

16/06/2005

Qual banco de dados você utiliza? Acho que o ideal seria você aplicar o Commit após aplicar o ApplyUpdates, ou seja, a cada 1000 registros, porque assim você esvaziaria o buffer de registros pendentes para alteração, e com isso ganharia um pouco em velocidade.


Então, mas o ApplyUpdates já não faz um Commit no Banco?
O que eu acho que está acontecendo é que o Primerio Está cheio, com todos os registros, faço a cópia dos registros para o Segundo Client, a cada 1000 eu faço um Apply e continuo a gravação. Mas o Segundo client está ficando cheio e consequentemente mais cheio. Eu preciso de alguma forma que:
1) Transfira 1000 do primeiro para o Segundo
2) Mandar os 1000 regsitros do segundo para o BD
3) Esvaziar o Segundo para receber novamnete 1000 registros

Alguém team alguma idéia do que pode estar ocazionando isso?


GOSTEI 0
Isabelct

Isabelct

16/06/2005

Então, mas o ApplyUpdates já não faz um Commit no Banco?

Não. O único comando capaz de efetivar a gravação de dados no banco de dados é o Commit.

Tente fazer como já lhe sugeri.


GOSTEI 0
Seu_madruga

Seu_madruga

16/06/2005

[quote:39b76ee6c3=´Seu_madruga´]Então, mas o ApplyUpdates já não faz um Commit no Banco?

Não. O único comando capaz de efetivar a gravação de dados no banco de dados é o Commit.

Tente fazer como já lhe sugeri.[/quote:39b76ee6c3]

Aonde eu dou Commit?
Eu mando uma clausula SQL com a instrução ´COMMIT´ ?
Eu ainda acho que o ApplyUpdates do client já jaz um commit, pois no meu programa, a cada 1000 eu executo um Apply, depois de estar em 5000 regsitros eu derrubei o programa pelo Gerenciador de Tarefas e ao olhar no Banco de Dados, ós 5000 registros estavam lá.
Não tem como eu fazer uma instrução SQL que me traga um número X de registros na ordem do banco. Ex: Me traga os primeiros 100 registros da tabela Z


GOSTEI 0
POSTAR