Insert de vez enquando insere mais registros do mesmo (dupla, tripla, quintuplica inserção)
Pessoal, tenho o seguinte problema:
De vez enquando ao incluir um registro acaba por incluir registros duplicados.
Noto que isso já aconteceu comigo a um ano atrás quando usava SQL Server como banco.
Agora acontece quando estou usando o Firebird.
Uso como componentes de gravação:
SQLConnection+SqlDataset+DataSetProvider+ClientDataset(com comando sql de inserção).
Observei que estes problemas ocorreram no momento em que o servidor só um pouco lento.
Por exemplo ao estar rodando o antivirus.
No sql server só acabou este problema quando pararam de rodar o antivirus no mesmo horário que muitos usuários estão usando o sistema.
Será que se montar stored procedure resolve?
Alguem já vivenciou algo semelhante?
De vez enquando ao incluir um registro acaba por incluir registros duplicados.
Noto que isso já aconteceu comigo a um ano atrás quando usava SQL Server como banco.
Agora acontece quando estou usando o Firebird.
Uso como componentes de gravação:
SQLConnection+SqlDataset+DataSetProvider+ClientDataset(com comando sql de inserção).
Observei que estes problemas ocorreram no momento em que o servidor só um pouco lento.
Por exemplo ao estar rodando o antivirus.
No sql server só acabou este problema quando pararam de rodar o antivirus no mesmo horário que muitos usuários estão usando o sistema.
Será que se montar stored procedure resolve?
Alguem já vivenciou algo semelhante?
Clayton Silva
Curtidas 0
Respostas
Carlos Mazzi
12/05/2010
Dificilmente seria por processo da maquina, como um antivirus, ou coisa do tipo.. senao servidores comuns, estariam ferrados!
Voce tem algum metodo rodando com algum componente tTimer(relogio), isso pode dificultar algumas coisas, no meio,...
Ou reveja algum laço, que vc tem de teste, ou nos metodos de insercao dos seus cadastros.. (Isso é se acontece em qualquer tela de cadastro de sua aplicacao, caso contrario, vc tem um erro pontual, ou seja, somente em uma ou outra tela...)
GOSTEI 0
Clayton Silva
12/05/2010
Dificilmente seria por processo da maquina, como um antivirus, ou coisa do tipo.. senao servidores comuns, estariam ferrados!
Voce tem algum metodo rodando com algum componente tTimer(relogio), isso pode dificultar algumas coisas, no meio,...
Ou reveja algum laço, que vc tem de teste, ou nos metodos de insercao dos seus cadastros.. (Isso é se acontece em qualquer tela de cadastro de sua aplicacao, caso contrario, vc tem um erro pontual, ou seja, somente em uma ou outra tela...)
Laço não tem,
Timer tem no form principal.
Vou rever...
GOSTEI 0
Emerson Nascimento
12/05/2010
sempre que você fizer algo dentro de um timer, desligue-o assim que entrar e religue-o antes de sair, porque se você tiver um procedimento que leva mais tempo que o intervalo do timer, os processos poderão "encavalar". se isso for um problema, faça:
procedure TForm1.Time1Timer(Sender TObject);
begin
Timer1.Enabled := False; // desliga o timer
try
[seus procedimentos e cração de objetos]
finnaly
[destroi os objetos criados]
Timer1.Enabled := True; // religa o timer
end
end
procedure TForm1.Time1Timer(Sender TObject);
begin
Timer1.Enabled := False; // desliga o timer
try
[seus procedimentos e cração de objetos]
finnaly
[destroi os objetos criados]
Timer1.Enabled := True; // religa o timer
end
end
GOSTEI 0