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 09-02-2012
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Aumentar número de decimales campo Numeric

BD. Firebird 2.5, Ibx y D7.

Tengo un campo Precio creado por medio de un dominio:
Código:
Create Domain DM_Euro
As Numeric(12,2)
Default 0;
La base de datos tiene 68 tablas y calculo que unas diez utilicen este campo. Pues bien me piden 3 decimales en vez de 2 que tengo ahora.

He intentado con el IbExpert pero no me deja aumentar los decimales.

Se me ocurrió lo siguiente. Crear otro dominio:

Código:
Create Domain DM_Euro3
As Numeric(12,3)
Default 0;
Ahora he abierto el IbExpert y le he cambiado de dominio al campo, no se ha quejado. Al abrir el programa me da un error (Size 3 y se esperaba 2) me he ido al IbDataset he seleccionado el campo y he cambiado su propiedad Size que por lo que infiero se refiere a decimales, pues me ha funcionado, quiero evitar un alter table...

Alguien tiene alguna idea de como hacer el cambio de otra manera más fácil, lo cierto es que después de esta prueba satisfactoria voy a hacer un estudio de cuantos IbDataset están implicados y cuantos campos porque la BD está en producción y haré una prueba más a fondo a ver si todo resulta como preveo.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #2  
Antiguo 09-02-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.052
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pues ya nos contarás, yo he usado siempre el tipo double, hasta ahora, que en este nuevo proyecto estoy usando numeric, así que nunca me había encontrado con ese problema, por eso digo que ya nos contarás, por si acaso tengo que cambiarlos yo también
Responder Con Cita
  #3  
Antiguo 10-02-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Yo de esto ni idea. Pero me da la impresión de que la parte de los datasets no la vas a poder evitar salvo usando algún tipo de experto que facilite el cambio.

Una pregunta, ¿no se puede borrar un dominio y volverlo a crear?

// Saludos
Responder Con Cita
  #4  
Antiguo 10-02-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Es curioso, en mi caso tengo un dominio asi:
FILE Type DOUBLE PRECISION
Este me da 3 decimales sin ponerle nada en el espacio Size, osea, vacío ' '
Tengo otros que son FILE Type INTEGER (sin decimales), pero no tengo ninguno que sea type Numérico.
No se si modificando el tipo de type podrás solucionar el problema o poner el campo size vacío.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #5  
Antiguo 10-02-2012
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Por seguridad lo que yo haría es:

OPCIONAL: Creo un segundo dominio con el tipo adecuado
1) Creo un nuevo campo con el tipo/dominio adecuado
2) Vuelco los datos desde el campo viejo al nuevo
3) Elimino campo y/o dominio viejos
4) Renombro el nuevo campo como el viejo

Naturalmente en el aplicativo habrá que hacer retoques para que asimile el nuevo Size y visualice correctamente los decimales.

No se si es realmente innecesario hacer esto de crear, volcar, eliminar pero yo lo veo más seguro así... Naturalmente es tedioso hacer esto en cada tabla.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #6  
Antiguo 10-02-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.052
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pienso igual que Delphius, aunque es precisamente ese engorro lo que se quiere evitar marcoszorrilla. Pero ese es seguramente el inconveniente de usar numeric, que aunque cambie el dominio a tres decimales, los datos quedarán con dos. Cosa que no ocurre, obviamente, con los double.
Yo estoy usando los numeric por primera vez, como dije antes, porque es un programa de contabilidad donde sólo pueden ir 2 decimales de la moneda, no es necesario para nada más decimales, pero para cualquier otra información numérica siempre uso el double, aunque se podría usar el numeric con 5 decimales, por ejemplo, en fin, dependerá de las exigencias de cada caso.
A la pregunta de Román, no se puede eliminar un dominio que se está usando.
Responder Con Cita
  #7  
Antiguo 10-02-2012
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Gracias por las opiniones, la semana que viene tengo previsto empezar los cambios, ya os contaré el resultado.

Es evidente que el tercer decimal será un 0, pero es que se piensan utilizar precios con tres decimales a partir de ahora.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.

Última edición por marcoszorrilla fecha: 10-02-2012 a las 22:01:47.
Responder Con Cita
  #8  
Antiguo 11-02-2012
Gallosuarez Gallosuarez is offline
Miembro
 
Registrado: feb 2007
Posts: 92
Poder: 18
Gallosuarez Va por buen camino
Talking Posible solución ...

Marcoszorrilla:

Lo puedes hacer como lo comenta Delphius, o la otra opción que tienes es como lo estabas haciendo en un principio (es decir, cambiando el dominio), solamente que te faltó hacer un último paso: una vez cambiado el dominio debes de hacer un ciclo de "backup/restore" a tu base de datos.

Saludos,
GST

PD. Espero que te sea de utilidad... y no dejes de publicar tu solución ... saludos nuevamente...
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
¿cómo aumentar el número de factura en una base de datos paradox ? Master23 Varios 2 09-04-2010 00:42:26
Campo numeric sql server amerika111 Varios 1 30-12-2009 10:26:21
Aumentar Decimales RUBI MADELIN OOP 4 23-07-2007 19:35:39
Problama con campo NUMERIC(15,2) El_Raso SQL 7 11-02-2007 10:58:16


La franja horaria es GMT +2. Ahora son las 13:05:53.


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