cancel
Showing results for 
Search instead for 
Did you mean: 

Busqueda formateada

Former Member
0 Kudos

Buenas tardes,

estoy creando una busqueda formateada dentro de una oferta de venta, pero tengo solo un problema, cuando realizo las consultas los velores me los devuelve multiplicados por 1.000.000, razon por la cual me dificulta mucho el poder realizar calculos sobre estos resultados.

ej: el valor que tengo es 18,50 y me entrega 18.500.000,00

realice select simples sobre las columnas para revisar si era problema del campo que habia creado, pero sucede lo mismo.

un ejemplo del select es el siguiente:

select $[$38.U_VM_PCaja.0]

el campo U_VM_PCaja el tipo es unidades y totales, estructura precio

si me pueden guiar se los agradeceria mucho.

Accepted Solutions (0)

Answers (4)

Answers (4)

Former Member
0 Kudos

Revisa tu configuracion regional de windows lo mas seguro es que tengas como separador de decimales "," (coma) en lugar de "." (punto) y por eso tienes las variaciones.

en esa misma configuracion puedes hacer los cambios para valores numericos y valores de moneda revisa ambos

Former Member
0 Kudos

Revisa tu configuracion regional de windows lo mas seguro es que tengas como separador de decimales "," (coma) en lugar de "." (punto) y por eso tienes las variaciones.

en esa misma configuracion puedes hacer los cambios para valores numericos y valores de moneda revisa ambos

Former Member
0 Kudos

declare @var1 numeric(19,6)

declare @var2 numeric(19,6)

declare @var3 numeric(19,6)

set @var1=$[$38.U_HT_Plista.NUMBER]+(($[$38.U_HT_Plista.NUMBER]*$[$38.U_HT_Ajuste.NUMBER])/100)

set @var2 = @var1-((@var1 * $[$38.U_HT_Desc1.NUMBER])/100)

set @var3 = @var2-((@var2 * $[$38.U_HT_Desc2.NUMBER])/100)

Select convert (float , @var3)

Esto me ayudo mucho, por el Ing.Floyola

Former Member
0 Kudos

ya lo habia intentado antes de esa manera, gracias de todas maneras.

estuve realizando unas pruebas más, y es el campo del total de la linea el problema, ya que realice la busqueda por medio de una funcion y me entrego el valor correcto, mas cuando el resultado lo ingresaba mediante la busqueda al campo total de la linea me producia el problema de que se multiplicaba el valor por 1.000.000, ahora ¿como hacer para que este campo no haga eso? no tengo la menor idea.

saludos.

felipe_loyolarodriguez
Active Contributor
0 Kudos

El campo

38.8.0 = Factor 2. cual es el factor que te aparece ahi?

Tambien aparece como 38.INV1.Factor2

Saludos

FLR

Edited by: Floyola on Jan 6, 2011 7:42 PM

Hice un select

$[$38.8.0]

y me arrojo el resultado 1,000000, creo que por ahi va el problema. ya que en dolares la coma no es igual al punto

Revisalo y me cuentas

Saludos

Edited by: Floyola on Jan 6, 2011 7:47 PM

former_member188440
Active Contributor
0 Kudos

Intenta con un CAST


cast( $[$38.15.0] as decimal (7,4))

a ver q ocurre

Former Member
0 Kudos

revise la opcion que me indicaste, pero siguio arrojando exactamente lo mismo que antes(18500000 y 1000000).

y a lo que escribio floyola, si sabia que era el factor2 el que estaba tomando y el valor inicial al llamar el producto es 1 y al consultar este valor por fuera me entrega 1 pero al hacerlo mediante busqueda formateada y poner este valor sobre cualquier columna que sea numerica o unidades y totales me entrega los 1.000.000

tambien estuvimos viendo el caso que quizas mi equipo por la configuracion regional estuviera interferiendo en el manejo de los puntos y comas, pero al cambiarlo el problema siguio.

felipe_loyolarodriguez
Active Contributor
0 Kudos

Buenas,

Realmente es muy extraño.

Prueba de esta manera


SELECT (SELECT $[$38.U_VM_PCaja.0]) * (SELECT $[$38.8.Number])

el factor siempre es 1? o lo iras modificando eventualmente...

Lo otro que puedes intentar es cambiar el "caracter separador" en Gestion / Parametrizaciones gererales / Visualizar. reemplaza la , por el . y vuelve a realizar la aritmetica.

Saludos

FLR

Edited by: Floyola on Jan 10, 2011 9:15 AM

Former Member
0 Kudos

Gracias por la ayuda a todos, el día viernes acudio un consultor de SAP y aproveche el momento para realizarle la consulta sobre este tema, y me dijo que primero tenia que transformar los datos a caracteres, luego reemplazar la , por . ya que para sql server la , representa miles, luego volver a transformarlos a numeros y realizar la operacion, y finalmente para volver a ingresarlo al campo total convertirlo a caracteres y reemplzar el . por la ,. Despues de todo esto logro salir el resultado correctamente.

adjunto la solucion por si alguien llega a tener le mismo problema.

