Apúntate a la Zona De Descargas Reservadas (ZDDR). Solo son 20 Euros
Con solo 20€ ayudarás
a mantener el foro.
Usace, solo opinion


Seguir a udias en Twitter
Directorio de Empresas de Foros de informática


Todo lo que sueñas, se puede diseñar.
We build your dreams.

 - Principal - Responder - Estadísticas - Registrarse - Buscar - Lista de usuarios -  - Zona de Descargas
 -Privacidad y política de cookies -
Ayuda al foro con tu donación
Foros en Udias.com / FileMaker / Problema con formato numérico SQL
Autor Mensaje

Miembro

Ocasional

  Karma     10

#1 Publicado: 11 Mar 2018 17:40



Buenas tardes a todos y gracias por tener este foro ...
Os comento por si es posible una ayuda.
Estoy creándome un CRM para llevar el control de los clientes, visitas, pedidos, facturación, cobros... etc.
He creado una tabla llamada "INICIO" donde a través de SQL me da el resumen de todas las tablas que tengo y que no están relacionadas que, visualmente es "muy sencilla" de evaluar.

Todo bien hasta que he conseguido crear con sql un campo que me da el ranking de ventas por CCAA ordenadas por importe con la siguiente fórmula y desde la tabla facturación:
Let (
[
AÑO = AÑO ACTUAL ;
decimal = Left ( Evaluate ( 1/2 ) ; 1 ) ;
SQL = ExecuteSQL ( "SELECT CCAA , SUM (IMPORTE_SERVIDO) FROM FACTURACION GROUP BY CCAA ORDER BY 2 DESC ";" - - - - - - ";"¶¶" )] ; Substitute ( SQL; "." ; decimal ) )


Sólo me deja darle formato texto y el resultado que me da es el siguiente:

C, VALENCIANA - - - - - - 22351,5357799999998836

PRINCIPADO DE ASTURIAS - - - - - - 20262,73588

ARAGÓN - - - - - - 17015,732500000000058

R, MURCIA - - - - - - 16531,26149999999994

PAÍS VASCO - - - - - - 15620,954

CATALUÑA - - - - - - 10943,3857699999999465

C, MADRID - - - - - - 9997,18

LA RIOJA - - - - - - 5868,8224999999999

CANTABRIA - - - - - - 1674,5045

CASTILLA LEÓN - - - - - - 1258,95

La pregunta es, existe en SQL alguna indicación para poner en la formula y poder formatear lo que se parezca a número como tal? es decir, que me ponga como número "00.000,00" las cifras que obtengo:
LA RIOJA - - - - - - 5.868,82 € y no LA RIOJA - - - - - - 5868,8224999999999
Si le indico que el campo es numérico para después darle formato, el resultado que me da el campo es el siguiente:

"0,22 €"

Adjunto imagen

Muchísimas gracias de antemano

TABLA INICIO
TABLA INICIO

Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Javier Mac Os X FM PRO 16

Miembro

Asiduo

  Karma           237

#2 Publicado: 12 Mar 2018 13:11



Yo utilizo una función personalizada:


GetValue ( Substitute ( Numero ; "." ; ¶ ) ; 1 ) & "," & Left ( GetValue ( Substitute ( Numero ; "." ; ¶ ) ; 2 ) & "00" ; 2 )

/* Convierte el numero en dos decimales y sustituye el punto decimal por una coma
*/


Espero que te sea util.

Enric


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Mac Os Sierra, Fm 16 Advanced, FM Server 16 OSX

Miembro

Ocasional

  Karma     10

#3 Publicado: 12 Mar 2018 16:50



Hola Enric7, muchas gracias por tu respuesta.
Lo acabo de intentar y al poner tu formula cambiando Numero por SQL.

Let (
[
AÑO = AÑO ACTUAL ;
decimal = Left ( Evaluate ( 1/2 ) ; 1 ) ;
SQL = ExecuteSQL ( "SELECT CCAA , SUM (IMPORTE_SERVIDO) FROM FACTURACION GROUP BY CCAA ORDER BY 2 DESC ";" - - - - - -> ";"¶¶" )
] ;
GetValue ( Substitute ( SQL ; "." ; ¶ ) ; 1 ) & "," & Left ( GetValue ( Substitute ( SQL ; "." ; ¶ ) ; 2 ) & "00" ; 2 )

)


