Duda y problema con DataGridView

Iniciado por Yaldabaot, 18 Mayo 2013, 22:44 PM

0 Miembros y 1 Visitante están viendo este tema.

Yaldabaot

Buenas tardes a todos los que me leen,

Soy nuevo en el foro, espero aportarles pronto, deseo aprender mucho de ustedes y posteriormente darles conocimientos a los que no sepan. Bueno a lo que vine, tengo un problema muy particular con un DataGridView.

Básicamente el funcionamiento de mi método es importar los valores de una hoja de excel a un DataGridView, por lo que he visto (corrijanme si estoy equivocado) el DatagridView agarra el primer valor de las celdas que obtuvo y por ende interpreta el tipo de dato que obtuvo, es decir si en mi excel la celda A1 = "NUMERO ENTERO", al parecer para el GridView todos los datos de esa columna son enteros. He ahí donde empieza el problema, la columna código de mi hoja de excel es un híbrido dónde habrán datos enteros o texto.

Entonces el DatagridView comienza a ponerme en blanco las columnas que no son el primer dato obtenido. Por ejemplo si el primer dato que obtuvo la hoja es un entero las celdas de excel que no son enteros son puestos en blanco. El problema es específicamente en la columna llamada "Código_Articulo", todo lo demás funciona a la perfección.


Sub Cargar(ByVal dgView As DataGridView, ByVal SLibro As String)

        'HDR=YES : Con encabezado

        Try

        Dim xlApp As New Excel.Application 'Aplicación de excel
        Dim xlWorkBook As Excel.Workbook ' Libro de excel
        Dim xlWorkSheet As Excel.Worksheet ' Hojas
        Dim name As String

        Dim r As Integer = 0
        Dim cs As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                           "Data Source=" & SLibro & ";" & _
                           "Extended Properties=""Excel 8.0;HDR=YES"""

        xlWorkBook = xlApp.Workbooks.Open(SLibro)


        Dim ws As Excel.Worksheet = CType(xlWorkBook.Worksheets.Item(1),     Excel.Worksheet)

        ' Obtenemos el nombre de la hoja.
     

        name = ws.Name
        ws = Nothing

        'Agarra el nombre de la primera hoja

        xlWorkSheet = xlWorkBook.Sheets(name)

        ' se conecta con la hoja sheet 1 
        Dim dAdapter As New OleDbDataAdapter("Select Codigo_Articulo,Descripcion,Cantidad,Precio_de_compra,Total_linea  From [" & name & "$]", cs)
        Dim datos As New DataSet
        'Dim talas As DataTable

        ' agrega los datos 
        dAdapter.Fill(datos)

        With GridCarga
            ' llena el DataGridView 
            '.AutoGenerateColumns = False
            '.AutoGenerateColumns = False
            .DataSource = datos.Tables(0)


            ' DefaultCellStyle: formato currency   
            'para los encabezados 1,2 y 3 del DataGrid 

            '.Columns("Codigo_Articulo").DefaultCellStyle.GetType()
            '.Columns("Descripcion").DefaultCellStyle.Format = "Descripcion"
            '.Columns("Cantidad").DefaultCellStyle.Format = "Cantidad"
            '.Columns("Precio_de_Compra").DefaultCellStyle.Format = "Precio_de_compra"
            '.Columns("Total_Linea").DefaultCellStyle.Format = "Total_linea"


            xlApp.Workbooks.Close()
            xlApp.Quit()
            KillAllExcels()


        End With

        'Muestra la cantidad de filas.
        If GridCarga.Rows.Count > 0 Then
            For r = 0 To GridCarga.Rows.Count - 1
                Me.GridCarga.Rows(r).HeaderCell.Value = (r + 1).ToString()

            Next

        End If

     
         Catch
        MsgBox("El formato de la plantilla cargada no ha sido el correcto, por favor verificarlo.")
         GridCarga.DataSource = Nothing
        NombreA.Text = ""
         End Try

    End Sub



Pude solucionar el problema desde el excel usando la función "Texto" para convertirlos y todos; y posteriormente insertarlo a mi base de datos, mi pregunta es ¿Hay alguna forma de castear los valores?, o

Les adjunto mi código, se que no es muy escueto(espero mejorarlo con el tiempo), desde ya por lo menos gracias de antemano al leerme. ;)
Nunca me contestan -_-

Yaldabaot

Por cierto, si puedo postear este código en la sección de VB?. Disculpen si lo puse en otro lugar, otra duda :P.
Nunca me contestan -_-

XresH

Es contra las normas si contesto tu post, ya que tiene que ir en .NET, cuando lo muevan a su debido lugar yo lo contesto

Saludos.
[ - Si eres programador y quieres que tus proyectos esten en mi blog(con o sin source), consúltame! - ]
Entra A Mi Blog De Programación | | Dudas en este post :| | >>Clic para ir al Post<<

Yaldabaot

Nunca me contestan -_-

Yaldabaot

Podrían pasar el post a la sección de .NET, les agradecería mucho. Perdón por los inconvenientes.
Nunca me contestan -_-