Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá Pessoal,
estou fazendo uma manutenção em um sistema e ao tentar alterar um valor de um campo aparece o seguinte erro na tela:
Microsoft Cursor Engine error '80040e38'
Row cannot be located for updating. Some values may have been changed since it was last read.
produtos_alterar.asp, line 125
Descobri que esse erro ocorre quando tento alterar um campo que fica gravado o valor. Esse campo é um FLOAT com length 10 e decimals 2.
Esse campo está sendo enviado ao banco pelo formulário como o seguinte valor 0,55.
O código ASP utilizado para gravar a informação é o seguinte:
Set ObjRs = Server.CreateObject("ADODB.Recordset")
Sql = "SELECT * FROM produtos WHERE id = " &Request.Form("id")
ObjRs.Open Sql, Conexao
If Request.Form("peso") <> "" Then
valor = Trim(Request.Form("peso"))
valor = Replace(valor,".","")
valor = Replace(valor,",",".")
If FormatNumber(Replace(Replace(FormataValor(ObjRs("peso")),".",""),",",".")) <> FormatNumber(valor) Then
ObjRs("peso") = valor
End If
End If
ObjRs.UpdateBatch
ObjRs.Close
Set ObjRs = Nothing
Antes de gravar o valor existe uma condição que faz o ajuste da virgula. Será que pode ser isso o erro?
Alguem tem alguma dica?
Não adiantou muito essa dica.
Alguem que faça de uma forma diferente poderia mostrar um exemplo?
E formatar o valor com cdbl ?
Vinicius,
como você gravar os valores de seus sistemas em campos FLOAT?
Será que você poderia colocar um codigo de exemplo...
Para ver como tratar o valor antes de gravar no banco.
Para campo float eu preciso enviar o valor com pontos apenas? sem virgula? tipo assim: 345.00 para R$345,00
o mysql trata as casas decimais com ponto no formato americano: 1,234.56
eu deixo com virgulas no processo de cadastro, para facilitar o entendimento para o usuario, 1.234,56 mas ao inserir uso um replace e deixo no padrão do mysql :)
no formatnumber, você manda formatar, mas não especifica uma condição de formato.
tenta assim: formatnumber(valor,2)
desse modo você informa que o valor precisa ser formatado com 2 casas decimais.