Fórum ajuda com gravação em tabela #427149

25/10/2012

0

ola pessoal, estou com um grande problema , não sei se e erro meu ou algum bug do delphi, estou usando o 2010,

o problema e o seguinte :

tenho uma tabela , que tem um campo chamado gravado, inclui este campo agora depois de muito tempo de uso da tabela, tabela esta que esta com quase 15000 registros.

ate ai tudo obem, mas o meu problema e que tenho que gravar a palavra SIM neste campo chamado GRAVADO , ate ai tudo facil, mas quando clico no botao para realizar o serviço ele começa mas trava no inicio apos alguns registros atualizado.

o form fica todo branco. o compuitador trava.

nao sei mais o que fazer

uso firebird 2.5

minha rotina e assim

WHILE NOT CDS_DADOS.EOF DO
BEGIN
CDS_DADOS.EDIT;
CDS_DADOSGRAVADO.AsString:= 'SIM';
CDS_DADOS.POST;
APPLYUPDATE(0);
CDS_DADOS.NEXT;
END

sera que estou fazendo o processo errado, mas nao tem como e muito simples

e so o processo iniciar e o form fica todo branco , o ocomputador nao responde

pensei em comitar somentet depois de gravar no ultimo registro, talves resolva

se alguem ja teve este problema me ajude

pois não erntendi, não era pra dar problema, o negocio e simples demais

obrigado

Edson Melo

Edson Melo

Responder

Posts

25/10/2012

Joel Rodrigues

O ApplyUpdate não precisaria ser chamado somente após a alteração de todos os registros? Assim todas as alterações seriam persistidas de uma vez, não uma a uma.
Responder

Gostei + 0

25/10/2012

Alisson Santos

O ideal é usar o trt finally aonde depois de toda a operação você fã o applyuldate, pois a demora e por estar comitando um a um.
Responder

Gostei + 0

25/10/2012

Alisson Santos

O ideal é usar o trt finally aonde depois de toda a operação você fã o applyuldate, pois a demora e por estar comitando um a um.
Responder

Gostei + 0

25/10/2012

Claudia Nogueira

O ideal mesmo, já que é pra tudo ficar como 'SIM' e deu a entender que esse campo só começará ser usado a partir de agora, é rodar direto um update no banco de dados.

UPDATE TABELA SET GRAVADO = 'SIM'
Responder

Gostei + 0

26/10/2012

Edson Melo

alisom tambem acho, como sao muitos registros 15000, se eu ficar comitando como se diz um a um , o sistema se perde e trava, deixando o form todo branco. que e o sinal que o sistema travou.

tentei tambem fazer o seguinte para ver se resolve

CDS_TABELA.DisableControls

para que o sistema desabilitase a parte visual, melhorando assim a performa se mas mesmo assim nao funcionou.

este e um problema que viar e mexe me acontece e gostaria de saber como contonar, para que no futuro saiba resolver.

a so para te informar alison, este problema e do post que quero converter um arquivo do acess para firebird, consegui converter manualmente mas tive que incluir este novo campo, ja resolvi, gravei de 1000 em mil registros, como a quantidade era peauena não dava o erro. mas como te disse preciso saber o que pode estar acontecendo para se acontecer novamente eu consiga resolver ou melhor ainda fazer o uso dos comandos corretamente para que isso nao aconteca
Responder

Gostei + 0

26/10/2012

Edson Melo

ola minha amiga claudia, se assim posso dizer, e realmente este campo comeca a ser usado apartir de agora mas os 15000 registros ja inseridos terao de ter esta informacao, por isso tenho que realizar esta operacao em tosos os regiostros antigos, os novos ja serao gravados com este conteudo.

so me del uma duvida geralmente uso o seguinte processo para gravacao emn meus arquivos

CDS_DADOS.APPEND;
CDS_DADOSGRAVADO.AsString:= 'SIM';
CDS_DADOS.POST;
APPLYUPDATE(0);

NAO SE3I COMO utilizar este seu exemplo, se puder me exclareca com um exemplo

atenciosamente

edson garcia de melo
Responder

Gostei + 0

26/10/2012

Edson Melo

ola joel segundo sua resposta

O ApplyUpdate não precisaria ser chamado somente após a alteração de todos os registros? Assim todas as alterações seriam persistidas de uma vez, não uma a uma

R= O ApplyUpdate não precisaria ser chamado somente após a alteração de todos os registros?, esta confuso pois aqui voce informa que nao preciso usart o applyupdate apos fazer todas as edicoes.

pensei neste caso para ver se conseguia ganhar performase na gravacao, ou seja so gravaria fisicamene apos o ultimo registro ser inserido em memoria

R= não uma a uma. Este e o processo usado no modo original colocado no botao do meu sistema

mas travava mesmo assim.


agradeco pelo resposta e boa vontade em me exclarecer
Responder

Gostei + 0

26/10/2012

Edson Melo

alison, na sua mensagem me questiona sobre o caso da demora do processo. nao e isso o meu objetivo, minha duvida e porque o sistema trava, apos iniciar o processo. nao tenho a minima duvida sobre os comandos usados, o processo e facil demais, nao entendi o porque do travamento e a minha duvida seria que (o sistema trava por motivo do grande numero de registros, ou de eu estar comitando de um em um registro)

entendeu
Responder

Gostei + 0

26/10/2012

Claudia Nogueira

Edson é só abrir o programa que você usa pra administrar o banco de dados, eu uso o ibexpert, aí é só copiar o comando
UPDATE TABELA SET GRAVADO = 'SIM'
na opção Tools>SQLEditor e clicar em Execute(F9) e depois dar um Commit(Ctrl+Alt+C). O commit é o botão vermelho.
Responder

Gostei + 0

02/11/2012

Edson Melo

obrigado claudia , tambem uso o ibexpert , vou tentar executar sua sugestao, me desculpe a demora em responder, e que nao tenho internet e so acesso quando vou a lan house.

mas se puder me ajudar mais uma vez tenho um outro post que e muito inportante e sobre backup e ibexpert, estou tendo problema serios.

ate breve
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar