Consulta

GCRaise

Buenas tardes, los últimos dos días he estado peleando con un código en VB .net 2010. Hice un programa para mandar el resultado de una consulta SQL a un datagridview usando un botón y que, pulsando otro botón la información del datagridview pasará al excel. Logré el primer cometido y luego de buscar código en internet también exporta a excel, solo que exporta una hoja de cálculo vacía.

Aquí el código:

Esta parte está en un módulo.

 'Mostrar datagrid (dgv1)
    Public Sub Grid(ByVal dgv1, ByVal a, ByVal b)
        Dim ds As New DataSet
        Dim dt As New DataTable
        Dim ins As String = "SELECT CUADRANTE, COUNT(NROTRANSAC) AS NROPEDIDOS FROM      DELIVERYCAB WHERE HPEDIDO BETWEEN '" + a + "' AND '" & b + "' AND ESTADO='PEDIDO ENTREGADO' GROUP BY CUADRANTE"
        Dim adp As New SqlDataAdapter(ins, cn)

    Try
        ds.Tables.Add("DELIVERYCAB")
        adp.Fill(ds.Tables("DELIVERYCAB"))
        dgv1.DataSource = ds.Tables("DELIVERYCAB")
        cn.Close()
    Catch ex As Exception
        MsgBox("Error:" + ex.Message, MsgBoxStyle.Critical)
    End Try
End Sub

Y esto en un formulario

Public Class PedidosxCuad
    
Dim f3, f4 As String Dim dgv As DataGridView = New DataGridView //Aquí creo que está el problema 'Codigo del boton mostrar DataGridView Grid en PedidosxCuad.vb Private Sub btnMostrar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnMostrar.Click f3 = txtDesde.Text f4 = txtHasta.Text 'Funcion que muestra la tabla en el DataGridView dgv 'Funcion esta ubicada en Module1.vb Grid(dgv1, f3, f4) 'Habilitar boton exportar btnExportar.Enabled = True End Sub 'Botón para exportar Private Sub btnExportar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnExportar.Click Dim app As Microsoft.Office.Interop.Excel.Application Dim wb As Microsoft.Office.Interop.Excel.Workbook Dim ws As Microsoft.Office.Interop.Excel.Worksheet Dim vl As Object = System.Reflection.Missing.Value Dim i As Integer Dim j As Integer app = New Microsoft.Office.Interop.Excel.Application wb = app.Workbooks.Add(vl) ws = wb.Sheets("Hoja1") For i = 0 To dgv.RowCount - 1 For j = 0 To dgv.ColumnCount - 1 For k As Integer = 0 To dgv.Columns.Count ws.Cells(1, k) = dgv.Columns(k - 1).HeaderText ws.Cells(i + 2, j + 1) = dgv(j, i).Value.ToString() Next Next Next ws.SaveAs("D:\Reporte.xlsx") wb.Close() app.Quit() releaseObject(app) //Esta función también está en el módulo solo que no es relevante aquí en el thread releaseObject(wb) releaseObject(ws) Dim res As MsgBoxResult res = MsgBox("Proceso completado, ¿Le gustaria abrir el archivo?", MsgBoxStyle.YesNo, "Exito") If (res = MsgBoxResult.Yes) Then Process.Start("D:\Reporte.xlsx") End If End Sub End Class

Lo que creo es que por mucho que llame a una función mediante el botón mostrar, cuando pulse el de exportar tomará la línea resaltada (es decir, tomará al datagridview vacío). Y bueno, no sé me ha ocurrido nada para que coja el datagridview con los datos en él.

Esperando por un poco de sabiduría mediavidera.

Saludos.

Usuarios habituales

  • GCRaise