Decimales en datagrid y exportar a pdf c#

Iniciado por joalbela, 14 Marzo 2011, 02:47 AM

0 Miembros y 3 Visitantes están viendo este tema.

joalbela

Hola tengo un inconveniente, lo que pasa es que estoy trayendo informacion d euna base de datos a un datagrid y luego las exporto a pdf pero necesito estrablecerle los decimales por ejemplo tengo este precio de un articulo  638500 y necesito que el decimal se me coloque en la siguiente posicion 6385,00 sin que a este valor traido de la base de datos me coloque ams ceros sino que a los que trae los separe por decimales y que al exportarlos al pdf me generen igual
Jorge MB

SRVAM

mmm... y no seria mas facil que en base de datos guardases la cantidad como valor decimal??

asi cuando los recuperes el datagrid cogera el valor tal y como lo tengas, en este caso seria un Decimal.

Tambien puedes insertarle al string la coma en el lugar que quieras, y entonces hacer un Decimal.Parse(String), pero lo que veo mejor es tratar directamente el numero como un Decimal en base de datos.

Si no, lo que puedes hacer es una chapuza en plan coger con Substring y dividir la cantidad en la parte entera y la parte decimal, y luego los concatenas añadiendo la "coma". Pero esto lo veo una chapuza... :xD

no se si a alguien se le ocurre alguna idea mejor xDD

Un saludo
C# Programmer

-Estudiante MCTS .NET Framework 3.5-

joalbela

#2
Amigo verificando las bases de datos estan los valores con los decimales pero al datagrid no me los trae como estan alla, los estoy trayendo de una base de datos de informix a c# como hago para que el datagrid me los tome y pueda exportarlos a pdf con el valor y el decimal, si quieres te muestro el codigo que genera la consulta
Jorge MB

SRVAM

mm... en teoria, una vez que tu recuperas el valor de la base de datos, lo muestras en el datagrid como un string, y deberia mostrar tambien la coma...
yo es que pensaba que los almacenabas como string en la BD.

pon el codigo para que se peuda ver mejor el problema, y si no yo, otra persona tendra alguna idea para solucionarlo.

Si siemrpe usas solamente 2 posiciones decimales, peudes hacer lo que te dije arriba, insertar una "," que separe la parte entera de la decima a la hora de mostrarlo. puesto que tanto en el datagrid, como a la hora de exportar a PDF, lo que se necesita es un String.

No obstante, a ver si con el codigo se puede hayar una solucion mas profesional.

Un saludo
C# Programmer

-Estudiante MCTS .NET Framework 3.5-

joalbela

Código (csharp) [Seleccionar]
IfxDataAdapter dt = new IfxDataAdapter(" SELECT cdgo_prdcto COD,nmbre_prdcto DESCRIPCION,csto_rpscion CR, " +
                                                   " clfccion_prmnnte P, clfccion_tmpral T,cdgo_brra BARRA " +
                                                   " from prdcto " +
                                                   " where estdo = 'A' " +
                                                   " order by 2 ", conexion);
           
            DataSet dsdatos = new DataSet();
            dt.Fill(dsdatos,"Datos");
            this.dataGridView1.DataMember = "Datos";
            this.dataGridView1.DataSource = dsdatos;
        }

donde necesito agregale el decimal es en costo reposicion
Jorge MB

SRVAM

he pensado que quiza si tu mismo defines las columnas que vas a mostrar en el datatable, y dices que el tipo de la columna costo reposicion es Decimal, te lo mostraria bien, o eso creo. A lo que me refiero es a esto:

Código (csharp) [Seleccionar]
DS = new DataSet("dsClients");

//main table definition
DataTable mainTable = new DataTable("clients");
DataColumnCollection cols = mainTable.Columns;
DataColumn column = cols.Add("clientcode",typeof(Int32));
column.AllowDBNull = false;
cols.Add("clientacctname",typeof(String)).MaxLength = 60;
cols.Add("primarycontact",typeof(String)).MaxLength = 30;
cols.Add("primaddrcode",typeof(String)).MaxLength = 10;
cols.Add("initialamt",typeof(Decimal));
cols.Add("createdate",typeof(System.DateTime));

//primary key
mainTable.PrimaryKey = new DataColumn[] {cols["clientcode"]};

//add table to DataSet
DS.Tables.Add(mainTable);


Aqui te dejo un enlace donde se utiliza el proveedor de datos de informix y C#, espero que algo de lo que hay ahi te sirva.

http://www.ibm.com/developerworks/data/library/techarticle/dm-0510durity/index.html

Un saludo!
C# Programmer

-Estudiante MCTS .NET Framework 3.5-

joalbela

Amigo muchas gracias por tu ayuda mañana pruebo lo que me recomendaste y te comento.

Muchas Gracias
Jorge MB

SRVAM

de nada amigo, si aun asi no funciona seguiremos probando a ver si encontramos solucion al problema ;)
C# Programmer

-Estudiante MCTS .NET Framework 3.5-

joalbela

Jorge MB

SRVAM

a mi no se me ocurre nada mas... a ver si a algun otro compañero de por aqui se le ocurre alguna idea que pueda ayudarte ;)

un saludo
C# Programmer

-Estudiante MCTS .NET Framework 3.5-