Fórum Couldn´t perform the edit because another... (de novo!) #340922
25/04/2007
0
Pessoal,
Já pesquisei muito no fórum aqui e no Google e não achei ajuda/solução para o problema com a mensagem:
[b:dd6325680e]Couldn´t perform the edit because another user changed the record[/b:dd6325680e].
Estou usando Delphi 7, com BDE, com SQL Server 7. Detalhe: estou usando uma [b:dd6325680e]Query [/b:dd6325680e]para trazer os dados com a opção [b:dd6325680e]RequestLive = True[/b:dd6325680e] e [b:dd6325680e]UpdateMode = upWhereChanged[/b:dd6325680e].
Essa tabela é de cálculo de ponto e faço muitas contas nela. Mas ela toda hora apresenta a mensagem acima e só excluindo a linha para corrigir. Vi algo sobre o BDE não comportar muitas casas decimais nos cálculos então nas [b:dd6325680e]minhas funções de conversão de hora eu jogo tudo para 3 casas decimais[/b:dd6325680e].
Já tentei usar [b:dd6325680e]CachedUpdates = True [/b:dd6325680e]. Aí calcula tudo bem, bonito mesmo. Mas na hora de dar um ApplyUpdates e/ou CommitUpdates a mensagem insiste, volta, aparecer. Antes que esqueça: não posso trocar por ADO.
Alguma sugestão do que possa estar causando esse problema? Gastei 3 dias nessa programa para chegar até aqui e não ter mais solução. Alguma ajuda?
Abraços a todos,
Willian Lopes
Já pesquisei muito no fórum aqui e no Google e não achei ajuda/solução para o problema com a mensagem:
[b:dd6325680e]Couldn´t perform the edit because another user changed the record[/b:dd6325680e].
Estou usando Delphi 7, com BDE, com SQL Server 7. Detalhe: estou usando uma [b:dd6325680e]Query [/b:dd6325680e]para trazer os dados com a opção [b:dd6325680e]RequestLive = True[/b:dd6325680e] e [b:dd6325680e]UpdateMode = upWhereChanged[/b:dd6325680e].
Essa tabela é de cálculo de ponto e faço muitas contas nela. Mas ela toda hora apresenta a mensagem acima e só excluindo a linha para corrigir. Vi algo sobre o BDE não comportar muitas casas decimais nos cálculos então nas [b:dd6325680e]minhas funções de conversão de hora eu jogo tudo para 3 casas decimais[/b:dd6325680e].
Já tentei usar [b:dd6325680e]CachedUpdates = True [/b:dd6325680e]. Aí calcula tudo bem, bonito mesmo. Mas na hora de dar um ApplyUpdates e/ou CommitUpdates a mensagem insiste, volta, aparecer. Antes que esqueça: não posso trocar por ADO.
Alguma sugestão do que possa estar causando esse problema? Gastei 3 dias nessa programa para chegar até aqui e não ter mais solução. Alguma ajuda?
Abraços a todos,
Willian Lopes
Willian
Curtir tópico
+ 0
Responder
Posts
26/04/2007
Willian
Selecionei o modo de atualização da query e coloquei UpdateKeyOnly.
No ProviderFlags dos outros campos coloquei tudo false.
Rodou bonito!!!
:D
No ProviderFlags dos outros campos coloquei tudo false.
Rodou bonito!!!
:D
Responder
Gostei + 0
28/01/2008
Alanrolemberg
Estava com esse problema num sistema a meses... Sempre que eu colocava a query em Edit mode e tentava postar numa tabela específica, o banco de dados retornava: ´Couldn´t perform the edit because the record was changed by another user´
Li vários foruns e deu pra ver que todo mundo que usa Delphi + SQL Server ou MySQL se depara com ele.
Li vários foruns e todos eles davam diversas soluções, como por exemplo:
- dar um REFRESH na query antes de dar o POST;
- substituir o POST por um query com UPDATE;
- usar SET NOCOUNT OFF no SQL;
O update eu descartei, pois era uma solução meio armengada.
Lutei umas 3 semanas com o problema e desisti.
Agora, depois de uns 6 meses ignorando o erro, o mesmo apareceu em uma outra parte CRUCIAL do sistema, e eu tinha que resolver ele a qualquer custo.
Contatei um programador mais experiente, e este analisando os dados me mostrou porque a maldita mensagem aparecia... é um erro na conversação entre o Delphi e o SQL e deve ser resolvido NO BANCO DE DADOS... não adianta reescrever seu código mil vezes e tentar rodar...
Aí vai minhas dicas pra que esse erro suma das aplicações.
- Não use campos do tipo BIT nas suas tabelas. Esse tipo de dados não conversa bem com o Delphi.
- Não use campos do tipo Money. Substitua eles por NUMERIC mesmo.
Ao fazer essas duas alterações esse erro sumiu da aplicação daqui...
E o que mais me revolta é que a mensagem de erro não tem NADA A VER com a causa... dá a entender que a tabela está TRAVADA com algum LOCK ou algo do tipo... mas n tem nada a ver...
Remexam num Backup do banco pra ver qual o tipo de dados que está conflitando... [:)]
Li vários foruns e deu pra ver que todo mundo que usa Delphi + SQL Server ou MySQL se depara com ele.
Li vários foruns e todos eles davam diversas soluções, como por exemplo:
- dar um REFRESH na query antes de dar o POST;
- substituir o POST por um query com UPDATE;
- usar SET NOCOUNT OFF no SQL;
O update eu descartei, pois era uma solução meio armengada.
Lutei umas 3 semanas com o problema e desisti.
Agora, depois de uns 6 meses ignorando o erro, o mesmo apareceu em uma outra parte CRUCIAL do sistema, e eu tinha que resolver ele a qualquer custo.
Contatei um programador mais experiente, e este analisando os dados me mostrou porque a maldita mensagem aparecia... é um erro na conversação entre o Delphi e o SQL e deve ser resolvido NO BANCO DE DADOS... não adianta reescrever seu código mil vezes e tentar rodar...
Aí vai minhas dicas pra que esse erro suma das aplicações.
- Não use campos do tipo BIT nas suas tabelas. Esse tipo de dados não conversa bem com o Delphi.
- Não use campos do tipo Money. Substitua eles por NUMERIC mesmo.
Ao fazer essas duas alterações esse erro sumiu da aplicação daqui...
E o que mais me revolta é que a mensagem de erro não tem NADA A VER com a causa... dá a entender que a tabela está TRAVADA com algum LOCK ou algo do tipo... mas n tem nada a ver...
Remexam num Backup do banco pra ver qual o tipo de dados que está conflitando... [:)]
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)