FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
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; 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; 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:
|
#2
|
||||
|
||||
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
|
#3
|
||||
|
||||
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 |
#4
|
||||
|
||||
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 |
#5
|
||||
|
||||
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, |
#6
|
||||
|
||||
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. |
#7
|
||||
|
||||
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:
Última edición por marcoszorrilla fecha: 10-02-2012 a las 22:01:47. |
#8
|
|||
|
|||
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... |
#9
|
||||
|
||||
Hola Marcos, con esta vista (probada en Firebird 1.5) podrás ubicar rápidamente todos los campos que habrán de ser cambiados:
Si no resulta ser una cantidad excesiva de campos, creo que cambiarlos manualmente en IBExpert, como ya lo has hecho con uno de ellos, no es mala alternativa. De lo contrario, podrías implementar una macroinstrucción (script) que lleve a cabo estos cambios dentro de un ciclo (puede que sea necesario tratar con las tablas del sistema). En cuanto a la propiedad Size de los objetos campos en Delphi, efectivamente, los que son de tipo (DataType) ftBCD y ftFMTBCD (este último generalmente corresponde al tipo Numeric de Firebird) usan dicha propiedad para indicar el número de dígitos a la derecha del separador decimal. Espero que no te sea difícil solucionarlo, pero estaré pendiente de ello como los demás. Un abrazo. Al. |
#10
|
||||
|
||||
Eso sí que es una respuesta bien trabajada, Al
|
#11
|
||||
|
||||
Muchas gracias Al, esta semana que entra probablemente el miércoles me meta de lleno con ello.
Gracias por la aportación como siempre acertada y constructiva. Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
#12
|
||||
|
||||
Hoy he solucionado el problema de la forma que apunté. Eran 11 Tablas, 27 Campos y 30 IbDataset.
He comenzado a las 6h30 y he terminado a las 8h10, justo antes de que empezaran a facturar. De haber tenido que crear nuevo campo bajo el nuevo dominio, luego pasarle los datos, borrar el anterior renombrar el actual.... no me hubiese sido posible aparte del peligro de cometer un error. Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
#13
|
||||
|
||||
Enhorabuena Marcos.
Me da gusto que haya quedado solucionado. |
#14
|
||||
|
||||
Se me olvidaba comentar otra prueba que hice y es aumentar el propio dominio a 3 decimales, lástima que esto no era posible, porque el Dominio Dm_Euro se usa en más casos y tiene que tener 2 decimales en Base, IVA, Recargo, Total... por lo que tuve que optar como ya he comentado por crear un Clon de Dm_Euro con 3 decimales.
Un Saludo y gracias por los comentarios.
__________________
Guía de Estilo de los Foros Cita:
|
|
|
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 |
|