Could nt perform the edit because another user changed the record
Aqui no serviço contém um sistema em Delphi 5, utilizando o banco de dados SQL Server 2008, onde utiliza os componentes TTable, TDBEdit, TStoredProcedure, entre outros do mesmo estilo do TDBEdit. Em algumas máquinas quando vai alterar um registro aparece a seguinte mensagem de erro:
Could nt perform the edit because another user changed the record
Uma coisa que pude perceber é que essas máquinas quando vai alterar os registros, contém campos do tipo Money e está passando o separador decimal diferente, se tem que passar . (ponto final) passa a , (vírgula), com isso o objeto TTable monta o script de UPDATE que pegamos no PROFILE, contendo os filtros todos os campos que não foram alterados, e no SET somente os alterados, e no filtro contém o valor com o separador decimal trocado, creio que seja esse o erro. A configuração regional está tudo certo, a configuração do servidor está tudo correto, tem mais algum lugar que pode verificar a configuração do separador de milhar e decimal.
Could nt perform the edit because another user changed the record
Uma coisa que pude perceber é que essas máquinas quando vai alterar os registros, contém campos do tipo Money e está passando o separador decimal diferente, se tem que passar . (ponto final) passa a , (vírgula), com isso o objeto TTable monta o script de UPDATE que pegamos no PROFILE, contendo os filtros todos os campos que não foram alterados, e no SET somente os alterados, e no filtro contém o valor com o separador decimal trocado, creio que seja esse o erro. A configuração regional está tudo certo, a configuração do servidor está tudo correto, tem mais algum lugar que pode verificar a configuração do separador de milhar e decimal.
Bruno Batista
Curtidas 0
Respostas
Anizair Lopes
06/01/2012
Isso é problema com as configaurações regionais, mas como você já falou que as configurações regionais estão todas configuradas corretamente, então a solução é você configurar as configurações no seu próprio sistema, ou seja, não depender mais do sistema operacional abaixo segue um pedaço de codigo que pode lhe ajudar
var fs : TFormatSettings; float : double; myValueAsText : String; begin GetLocaleFormatSettings(0,fs); fs.Decimalseparator := ,; myValueAsText := 0,0039; float := StrToFloat(MyValueAsText,fs); end;
GOSTEI 0