SELECT replace(cast(cast(replace(cast($[$38.8.0] as char(15)), '.000000', '') as int) * cast(replace($[$38.U_VM_PCaja.0], ',', '.') as numeric(19,6)) as char(15)), '.', ',')

Muchas gracias a todos.

felipe_loyolarodriguez
Active Contributor
0 Kudos

Que bueno que lo pudiste resolver

Realmente habia una aritmetica bien complicada.

Gracias por postear el resultado

Saludos

felipe_loyolarodriguez
Active Contributor
0 Kudos

Buenas

Se supone que al ejecutar esa busqueda formateada me deberia arrojar los 18.50 que estan en tu campo de usuario?

En ese campo que se guarda? cantidades, precio, neto?

podrias anexar un pantallazo de una muestra para ver mejor el problema...

Saludos

FLR

Former Member
0 Kudos

exacto!, deberia arrojarme los 18,50 mas aun me arroja lo mismo pero "multiplicado por 1000000". En la imagen que anexo veras que traigo los 18,50 que se encuentran en un campo definido por usuario en el maestro de producto, pero al intentar trabajar con ese dato y otros más de la oferta de venta, me trae los valores multiplicados por 1000000.

Pantallaso

felipe_loyolarodriguez
Active Contributor
0 Kudos

Buenas

Ejecuta la Busqueda asi y veamos que pasa


SELECT $[$38.U_VM_PCaja.Number]

Saludos

FLR

Former Member
0 Kudos

lo aplique, pero aun sigue sucediendo lo mismo.

adjunto otra SS con el resultado que esta dando.

[Imagen|http://img26.imageshack.us/img26/9756/pantallaso2.png]

saludos.

Former Member
0 Kudos

Intenta cambiar el campo definido por usuario a númerico.

Former Member
0 Kudos

lo cambie, pero tal como lo pense al hacerlo me impide el uso de valores decimales, y sin estos valores no me resultara de utilidad alguna realizar la busqueda formateada.

Saludos.

felipe_loyolarodriguez
Active Contributor
0 Kudos

Buenas,

Si el campo es precio, veamos que pasa si cambiamos el number por money en la busqueda


SELECT $[$38.U_VM_PCaja.Money]

Esta es toda la consulta formateada? o le aplicas alguna otra aritmetica?

de ser asi quizas la aritmetica podria estar mal

y podria ser asi


SELECT (SELECT $[$38.U_VM_PCaja.Money])*(SELECT $[$el campo a multiplicar]

Aunque todavia no comprendo de donde saca el 1.000.000 para multiplicar...es igual con todos los articulos?

Saludos

FLR

Edited by: Floyola on Jan 6, 2011 12:54 PM

Former Member
0 Kudos

si, uso la busqueda para realizar una operacion aritmetica, pero sea cual sea el campo me entrega el valor multiplicado por 1000000

Select  (select $[$38.U_VM_PCaja.0]) * (select $[$38.8.0])

corresponde a la operacion aritmetica que estoy haciendo, aun asi, si traigo los datos 1 a 1 sin realizar operacion alguna sobre ellos de igual manera me los muestra multiplicados por 1000000.

Tambien realice las busquedas sobre otros articulos y sucede exactamente lo mismo.

Edited by: ivietal on Jan 6, 2011 5:50 PM

Former Member
0 Kudos

Hola

Se que no es la solución, pero si ya sabemos que siempre multiplica por 100, 1000 o 100000, por que no hace una división por la misma? y ver el resultado?

Former Member
0 Kudos

tambien fue algo que se me paso por la cabeza, pero que no tuvo un resultado que esperaba, ya que al dividir por 1000000 me redondeo la cifra resultado al entero superior.

ej: 18500000/1000000=19,00 en vez de entregarme 18,50

former_member188440
Active Contributor
0 Kudos

Intenta jugar con la funcion Round(tu operacion, numero_decimales) para ver que pasa

Former Member
0 Kudos

Estuve jugando un rato con la funcion Round y no me resulto... seguia en los mismo resultados que tenia antes de usarla

EJ:

SELECT ROUND(($[$38.8.Number] * $[$38.U_VM_PCaja.0]) , 2) /* Resultado: 18500000,00 */
SELECT ROUND(($[$38.8.Number] * $[$38.U_VM_PCaja.0]) /1000000 , 2) /* Resultado: 19 */
SELECT ROUND((SELECT $[$38.8.Number] /1000000) * (SELECT $[$38.U_VM_PCaja.0] /1000000), 2) /* Resultado: No Funciono */
SELECT ROUND(($[$38.8.Number] /1000000) * ($[$38.U_VM_PCaja.0] /1000000), 2) /* Resultado: No Funciono */
SELECT ROUND($[$38.8.Number] * ($[$38.U_VM_PCaja.0] /1000000), 2) /* Resultado: No Funciono */
SELECT ROUND($[$38.8.Number] * (SELECT $[$38.U_VM_Pcaja.0] /1000000), 2) /* Resultado: No Funciono */

saludos.