Erro ao efetuar o ApplyUpdates no ClientDataSet
Saudações a todos.
Está ocorrendo o seguinte erro quando chamo o evento AplyUpdates após alterar o registro de um clientdataset:
´SQL Server Error: arithmetic exception, numeric overflow, or string truncation´
Na inserção não ocorre o problema apenas na alteração. No banco existe um gatilho o qual desativei pensando que o erro era gerado pelo mesmo, mas não adiantou.
Estou usando como BD o Firebird 1.5.
Abraço
Elessandro
Está ocorrendo o seguinte erro quando chamo o evento AplyUpdates após alterar o registro de um clientdataset:
´SQL Server Error: arithmetic exception, numeric overflow, or string truncation´
Na inserção não ocorre o problema apenas na alteração. No banco existe um gatilho o qual desativei pensando que o erro era gerado pelo mesmo, mas não adiantou.
Estou usando como BD o Firebird 1.5.
Abraço
Elessandro
Elessandro Gobet
Curtidas 0
Respostas
Edilcimar
09/01/2006
o problema pode ser que vc está colocando palavras com acento ou Ç com um charset que não suporta isto
GOSTEI 0
Martins
09/01/2006
Então o erro só acontece quando vc altera alguma informação?
verifique se o charset q vc está utilizando suporta caracteres (ç, Ç, é, ã, etc...), ou então poste o código.
Boa sorte!!
verifique se o charset q vc está utilizando suporta caracteres (ç, Ç, é, ã, etc...), ou então poste o código.
Boa sorte!!
GOSTEI 0
Elessandro Gobet
09/01/2006
Problemas com o charset não é pois o registro possui somente números. Verifiquei mesmo assim ele e esta corrreto (iso8859_1). Debuguei o código até as profundezas do Provider e descobri que no momento de executar o SQL de atualização (update), o provider monta o sql com os valores da cláusula where incorretos. Por exemplo em um dos campos da chave, o qual é integer, é colocado um valor absurdo, lixo provavelmente(12229062896´).
Tenho dois conjuntos DBXpress para fazer uma ligação mestre detalhe, acredito que o problema esteja em alguma particularidade dessa ligação. Po´rem ainda não achei a causa.
Tenho dois conjuntos DBXpress para fazer uma ligação mestre detalhe, acredito que o problema esteja em alguma particularidade dessa ligação. Po´rem ainda não achei a causa.
GOSTEI 0
Bruno Belchior
09/01/2006
Você está trabalhando com Mestre Detalhe? Se Positivo utilize o evento [b:c7765c1410]OnGetTableName[/b:c7765c1410] para setar o nome da tabela em questão...
GOSTEI 0
Bruno Belchior
09/01/2006
[quote:306b028e2b=´Bruno Belchior´]Você está trabalhando com Mestre Detalhe? Se Positivo utilize o evento [b:306b028e2b]OnGetTableName[/b:306b028e2b] para setar o nome da tabela em questão...[/quote:306b028e2b]Hum, pela sua mensagem acho que esse não será o caminho, a mensagem me parece ser porque o valor passado para o campo Integer excede o suportado por esse campo já que seus limites variam de -2147483648 até 2147483647...
GOSTEI 0
Elessandro Gobet
09/01/2006
Também acredito que seja isso, porém não sou eu que passa o valor, e sim o DataSetProvider que monta o sql para atualização com esse valor absurdo. Debugando cheguei até o ponto que o DataSetProvider gera a seguinte instrução SQL:
[i:fecab9af5e]update GES_ITENSMOVNOTA set ITMV_CODEMPCONT = 752, ITMV_DESCCOMPL = ´´ where ITMV_CODEMPCONT = 752 and ITMV_SUBSER = 1 and ITMV_NUMNOTA = [b:fecab9af5e]1229062896[/b:fecab9af5e] and ITMV_SEQ = 3
[/i:fecab9af5e]
no campo ITMV_NUMNOTA ele iguala a um valor absurdo...isso que não entendo.
[i:fecab9af5e]update GES_ITENSMOVNOTA set ITMV_CODEMPCONT = 752, ITMV_DESCCOMPL = ´´ where ITMV_CODEMPCONT = 752 and ITMV_SUBSER = 1 and ITMV_NUMNOTA = [b:fecab9af5e]1229062896[/b:fecab9af5e] and ITMV_SEQ = 3
[/i:fecab9af5e]
no campo ITMV_NUMNOTA ele iguala a um valor absurdo...isso que não entendo.
GOSTEI 0
Bruno Belchior
09/01/2006
e você atualiza esse campo?
GOSTEI 0
Elessandro Gobet
09/01/2006
No exemplo que coloquei sim, mas em outros testes que fiz não alterei o valor do campo. O mesmo é incluído na cláusula where da atualização automaticamente pelo provider já que indiquei que o mesmo faz parte da chave (PfInKey=True).
GOSTEI 0