Update con decimales

10/06/2008 - 18:27 por Mastercafe | Informe spam
Buenas tardes grupo,
Tengo una consulta de actualización que uso en asp
strsqlrating="UPDATE " & cmdvarTbl & " SET ctrlrates = ctrlrates + " &
cmdvarRATE & ", ctrlnorates = ctrlnorates + 1, ctrlratesval=(ctrlrates + " &
cmdvarRATE & ")/(ctrlnorates + 1) WHERE " & cmdIndice & " = " & cmdvarID

El tema es que lo hace bien salvo el campo ctrlratesval que deberia
almacenar la operación con 1 decimal (el campo destino es Numeric Precision
10 escala 1), los campos de ctrlnorates y ctrlrates son enteros (no uso
decimales).
Un ejemplo: tengo ctrlrates=9 ctrlnorates=2 en teoria deberia haber guardado
en ctrlratesval=4,5 pero tengo un 4 (9/2=4,5)

He probado con round y con format pero tampoco, la duda es si el problema
esta en la operación ya que son dos enteros a dividirse y el resultado lo
asume como entero o bien debo usar un convert o similar.

Gracias

Saludos desde Oviedo (Asturias)

Juan Menéndez
Mastercafe SL
www.mastercafe.com
info@mastercafe.com
Oviedo (Asturias)

Si la información recibida te ha servido indicalo con otro post.
En caso de resolverlo por otros medios, indica la solución usada
ayudaras a otros y aprenderemos todos.
 

Leer las respuestas

#1 Alejandro Mesa
10/06/2008 - 20:02 | Informe spam
La division entre enteros da como resultado un entero, los decimales son
truncados. Usa CAST / CONVERT o multiplica uno de los operandos por el valor
decimal 1.00 para que SQL Server haga la conversion implicitamente.

ctrlratesval=(ctrlrates + " & cmdvarRATE & ")/(ctrlnorates + 1)



ctrlratesval=(ctrlrates + " & cmdvarRATE & ")/(ctrlnorates + 1.0)


AMB

"Mastercafe" wrote:

Buenas tardes grupo,
Tengo una consulta de actualización que uso en asp
strsqlrating="UPDATE " & cmdvarTbl & " SET ctrlrates = ctrlrates + " &
cmdvarRATE & ", ctrlnorates = ctrlnorates + 1, ctrlratesval=(ctrlrates + " &
cmdvarRATE & ")/(ctrlnorates + 1) WHERE " & cmdIndice & " = " & cmdvarID

El tema es que lo hace bien salvo el campo ctrlratesval que deberia
almacenar la operación con 1 decimal (el campo destino es Numeric Precision
10 escala 1), los campos de ctrlnorates y ctrlrates son enteros (no uso
decimales).
Un ejemplo: tengo ctrlrates=9 ctrlnorates=2 en teoria deberia haber guardado
en ctrlratesval=4,5 pero tengo un 4 (9/2=4,5)

He probado con round y con format pero tampoco, la duda es si el problema
esta en la operación ya que son dos enteros a dividirse y el resultado lo
asume como entero o bien debo usar un convert o similar.

Gracias

Saludos desde Oviedo (Asturias)

Juan Menéndez
Mastercafe SL
www.mastercafe.com

Oviedo (Asturias)

Si la información recibida te ha servido indicalo con otro post.
En caso de resolverlo por otros medios, indica la solución usada
ayudaras a otros y aprenderemos todos.


Preguntas similares