PDA

Ver la Versión Completa : División de milesimas en delphi


ingmichel
05-09-2007, 22:34:16
muy buenas tardes foreros como estan todos, les escribo pork tengo un pequeño problema aver si me pueden ayudar, resulta que estoy desarrollando una aplicacion de nomina de empleados, y nececito hacer que cuando el usuario digite en campo sueldo bruto un valor como por ejemplo 15000 se ponga automaticamente una coma para dividir melisimas es de decir k ponga 15,000 a asi tambien si se digita 1000 que salga 1,000 es decir que me divida los miles con comas,
entonces mis inquietudes son las siguientes:
*que funcion utilizo para lograr esto ?
*Como Muestro este formato en los reportes ?
*Que tipo de dato es el mas favorable para realizar este tipo de operacion

bueno espero que alguien me ayude... gracias de antemano.

"El Conocimiento nos hace personas Capaces y Compartirlo nos hace aun mejores."

paldave
05-09-2007, 23:08:13
Hola. Creo que deberías utilizar la función FormatFloat. Puedes dirigirte a la ayuda de delphi para ver como se utiliza, pero a grandes rasgos, para tu necesidad sería algo así:
Edit1.Text := FormatFloat(',',10000);
o si deseas que muestre decimales:
Edit1.Text := FormatFloat(',.00',10000);
También puedes utilizar un TDBEdit y establecer una máscara en el DataSet.
Los valores te conviene almacenarlos en campos de tipo Float.
Saludos.

ingmichel
05-09-2007, 23:18:12
hola paldave muchas gracias por responder a mi llamado, probe la solucion que me diste con la funcion format float, en el evento onexit del edit puse esto:

EdSB.Text := FormatFloat(',.00',10000); y me funciona, ahora bien no c puede hacer que ponga en coma el valor que el usuario introduzca y no 10000 en especifico ?, por favor te agradere bastante si me ayudas.

paldave
05-09-2007, 23:52:56
Si lo que quieres es que aparezca el valor introducido pones:
Edit1.Text:=FormatFloat(',.00',StrToFloat(Edit1.Text));
Ahora si lo que quieres es saber si se puede ir formateando lo que el usuario va escribiendo, te diré que, bueno,... como poder hacer, se puede, aunque es más complicado.
Yo me he hecho un control llamado TosNumericEdit que se encarga de hacer algo similar a lo que pides, pero no se me ocurrió en su momento ponerle un separador de miles :( (se usa tan poco...)
Te pongo dicho componente para que lo estudies y lo pruebes... y lo modifiques si quieres para que incluya un separador de miles.
Suerte en dicha tarea!

ingmichel
06-09-2007, 00:23:58
hola mi querido amigo, gracias por tu ayuda he logrado lo que queria gracias a ti, veras en el evento onexit del edit hice lo siguiente:

EdSB.Text := FormatFloat(',.00',StrTofloat(EDSB.Text ) ); y funciona a la perfeccion lo que queria, muchisimas gracias por tu ayuda, me gustaria saber tu email para consultarte mas amenudo, espero no molestar, lo que sucede es que no soy tan experto en delphi pero es el lenguaje de programacion que mas me gusta y me gustaria llegar a ser un experto en el, lo de el control que me enviaste no ce ni siquiera como instanciarlo y mucho menos modificarlo ya que todavia no manejo la orientacion a objetos con delphi, bueno muchisimas gracias...

ingmichel
18-09-2007, 22:47:11
hola amigo k tal, hice todo lo indicado en cuanto al separador de millares, pero ahora sugio un problema y es k a la hora de darle al boton grabar para almacenarlo en la base de datos me dice error tratando de convertir varchar a float, mi campo sueldobruto es de tipo float y kiero pasarle el valor de la funcion k me devuelve formatfloat es decir por ejemplo 150,500.00 y no me deja, el campo float no acepta este formato ?.. por favor dime k hago

muy buenas tardes foreros como estan todos, les escribo pork tengo un pequeño problema aver si me pueden ayudar, resulta que estoy desarrollando una aplicacion de nomina de empleados, y nececito hacer que cuando el usuario digite en campo sueldo bruto un valor como por ejemplo 15000 se ponga automaticamente una coma para dividir melisimas es de decir k ponga 15,000 a asi tambien si se digita 1000 que salga 1,000 es decir que me divida los miles con comas,
entonces mis inquietudes son las siguientes:
*que funcion utilizo para lograr esto ?
*Como Muestro este formato en los reportes ?
*Que tipo de dato es el mas favorable para realizar este tipo de operacion

bueno espero que alguien me ayude... gracias de antemano.

"El Conocimiento nos hace personas Capaces y Compartirlo nos hace aun mejores."

Caral
18-09-2007, 23:19:11
Hola
No se si estés usando Windows, pero normalmente cuando sucede esto es por que la configuración regional no esta igual a la base de datos, la transferencia es diferente.
Panel de control-Configuración Regional-Personalizar.
aquí veras que muestra el tipo de formato para separador de decimales y de miles, lo mas probable es que no lo tengas como lo necesitas, modificalo en este y ya dirás como te fue.
No se si así se arreglara, pero probar no cuesta nada.
Saludos

ingmichel
18-09-2007, 23:59:02
hola caral, bueno ya hice lo que dijiste y tengo la configuracion regional de mi windows xp en español republica dominicana que es el pais donde recido, ahora bien como le pongo esa misma configuracion a mi sql server 2000 ?, o quizas sera que el campo float no acepta el formato 150,500.00 por asi decirlo ? entonces que puedo hacer si quiero hacer calculos mas adelante hasta donde se float es el mas recomendable, por favor dime k hago...

Caral
19-09-2007, 00:05:39
Hola
En la configuracion tienes que poner los parametros de los decimales y miles, no solo el pais y la hora, deberia funcionar.
Ahora, en cuanto a hacer calculos, no creo que tenga problemas si esta el windows configurado, otra opcion es mantener los datos sin comas y solo presentarlos en pantalla.
No se si me explico.
Saludos

ingmichel
19-09-2007, 22:14:24
hola como estas caral, me dices k no muestre los datos con comas cuando se digita pero acuerdate que los usuarios cuando digitan cantidades grades acostumbran a separar con comas y tambien a poner decimales es decir por ejemplo 150,500.87 entonces cuando me refiero a hacer calculos me refiero a poner una condicion que si el sueldo bruto > 150,500.87 por ejemplo que le aplique un descuento pero lo que no se es si el formato 150,500.87 que lo quiero almacenar en un campo float me va a dejar hacer ese tipo de calculos, pero cualquier recomendacion que me des/den sera bienbenida gracias de antemano.

Caral
19-09-2007, 22:38:33
Hola
Pienso que es un asunto de costumbre digitar sin comas, en mi caso lo hago asi, solo digito un punto del decimal y tengo configurado windows para este fin.
Bueno, no conozco sql server, en access el campo flost es Doble y tiene una extension donde puedes variar la presentacion de los datos, no se si en sql server sera parecido.
No se que mas opinar.
Saludos