Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-11-2008
pjmedina pjmedina is offline
Miembro
 
Registrado: abr 2006
Posts: 84
Poder: 19
pjmedina Va por buen camino
Redondear en un filtro TTable

Buenas a todos,

tengo un problema con un filtro. Tengo una tabla (TTable). Esta table tiene la siguiente estructura(codigo integer, nombre varchar(60), saldo NUMERIC(15, 3), resto NUMERIC(15, 3)).
En mi aplicacion hay un momento en el que pongo un filtro a la tabla diciendo que solo muestre los registros cuando saldo<>resto.

La tabla tiene los siguientes valores
CODIGO NOMBRE SALDO RESTO
1 JUAN 13,03 13,03
2 PEPE 40,92 40,92
3 LUIS 119,24 119,24
4 MARIA 200,00 0,00

Tabla.filter:='saldo<>resto'

Cuando le pongo el filtro, en lugar de mostrarme el codigo 4, me muestra los codigos 4, 1,3.
Yo pienso que tiene que ser a causa de redondeos, podría redondear de alguna forma en el filtro.

No puedo cambiar el componente ttable ya que mi aplicacion es bastante vieja y tendria que rehacerla entera.

Muchas gracias por todo.

PD.: utilizo delphi 7 y firebird 1.5
Responder Con Cita
  #2  
Antiguo 27-11-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Tal vez asi:
Código Delphi [-]
var 
R: Float;
Begin
 R:= Tabla.Filebyname('resto').Value;
Tabla.filter:='saldo <> '+FloatToStr(R);
Tabla.Filtered := True;
Saludos
__________________
Siempre Novato
Responder Con Cita
  #3  
Antiguo 28-11-2008
pjmedina pjmedina is offline
Miembro
 
Registrado: abr 2006
Posts: 84
Poder: 19
pjmedina Va por buen camino
pero así me filtrará dependiendo del registro en el que esté cuando active en filtro. Yo quiero que me filtre dependiendo del valor que tenga cada registro.


Gracias por contestar
Responder Con Cita
  #4  
Antiguo 28-11-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Los flotantes tienen más decimales de lo que muestran, así que una condición de des/igualdad entre ellos, raramente se cumple.
Código:
Tabla.filter:='saldo - resto < 0.001'
Me extraña esto en Firebird. ¿qué dialecto usas?
Igual el problema viene por el tabla.filter que solo pueda manejar floats....

Edito: igual tienes que ajustar más esa diferencia y usar 0.003 ó 0.004, porque aunque veas 13.03 puede que el valor real sea 13.028 ó 13.027

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 28-11-2008 a las 16:56:42.
Responder Con Cita
  #5  
Antiguo 11-12-2008
pjmedina pjmedina is offline
Miembro
 
Registrado: abr 2006
Posts: 84
Poder: 19
pjmedina Va por buen camino
Muchas gracias, lo probaré. Utilizo dialecto 1.

La solucion que me he dado es la siguiente, he pasado un script a la tabla:
update nomtabla set campo1=f_roundto(campo1,2),campo2=f_roundto(campo2,2)

de esta forma con el filtro que yo ponia funciona, lo que pasa que me puede volver a pasar.
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
redondear con dos decimales JULIOCTORRESG Varios 6 27-09-2015 01:30:14
Redondear? diniremix Varios 12 20-05-2006 00:18:12
Redondear + DBGrid1DrawColumnCell jonmendi Varios 0 23-01-2006 12:04:01
Zeos y Redondear jgutti Internet 0 25-04-2005 16:52:13
Redondear en Builder c++ alt126 C++ Builder 3 04-01-2005 11:27:54


La franja horaria es GMT +2. Ahora son las 12:04:07.


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