El resultado que obtiene el cambo es:
C, V
Si le digo que el resultado del cálculo es numérico, no obtengo resultado alguno.

Supongo que al no ser un usuario muy avanzado cometo algún error y no se si estoy haciendo bien al sustituir Numero por SQL ya que no encuentra el campo Numero.

Como ya te he dicho al principio, MUCHAS GRACIAS.


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Javier Mac Os X FM PRO 16

Miembro

Asiduo

  Karma           237

#4 Publicado: 12 Mar 2018 17:13



Has creado la función personalizada ?

un ejemplo:

Convert2Dec (ExecuteSQL ( "SELECT Sum ( IMPORTE1 ) FROM Vendes
WHERE CLIENTE = ? AND FAMILIA = 'BIOS' AND MES = 2 AND EXERCICI = ?"; "" ; "" ; CLIENTE;ANY_1 ))


el resultado ha de ser numerico de la función personalizada, la mía se llama Convert2Dec y el parámetro a pasar es el calculo que tu tengas.

Sls

Enric


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Mac Os Sierra, Fm 16 Advanced, FM Server 16 OSX

Miembro

Ocasional

  Karma     10

#5 Publicado: 13 Mar 2018 01:16



Hola de nuevo Enric.
Voy a ponerme las pilas con las formulas personalizadas, no las conocía y de momento por mi poco conocimiento, solo estaría dándote la brasa sin entender su funcionamiento...

Eso si, después de haber estado husmeando por el foro, he visto un hilo donde flusheddata te comentaba lo de las listas virtuales y de momento me han hecho bastante más que un apaño.

Reitero mi agradecimiento y seguro retomaré el tema con las formulas personalizadas.

Un saludo


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Javier Mac Os X FM PRO 16

Miembro

Constante

  Karma           459

#6 Publicado: 13 Mar 2018 15:18 - Editado por: Tarantelo



Enric7:
Yo utilizo una función personalizada:


GetValue ( Substitute ( Numero ; "." ; ¶ ) ; 1 ) & "," & Left ( GetValue ( Substitute ( Numero ; "." ; ¶ ) ; 2 ) & "00" ; 2 )

/* Convierte el numero en dos decimales y sustituye el punto decimal por una coma
*/


Espero que te sea util.

Enric

Esa función que muestras, solo trunca a 2 decimales y pone la coma como separador de decimales. Jugando un poco, he creado esta formula que convierte:

El separador varía según la configuración del sistema, para España saldría:
1 = 1,00
1.200,2 = 1200,20
1,200.2 = 1200,20
-1 = 1,00
-1.200,2 = 1200,20
-1,200.2 = 1200,20

Let (
[
$nDecimales = 2;
$nTemp = Trim ( Filter ( Self ; "0123456789.,-" ) );
$Negativo = If ( Left ( $nTemp ; 1 ) = "-" ; "-" ; "" );
$sepDecimal = Middle ( Evaluate ( 3/2 ) ; 2 ; 1 );
$ultComa = Position ( $nTemp ; "," ; -1 ; 1 );
$ultPunto = Position ( $nTemp ; "." ; -1 ; 1 );
$nTemp = If ( $ultComa = $ultPunto ; $nTemp & Left ( "#0000000000" ; $nDecimales +1 );
If ( $ultComa > $ultPunto;
Let ( [ $nTemp = Substitute ( $nTemp ; "." ; "" ) ; $nTemp = Substitute ( $nTemp ; "," ; "#" ) ] ; $nTemp )
;
Let ( [ $nTemp = Substitute ( $nTemp ; "," ; "" ) ; $nTemp = Substitute ( $nTemp ; "." ; "#" ) ] ; $nTemp )
) ) & "000000000" ;
$nEntero = Middle ( $nTemp ; 1 ; Position ( $nTemp ; "#" ; 1 ; 1 ) -1 );
$nDecimal = Middle ( $nTemp ; Position ( $nTemp ; "#" ; 1 ; 1 ) +1 ; $nDecimales )
];
$Negativo & $nEntero & $sepDecimal & $nDecimal
)


La verdad es que es muy grande para no colocarla en una función personalizada, pero poder se puede usar como cálculo.


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Windows 10 Pro (64 Bits), FM Pro 15 Adv

Miembro

Constante

  Karma           459

#7 Publicado: 13 Mar 2018 15:55



Javier Egidos:
Sólo me deja darle formato texto y el resultado que me da es el siguiente:

C, VALENCIANA - - - - - - 22351,5357799999998836

Como no pones la versión de FileMaker que usas , no se si te valdrá. Para la versión 16 de FileMaker ROUND () aparece en la página 32 de la Referencia SQL de FileMaker 16 y se usa en ejemplos en otros lugares de ese documento.

ES IMPORTANTE QUE EN LA FECHA DE USUARIO SE PONGA LA VERSION DE FILEMAKER QUE SE USA Y EL S.O.


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Windows 10 Pro (64 Bits), FM Pro 15 Adv

Miembro

Ocasional

  Karma     10

#8 Publicado: 13 Mar 2018 23:05



Hola de nuevo y disculpad el retraso.
Gracias Tarantelo, ya he puesto el SO y APP (MacOS X y FM Pro 16 Adv) fallo de principiante.

Sigo sin saber como aplicar lo que me indicas. Si lo uso como calculo dentro de la formula, el resultado es ",00" y como función personalizada no sabría que decirte, la ventana de edición de formulas personalizadas y yo nos miramos mutuamente y nada...

Esta semana me he dado cuenta que el problema que tengo es que, he llegado a un punto en el que necesito formación a marchas forzadas o el proyecto que tengo se quedará, no en una vía muerta pero si en un proyecto muy básico para lo que ofrece FM. De trabajar con tablas dinámicas en excel a lo que tengo ahora mismo es como pasar de mi Opel Insignia a un Mercedes 220 mínimo, pero veo posibilidades ilimitadas y me está frustrando el no saber como.


De verdad que agradezco mucho vuestro tiempo y paciencia.


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Javier Mac Os X FM PRO 16

Miembro

Constante

  Karma           459

#9 Publicado: 14 Mar 2018 08:56 - Editado por: Tarantelo



Javier Egidos:
Sigo sin saber como aplicar lo que me indicas. Si lo uso como calculo dentro de la formula, el resultado es ",00" y como función personalizada no sabría que decirte, la ventana de edición de formulas personalizadas y yo nos miramos mutuamente y nada...

Ese ejemplo es para utilizar en un campo texto, con formula de autointroducción. Fue un ejercicio para probar si en un condicional se podían establecer o cambiar el valor de varias variables según la opción.

En el caso de que te sirva hacer un redondeo a 2 decimales de las cantidades, puedes ver la en página 31 un ejemplo de como devuelve el importe de una suma redondeado.

SELECT SUM(ROUND(Salario, 0)) FROM Nómina

https://fmhelp.filemaker.com/docs/16/es/fm16_sql_r eference.pdf

Lo que no sé, es si servirá para FMP 15


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Windows 10 Pro (64 Bits), FM Pro 15 Adv
Su respuesta

Estilo Negrillas  Estilo Italico  Estilo Subrayado  URL De La Imagen  URL De La Web  Preformatted Text  YouTube URL  Sin código BB
Emoticones
:) ;) :up: :down: :biglol: :confused :cool: :mad: :sad: :shame: :smirk: :tongue: ... Más  Emoticones desactivados
Color de texto
Texto en negro Texto en blanco Texto en gris Texto en rojo Texto en azul Texto en verde Texto en rojo oscuro Texto en cian Texto en azul oscuro Texto en púrpura Texto en amarillo Texto en rosa Texto en naranja Texto en verde oliva Texto en marrón



 » Usuario  » Contraseña 
Solo Usuarios Registrados Pueden Postiar Aqui.
 

Tópicos relacionados con Problema con formato numérico SQL

Formato numerico como se introdujo
Formato numérico en campo de fusión
Formato numerico mediante script
problema con campo numerico en filas de portal AYUDA!
Problema de impresión interlineado con dos campos texto y númerico repetido


Conectados: Invitados - 10
Miembros - 2 border=0 Duque, Macflito
En verde usuarios ZDDR

Realizado con miniBB © 2001-2018
Para Udias.com © 1996-2018
Hosting con Interdominios