Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-03-2011
amerika111 amerika111 is offline
Miembro
 
Registrado: nov 2009
Posts: 168
Poder: 0
amerika111 cantidad desconocida en este momento
formato en centenas decimales unidades

Hola que tal lo que pasa es lo siguiente:
tengo un campo char con estos datos 85.12 o tambien con 115.12 como valores y necesito que pasarlo a este 008512 o en el caso 011512 nose si tendria que hacerlo en un if o si hay una funcion para hacerlo.....
Responder Con Cita
  #2  
Antiguo 30-03-2011
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
No hay ninguna función, así que tienes que usar las funciones normales de conversión de número a cadena (cast), pero separando primero la parte entera de la parte decimal.

Sería algo así :

cast(cast(NUMERO as integer) as varchar(20)) || cast(cast((NUMERO - cast(NUMERO as integer)) * 100 as integer) as varchar(2))

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #3  
Antiguo 30-03-2011
amerika111 amerika111 is offline
Miembro
 
Registrado: nov 2009
Posts: 168
Poder: 0
amerika111 cantidad desconocida en este momento
Cita:
Empezado por guillotmarc Ver Mensaje
No hay ninguna función, así que tienes que usar las funciones normales de conversión de número a cadena (cast), pero separando primero la parte entera de la parte decimal.

Sería algo así :

cast(cast(NUMERO as integer) as varchar(20)) || cast(cast((NUMERO - cast(NUMERO as integer)) * 100 as integer) as varchar(2))

Saludos.
Y esto lo ingresaria en un procedimiento o como puedo hacer una prueba
Responder Con Cita
  #4  
Antiguo 30-03-2011
amerika111 amerika111 is offline
Miembro
 
Registrado: nov 2009
Posts: 168
Poder: 0
amerika111 cantidad desconocida en este momento
Cita:
Empezado por guillotmarc Ver Mensaje
No hay ninguna función, así que tienes que usar las funciones normales de conversión de número a cadena (cast), pero separando primero la parte entera de la parte decimal.

Sería algo así :

cast(cast(NUMERO as integer) as varchar(20)) || cast(cast((NUMERO - cast(NUMERO as integer)) * 100 as integer) as varchar(2))

Saludos.
La he probado de esta manera y me aparece error Dynamic SQL Error expression evaluation not supported

UPDATE A_tabla SET
SALARIO=cast(cast(SALARIO as integer) as VARchar(20)) || cast(cast((SALARIO - cast(SALARIO as integer)) * 100 as integer) as VARchar(2))
Responder Con Cita
  #5  
Antiguo 30-03-2011
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola.

Lo he probado y no he tenido ese error (¿ qué versión de Firebird utilizas ?).

Aunque he visto otro problema, y es que un CAST AS INTEGER redondea enteros en lugar de coger solo la parte entera. Con lo que no sirve para lo que queríamos hacer.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #6  
Antiguo 30-03-2011
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hay otra solución mucho más sencilla. Simplemente multiplica el número por 100.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #7  
Antiguo 31-03-2011
amerika111 amerika111 is offline
Miembro
 
Registrado: nov 2009
Posts: 168
Poder: 0
amerika111 cantidad desconocida en este momento
Cita:
Empezado por guillotmarc Ver Mensaje
Hay otra solución mucho más sencilla. Simplemente multiplica el número por 100.

Saludos.

oooo si solo multiplicando por 100 y agregando ceros al principio, si eso queria gracias....
Código SQL [-]
select lpad((cast(lpad((numero*100), 6, '0') as integer)),6,'0') from A_tabla
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como leer un Email en formato HTLM y que se muestren las imagenes y todo su formato jesus02018 Internet 0 28-12-2008 11:22:10
Formato plano de decimales Drahcir SQL 7 10-10-2008 15:45:28
Formato de celda número con separador de decimales desde delphi para excel via OLE vick Conexión con bases de datos 2 31-01-2008 16:35:07
Como cambiar el formato de un QRSysData en formato fecha Bitbanner Tablas planas 1 13-02-2005 12:33:26
Unidades de Tiempo obiwuan Humor 0 06-05-2003 21:32:51


La franja horaria es GMT +2. Ahora son las 06:24:06.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi