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.

Preguntas similare

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.


Respuesta Responder a este mensaje
#2 Luis Mata
10/06/2008 - 22:33 | Informe spam
y has probado:
print str(12.15,12,2)



Att
Luis Mata Figueroa
Área Informática
Centro Cerámico Las Flores SAC
RPC: 993597297
TEL: 6174613


"Mastercafe" escribió en el mensaje
news:
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.
Respuesta Responder a este mensaje
#3 Mastercafe
11/06/2008 - 00:48 | Informe spam
No pensaba que fuera tan simple el problema, en efecto ha sido poner el 1.0
en lugar de 1 y la operación la hace bien con su decimal.

Muchas 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.

"Alejandro Mesa" escribió en el
mensaje de noticias:
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.


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida