PDA

Ver la Versión Completa : tipos de datos...cual escojo ?


BlueSteel
17-06-2006, 18:04:26
Hola foro...

tengo una pequeña duda con respecto a como elegir el tipo de campo adecuado para almacenar los datos... específicamente los numéricos...

les cuento....

tengo que almacenar datos numericos tales como

125,75
7254254.86

en un principio escogi los campos tipo float, pero no me deja especificar que los necesito con 2 decimales ???

y con el tipo de campo numerico... como utilizo el formato

por ejemplo cuando digo

"Dor_Valor_Total" NUMERIC (7, 2) NOT NULL);
que significa esto ??? que la parte entera es de longitud 7 y la decimal es de 2???? o significa que el dato tiene una longitud de 7 pero que dos caracteres son decimales ???

y lo otro... como lo traspaso desde delphi para almacenarlo ???

generalmente utilizo esta forma de trapaso.. pero no se como hacerlo con el campo numeric


IBQ_Edit.Params[7].AsInteger := StrToInt(vTot_Net.Text); // cuando el campo es integer
IBQ_Edit.Params[8].AsFloat := StrToFloat(vTot_Iva.Text); // cuando el campo es float

espero me puedan ayudar.. gracias

nemesio
19-06-2006, 19:59:25
Hola

Cuando utilizas un campo Numeric (7,2), te va a indicar un Campo que tiene 4 digitos enteros, un separador decimal y 2 valores decimales.
Para el traspaso de los datos prueba utilizar la opcion .value.
Ejem
IBQ_Edit.Params[7].Value:= X; el campo tomará el valor que tiene predeterminado como tipo y te mostrará error si asignas una variable que no corresponda.

BlueSteel
19-06-2006, 21:11:59
Hola
Cuando utilizas un campo Numeric (7,2), te va a indicar un Campo que tiene 4 digitos enteros, un separador decimal y 2 valores decimales
:p gracias... pero en un campo use el Numeric(10,2), y si es como tu lo dices... por que me acepta una cadema de 15 digitos para el entero, la coma y 2 decimales ?? Ej. 123456789012345,75

Para el traspaso de los datos prueba utilizar la opcion .value.
Ejem IBQ_Edit.Params[7].Value:= X; el campo tomará el valor que tiene predeterminado como tipo y te mostrará error si asignas una variable que no corresponda.

pero si el valor que le quiero asignar esta en un Edit.Text.. como transformo esa cadena de numeros a un dato tipo numeric ??? :D :rolleyes:

D-MO
19-06-2006, 21:34:22
posiblemente sea asi:IBQ_Edit.Params[7].Value:=StrToFloat(edit.text);

saludos.

Lepe
20-06-2006, 09:25:11
Te aconsejo que uses Numeric(10,2) y Dialecto 3, ya que en ese formato se guardan los números como Int64 de Delphi. Si miras la documentación de Interbase, verás que un Float se guarda siempre como números enteros, tanto para la parte entera, como la parte decimal.

De hecho, si usas Numeric(7,2) (creo recordar que en cualquier Dialecto), los números flotantes se guardan con distinta precisión, y advierte que no se use para cálculos monetarios.

Saludos

nemesio
21-06-2006, 05:24:19
Para que te quites los dolores de Cabeza de pasar un texto a número, puedes usar el Currencyedit de la libreria Developer Express, te lo recomiendo, tiene una propiedad que es .value para los datos numéricos. Ademas te da la opción de escoger entre el tipo numerico que quieras. Ya no tendrías que hacer mas conversiones sino que colocas: SQLCampo.Value:=Edit.Value;

BlueSteel
27-06-2006, 17:09:59
Para que te quites los dolores de Cabeza de pasar un texto a número, puedes usar el Currencyedit de la libreria Developer Express, te lo recomiendo, tiene una propiedad que es .value para los datos numéricos. Ademas te da la opción de escoger entre el tipo numerico que quieras. Ya no tendrías que hacer mas conversiones sino que colocas: SQLCampo.Value:=Edit.Value;

y como tendria que hacerlo... donde consigo esta librería ???

nemesio
04-07-2006, 02:38:07
Esa librería es Paga, pero muy completa. Si quieres entra a la página http://www.devexpress.com/ y verás lo que ofrece esta librería.

nemesio
04-07-2006, 02:39:33
Ahh se me olvidaba decirte que las Jedi que son gratis también tienen un componente para "currency" que te permiten capturar numeros sin complicaciones.

anubis
23-05-2008, 20:05:30
Si me permitis. Necesito meterun campo con decimales a razon de 2 enteros y 7 decimales, entonces lo pongo asi numeric(10,7) tal y como se comenta en el foro, asi tengo 2 enteros, la coma decimal y 7 decimales, pero a la hora de meterlo al sql se empeña en poner(18,7), imagino que es porque al ser un float con decimales me pone el maximo entero, es decir, 10, pero no necesito tanto entero, alguna forma de arreglarlo para evitar ocupar memoria o es asi?

gracias