Estimados Buenas noches , tengo un problema estoy intentando generar un documento pdf apartir de un resultado de un datragridview.Probe haciendo un debug me lee las columnas todo pero me da un error y me dice que no se puede generar el pdf.

Los resultados del datagridview los levanto de con un boton de esta manera.

Aclaro que aca estoy haciendo una consulta a una bd para que filtre por fechas. que es esta que esta aca debajo.

Debajo de esta voy a poner otra consulta que hago pero en vez de hacerla por fecha la hago por legajo. De esta manera si me genera el pdf.
De las 2 maneras me devuelve el resultado de la consulta pero al generar el pdf solamente me devuelve el resutlado del "ConsultaLegajo"

Public Sub consultafechas()



Try



Dim Fecha_Inicial As Date = Consulta.desdecalendario.Value.Date



Dim Fecha_Final As Date = Consulta.hastacalendario.Value.Date







Dim conexion As New OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0; Data source= D:\Developer\Data Base\bd2.mdb")







Dim comando As New OleDbCommand



Dim dt As New DataTable



Dim adaptador As New OleDbDataAdapter



Dim data As New DataSet



adaptador = New OleDbDataAdapter("SELECT Id, Legajo, Apellido, Nombre, Desde, Hasta, Sector From Empleados Where Desde >= ? AND Hasta <= ?", conexion)



adaptador.SelectCommand.Parameters.AddWithValue("d esde", Fecha_Inicial)



adaptador.SelectCommand.Parameters.AddWithValue("h asta", Fecha_Final)



adaptador.Fill(data)



dt = data.Tables(0)



Consulta.dgvProducto.DataSource = data.Tables(0)



Consulta.lfecha.Text = Consulta.dgvProducto.RowCount - 1



Catch ex As Exception



'Si el intento es fallido, mostrar MsgBox y cerramos la aplicacion.



MessageBox.Show("No se pudo conectar con la DB.", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Warning)



Consulta.Close()



End Try







End Sub

Para imprimir hago lo siguiente:



' desde aca reporte

'Metodo que impide que se ejecute varias veces y al mismo tiempo nuestra aplicacion.

Private Sub AplicacionEjecutada()

If UBound(System.Diagnostics.Process.GetProcessesByNa me(System.Diagnostics.Process.GetCurrentProcess.Pr ocessName)) > 0 Then

Me.Close()

End If

End Sub

' Funcion que obtiene el tamaño de las columnas del DataGridView.

'La funcion se usara en el metodo para crear el reporte en PDF.

Public Function GetColumnasSize(ByVal dg As DataGridView) As Single()

Dim values As Single() = New Single(dg.ColumnCount - 1) {}

For i As Integer = 0 To dg.ColumnCount - 1

values(i) = CSng(dg.Columns(i).Width)

Next

Return values

End Function

'Metodo para crear el reporte en PDF.

Public Sub ExportarDatosPDF(ByVal document As Document)

'Se crea un objeto PDFTable con el numero de columnas del DataGridView.

Dim datatable As New PdfPTable(dgvProducto.ColumnCount)

'Se asignan algunas propiedades para el diseño del PDF.

datatable.DefaultCell.Padding = 10

Dim headerwidths As Single() = GetColumnasSize(dgvProducto)

datatable.SetWidths(headerwidths)

datatable.WidthPercentage = 100

datatable.DefaultCell.BorderWidth = 2

datatable.DefaultCell.HorizontalAlignment = Element.ALIGN_CENTER

'Se crea el encabezado en el PDF.

Dim encabezado As New Paragraph("Vacaciones.", New Font(Font.Name = "Tahoma", 20, Font.Bold))

'Se crea el texto abajo del encabezado.

Dim texto As New Phrase("Reporte de Vacaciones al: " + Now.Date(), New Font(Font.Name = "Tahoma", 14, Font.Bold))

'Se capturan los nombres de las columnas del DataGridView.

For i As Integer = 0 To dgvProducto.ColumnCount - 1

datatable.AddCell(dgvProducto.Columns(i).HeaderTex t)

Next

datatable.HeaderRows = 1

datatable.DefaultCell.BorderWidth = 1

'Se generan las columnas del DataGridView.

For i As Integer = 0 To dgvProducto.RowCount - 1

For j As Integer = 0 To dgvProducto.ColumnCount - 1

datatable.AddCell(dgvProducto(j, i).Value.ToString())

Next

datatable.CompleteRow()

Next

'Se agrega el PDFTable al documento.

document.Add(encabezado)

document.Add(texto)

document.Add(datatable)

End Sub



Private Sub btnPDF_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPDF.Click

Try

'Intentar generar el documento.

Dim doc As New Document(PageSize.A4.Rotate(), 10, 10, 10, 10)

'Path que guarda el reporte en el escritorio de windows (Desktop).

Dim filename As String = Environment.GetFolderPath(Environment.SpecialFolde r.DesktopDirectory) + "\ReporteProductos.pdf"

Dim file As New FileStream(filename, FileMode.Create, FileAccess.Write, FileShare.ReadWrite)

PdfWriter.GetInstance(doc, file)

doc.Open()

ExportarDatosPDF(doc)

doc.Close()

Process.Start(filename)

Catch ex As Exception

'Si el intento es fallido, mostrar MsgBox.

MessageBox.Show("No se puede generar el documento PDF.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)

End Try

End Sub