Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MS SQL Server
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-03-2013
Avatar de richy08
richy08 richy08 is offline
Miembro
 
Registrado: may 2007
Ubicación: Bucerias, Nayarit Mexico
Posts: 529
Poder: 17
richy08 Va por buen camino
Tipo dato decimal(x,x) eb mssql 2005 y currency en delphi 7

Buenos dias compañeros, tengo una duda les platico, tengo una tabla con estos campo declarados en mssql 2005,

Código SQL [-]
tmes decimal(12,2),
cpp decimal(4,2)

los cuales uso en delphi para hacer una multiplicacion mediante un query, al no existir en delphi el campo decimal he declarado la variable
interesgenerado como currency
Código Delphi [-]
var 
  interesgenerado:currency;
.
.
.
  interesgenerado:=(mesesinteres*Qry_cuotas.FieldByName('tmesope').AsCurrency*Qry_cuotas.FieldByName('  cpp').value);

pero al ser declarado interesgenerado como currency este trae 4 decimales y me a estado ocacionando problemas en los cierres de mes, ya que constantemente presenta el resultado errores de decimas.


mi pregunta es como puedo hacer para que un campo currency , se comporte como un campo decimal de mssql, necesito aplicar algun tipo de redondeo??, cual es la forma en la que redondea el campo decimal de mssql

mil gracias por su tiempo
Responder Con Cita
  #2  
Antiguo 14-03-2013
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.460
Poder: 20
newtron Va camino a la fama
Hola.

Hasta lo que yo sé las variables de tipo currency tienen 4 decimales así que si quieres menos deberás pasarlos por alguna función que te los redondee a los decimales que quieras.

Saludos
__________________
Be water my friend.
Responder Con Cita
  #3  
Antiguo 14-03-2013
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por richy08 Ver Mensaje
[...] necesito aplicar algun tipo de redondeo??
Es muy probable que sí, a veces hay que aplicar un redondeo específico para que cuadren las cuentas.

Cita:
Empezado por richy08 Ver Mensaje
[...] cual es la forma en la que redondea el campo decimal de mssql
Hasta donde yo tengo entendido, todos (o casi todos) los motores redondean de la misma manera: http://www.clubdelphi.com/foros/showthread.php?t=38102 (perdona el estilo "payaso" de algunos de esos párrafos, han pasado algunos años ).

Dado que usas Delphi 7, me permito comentarte que en la unidad GHFRTL de GH Freebrary encontrarás una variable llamada GHMidpointRounding para establecer uno de los cinco posibles tipos de redondeo, y la función ghRound que redondea un valor numérico a la cantidad de decimales que le indiques (bajo el tipo de redondeo escogido).
Responder Con Cita
  #4  
Antiguo 14-03-2013
Avatar de richy08
richy08 richy08 is offline
Miembro
 
Registrado: may 2007
Ubicación: Bucerias, Nayarit Mexico
Posts: 529
Poder: 17
richy08 Va por buen camino
Mil gracias a los dos por sus comentarios buscando por la red, encontre esta funcion que redondea como lo hace el excel, la verdad me callo de 10, era justo lo que necesitaba, se las dejo para si alguien algun dia tiene el mismo problema

Código Delphi [-]
function RoundTo2dp(Value: Currency): Currency;
begin
  Result := Trunc(Value*100+IfThen(Value>0, 0.5, -0.5))/100;
end;

ya le hice pruebas y al parecer funciona muy bien, ustedes que opinan
Responder Con Cita
  #5  
Antiguo 14-03-2013
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por richy08 Ver Mensaje
[...] buscando por la red, encontre esta funcion [...]
Código Delphi [-]
function RoundTo2dp(Value: Currency): Currency;
begin
  Result := Trunc(Value*100+IfThen(Value>0, 0.5, -0.5))/100;
end;

ya le hice pruebas y al parecer funciona muy bien, ustedes que opinan
Que va acorde con el tipo de redondeo que realizan los motores de bases de datos (al infinito).
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Conectar Delphi XE2 y MSSQL 2000 o 2005 comba MS SQL Server 1 21-05-2012 00:48:50
Delphi + BDE + MSSQL SERVEr 2005 todas las fechas con en null DagariK MS SQL Server 2 28-10-2010 12:40:32
conectar delphi 2005 con mssql server 2005 tebre Conexión con bases de datos 0 26-11-2008 19:16:47
Conectar delphi com mssql 2005 mediante archivo UDL richy08 Conexión con bases de datos 0 19-08-2008 23:35:29
Delphi 7 y MsSql 2005 HARD-SOFT MS SQL Server 4 05-04-2007 10:14:51


La franja horaria es GMT +2. Ahora son las 15:19:58.


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