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

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-09-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Fraccionarios en FireBird con Dialecto 3

Hola amigos, acudo a ustedes por el siguiente motivo...

Tengo una base de datos nueva y creada en FireBird 1.5 con Dialecto 3, en ella hice una tabla que la llame "Prueba", con un unico campo llamado "Valor" de tipo Double precision, luego hice el siguiente procedimiento almacenado llamado "SP_Prueba":

Código SQL [-]
CREATE PROCEDURE SP_Prueba
as
declare variable conteo integer;
begin
  conteo = 0;
  while (:conteo <= 1000) do
  begin
    insert into test (conteo, valor) values(:conteo, 33.33);
    conteo = :conteo+1;
  end 
end

Que como pueden ver, dicho procedimiento almacenado solo guarda 1000 veces el valor 33.33 en la tabla "Prueba", luego voy a ver la tabla y efectivamente dicho valor en los mil campos es 33.33, es toda una maravilla (Ya que cuando lo hacia en Dialecto 1, no era exactamente ese el valor que me dejaba).

Luego de dicha prueba hice otra... he cambiado el procedimiento almacenado por el siguiente:

Código SQL [-]
CREATE PROCEDURE SP_Prueba
as
declare variable conteo integer;
begin
  conteo = 0;
  while (:conteo <= 1000) do
  begin
    insert into test (conteo, valor) values(:conteo, 100/3);
    conteo = :conteo+1;
  end 
end

Pero al ver la tabla, me encuentro con que el valor en esos 1000 registros es 33, cuando deberia ser 33.333333333333333. Luego hice otra prueba, 100/33 y el resultado fue 3, cuando deberia tener fraccionarios , si coloco el tipo de campo como Numeric(15,2), sucede lo mismo , luego hice 100/3.3 y allí el resultado fue 30.3 que en este caso si era el correcto, lo que me lleva a pensar que si no coloco en el divisor un numero decimal, el resultado devuelto no tendra decimales, asi el resultado verdadero lleve decimales.


¿Alguien sabe a que se debe esta situación o tiene alguna sugerencia al respecto?, por vuestro tiempo, amabilidad y paciencia prestados, muchisimas gracias .
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
 



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
Dialecto 1 o 3 ?? TheWOlf Firebird e Interbase 2 13-07-2005 18:29:17
Problema con dialecto T-man Firebird e Interbase 5 18-10-2004 16:22:16
Problema en Firebird con dialecto 3 Leonidas Firebird e Interbase 1 24-07-2004 07:43:35
Configurar BDE INTERBASE/FIREBIRD DIALECTO 3 ASAPLTDA Conexión con bases de datos 4 29-03-2004 23:21:30
Dialecto 3 y BDE Pablillo Conexión con bases de datos 3 12-12-2003 17:36:28


La franja horaria es GMT +2. Ahora son las 03:43:16.


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