Foros del Web » Programación para mayores de 30 ;) » .NET »

Problema al generar archivo plano

Estas en el tema de Problema al generar archivo plano en el foro de .NET en Foros del Web. Hola, espero puedan ayudarme, tengo el siguiente problema, estoy generando en una aplicacion en la que genero un archivo plano, separado por comas, que me ...
  #1 (permalink)  
Antiguo 07/03/2011, 23:22
Avatar de emmax  
Fecha de Ingreso: agosto-2010
Ubicación: Sonora
Mensajes: 172
Antigüedad: 13 años, 8 meses
Puntos: 8
Información Problema al generar archivo plano

Hola, espero puedan ayudarme, tengo el siguiente problema, estoy generando en una aplicacion en la que genero un archivo plano, separado por comas, que me guarda una cadena de informacion de articulos, lleva codigo, descripcion, departamento, me genera bien todo excepto cuando el precio del articulo es una cantidad cerrada, lo que pasa es que necesito llenar el archivo con 6 digitos para el precio, entonces estoy llenando con ceros a la izquierda para completar el dato requerido, pero cuando es una cantidad cerrada no me toma el valor correcto, en el ejemplo de abajo tengo el articulo 2 con un precio de $100.00 pero al generar el archivo y pasarlo al programa que me lee el archivo plano me lo toma como si costara $1 por la cuestion de los decimales

Articulo codigo 1111, desc = articulo 1, precio = 29.95
codigo 2 = 2222, desc = articulo 2, precio = 100.00

al generar la cadena queda de la siguiente manera

1111,articulo1,002995 cadena generada correctamente
2222,articulo2,000100 cadena no correcta

como pueden ver en la cadena los 6 ultimos digitos son para el precio, y los dos ultimos de esta parte de la cadena corresponden a los decimales del producto, pero al tener una cantidad con ceros a la derecha no lo genera correctamente.

estoy sacando la informacion desde un datagridview, tengo 3 forms y en cada uno un datagridview, que lleno de la siguiente manera uno desde una BD, uno desde un archivo de excel y otro que se puede llenar manualmente, pero al generar el archivo plano de cualquiera de los forms me pasa lo mismo, lleno unas variables con los datos de los dgv y con un loop las paso al archivo, la variable para la columna del precio es DOUBLE, le dejo un ejemplo del proceso y pues espero puedan ayudarme al darme un consejo de donde podria estar el error saludos.

strStreamW = File.OpenWrite(FilePath)
strStreamWriter = New StreamWriter(strStreamW, System.Text.Encoding.UTF8)

Dim Codigo As String
Dim Costo As Double
Dim Descripcion As String

With DataGridView1
strStreamWriter.WriteLine(Chr(13))
For i As Integer = 0 To DataGridView1.Rows.Count - 2
Codigo = Me.DataGridView1.Rows(i).Cells("Codigo").Value.ToS tring
Descripcion = Me.DataGridView1.Rows(i).Cells("Descripcion").Valu e.ToString
Costo = Me.DataGridView1.Rows(i).Cells("Precio").Value.ToS tring

strStreamWriter.WriteLine(Codigo.Trim.PadLeft(10, "0") & Descripcion & Costo.trim.padleft(6, "0").replace(".", "")
next
end with
strStreamWriter.Close()
  #2 (permalink)  
Antiguo 08/03/2011, 06:52
Avatar de mikolbe  
Fecha de Ingreso: octubre-2010
Mensajes: 104
Antigüedad: 13 años, 6 meses
Puntos: 2
Respuesta: Problema al generar archivo plano

Hola, cómo estás? Fijate si en esta linea (Costo = Me.DataGridView1.Rows(i).Cells("Precio").Value.ToS tring) pruebas ponerlo así:

Código vb:
Ver original
  1. Costo = Me.DataGridView1.Rows(i).Cells("Precio").ToString

Lo que hice fué sacarle el Value.

Salutes, me cuentas el resultado.

<<[[MIKOL]]>>
  #3 (permalink)  
Antiguo 09/03/2011, 21:52
Avatar de emmax  
Fecha de Ingreso: agosto-2010
Ubicación: Sonora
Mensajes: 172
Antigüedad: 13 años, 8 meses
Puntos: 8
Respuesta: Problema al generar archivo plano

Saludos mikolbe, en principio gracias por tomarte la molestia de responder a mi problema, tu idea no me funciono ya que al tomar el dato de DGV no me lo puede convertir si no lleva el miembro VALUE en la cadena, pero ya encontre como realizar esta convercion, quebrandome la cabeza, tal vez para algunos no sea tanto problema, pero para mi en este casi si me lo causo, encontre la solucion con las siguientes lineas, dejo el pedaso de codigo para si a algunos les puede servir en el futuro tomen la idea si esta les parece la mejor, repito gracias a mikolbe por tomarse la molestia de compartir sus ideas, saludos.

strStreamW = File.OpenWrite(FilePath)
strStreamWriter = New StreamWriter(strStreamW, System.Text.Encoding.UTF8)

Dim Codigo As String
Dim Costo As Double
Dim Descripcion As String

With DataGridView1
strStreamWriter.WriteLine(Chr(13))
For i As Integer = 0 To DataGridView1.Rows.Count - 2
Codigo = Me.DataGridView1.Rows(i).Cells("Codigo").Value.ToS tring
Descripcion = Me.DataGridView1.Rows(i).Cells("Descripcion").Valu e.ToString
Costo = Convert.ToString(Me.DataGridView1.Rows(i).Cells("P recio").Value)

strStreamWriter.WriteLine(Codigo.Trim.PadLeft(10, "0") & Descripcion & String.Format("{0:c}", Costo).Replace("$", "").Replace(".", "").Trim.PadLeft(6, "0"))
next
end with
strStreamWriter.Close()

Etiquetas: plano
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:50.