Hola a todos tengo este pequeño problema y no se como solucionarlo.
Error de servidor en la aplicación '/'.
Referencia a objeto no establecida como instancia de un objeto.
Descripción: Excepción no controlada al ejecutar la solicitud Web actual. Revise el seguimiento de la pila para obtener más información acerca del error y dónde se originó en el código.
Detalles de la excepción: System.NullReferenceException: Referencia a objeto no establecida como instancia de un objeto.
Error de código fuente:
<br>Línea 305: Throw exp<br>Línea 306: Finally<br>Línea 307: ex.Quit()<br>Línea 308: End Try<br>Línea 309: End Function<br> |
Archivo de origen: C:\NPES\ReportesModificados\ServicioPruebas\SalomeReporteEjecucionDetallado.aspx.vb **Línea:**307
Seguimiento de la pila:
<br>[NullReferenceException: Referencia a objeto no establecida como instancia de un objeto.]<br> Prueba2.InsertExcel(DataSet dsDataProject) in C:\NPES\ReportesModificados\ServicioPruebas\SalomeReporteEjecucionDetallado.aspx.vb:307<br> Prueba2.Page_Load(Object sender, EventArgs e) in C:\NPES\ReportesModificados\ServicioPruebas\SalomeReporteEjecucionDetallado.aspx.vb:13<br> System.Web.UI.Control.OnLoad(EventArgs e) +131<br> System.Web.UI.Control.LoadRecursive() +65<br> System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2427<br><br> |
Información de versión: Versión de Microsoft .NET Framework:2.0.50727.5466; Versión ASP.NET:2.0.50727.5491
el siguiente es el codigo
Imports System.Data
Imports System.Text
Imports System.IO
Imports Microsoft.Office.Interop
Partial Class Prueba2
Inherits System.Web.UI.Page
Dim StrRutaReportes As String = System.Configuration.ConfigurationSettings.AppSettings("StrRutaReportes")
Private Conexion As New ConexionBD()
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
InsertExcel(GetDataCampagne(GetIdProject(Request.QueryString("strProject"))))
End If
End Sub
''' <summary>
''' Funcion que recibe sentencia sql y retorna un dataset.
''' </summary>
''' <param name="sSQL"></param>
''' <returns>Dataset con la informacion devuelta por la base de datos.</returns>
''' <remarks></remarks>
''' <autor>Lbernal 01/05/2009</autor>
Public Function GetIdProject(ByVal strProject As String) As Integer
Dim sSQL As String
'Obtener nombre y id del proyecto.
sSQL = "SELECT id_projet FROM PROJET_VOICE_TESTING where "
sSQL &= "nom_projet= '" & strProject & "'"
Return Integer.Parse(Conexion.metTraerDatos(sSQL, "salome").Tables("Table").Rows(0)("id_projet"))
End Function
''' <summary>
''' Funcion que recibe sentencia sql y retorna un dataset.
''' </summary>
''' <param name="sSQL"></param>
''' <returns>Dataset con la informacion devuelta por la base de datos.</returns>
''' <remarks></remarks>
''' <autor>Lbernal 01/05/2009</autor>
Public Function GetData(ByVal sSQL As String) As DataSet
Return Conexion.metTraerDatos(sSQL, "salome")
End Function
''' <summary>
''' Funcion que recibe Id del proyecto y retorna cas test de la campagne.
''' </summary>
''' <param name="idProject"></param>
''' <returns>Dataset con la informacion devuelta por la base de datos.</returns>
''' <remarks></remarks>
''' <autor>Lbernal 01/05/2009</autor>
Public Function GetDataCampagne(ByVal idProject As Integer) As DataSet
Dim sSQL As New System.Text.StringBuilder
sSQL.Append("SELECT ")
sSQL.Append(" projet_voice_testing.nom_projet ")
sSQL.Append(" ,famille_test.id_famille ")
sSQL.Append(" , famille_test.nom_famille ")
sSQL.Append(" , suite_test.id_suite ")
sSQL.Append(" , suite_test.nom_suite ")
sSQL.Append(" , campagne_test.id_camp ")
sSQL.Append(" , campagne_test.nom_camp ")
sSQL.Append(" , cas_test.id_cas ")
sSQL.Append(" , cas_test.nom_cas ")
sSQL.Append(" , action_test.nom_action ")
sSQL.Append(" , action_test.description_action ")
sSQL.Append(" , action_test.res_attendu_action ")
sSQL.Append(" , CASE ea.res_exec_action ")
sSQL.Append(" WHEN '' THEN '' ")
sSQL.Append(" WHEN 'FAILED' THEN 'FALLIDO' ")
sSQL.Append(" WHEN 'INCONCLUSIF' THEN 'INCONCLUSO' ")
sSQL.Append(" WHEN 'PASSED' THEN 'CORRECTO' ")
sSQL.Append(" ELSE '' END res_exec_action ")
sSQL.Append(" , rec.nom_res_exec_camp ")
sSQL.Append(" , CASE rec.resultat_res_exec_camp ")
sSQL.Append(" WHEN 'INCOMPLETE' THEN 'INCOMPLETO' ")
sSQL.Append(" WHEN 'TERMINEE' THEN 'TERMINADO' ")
sSQL.Append(" ELSE '' END resultat_res_exec_camp ")
sSQL.Append(" FROM ")
sSQL.Append(" .campagne_test ")
sSQL.Append(" , .cas_test ")
sSQL.Append(" , .campagne_cas ")
sSQL.Append(" , .action_test ")
sSQL.Append(" , .famille_test ")
sSQL.Append(" , .suite_test ")
sSQL.Append(" , .projet_voice_testing ")
sSQL.Append(" , .exec_action ea ")
sSQL.Append(" , exec_cas ec ")
sSQL.Append(" , res_exec_camp rec ")
sSQL.Append(" WHERE campagne_cas.CAMPAGNE_TEST_id_camp = id_camp ")
sSQL.Append(" AND campagne_cas.CAS_TEST_id_cas = id_cas ")
sSQL.Append(" AND campagne_test.PROJET_VOICE_TESTING_id_projet = famille_test.PROJET_VOICE_TESTING_id_projet ")
sSQL.Append(" AND action_test.CAS_TEST_id_cas = id_cas ")
sSQL.Append(" AND famille_test.PROJET_VOICE_TESTING_id_projet = projet_voice_testing.id_projet ")
sSQL.Append(" AND suite_test.FAMILLE_TEST_id_famille = famille_test.id_famille ")
sSQL.Append(" AND cas_test.SUITE_TEST_id_suite = suite_test.id_suite ")
sSQL.Append(" AND projet_voice_testing.id_projet = " & idProject)
sSQL.Append("
AND ea.ACTION_TEST_id_action = action_test.id_action ")
sSQL.Append("
AND ea.EXEC_CAS_id_exec_cas= ec.id_exec_cas ")
sSQL.Append("
AND ec.RES_EXEC_CAMP_id_res_exec_camp = rec.id_res_exec_camp ")
sSQL.Append("ORDER BY famille_test.ordre_famille ASC, campagne_test.ordre_camp ASC, suite_test.ordre_suite ASC, ")
sSQL.Append("cas_test.ordre_cas ASC, action_test.num_step_action ASC;")
Return GetData(sSQL.ToString)
End Function
''' <summary>
''' Funcion que recibe Id del proyecto y retorna cas test de la campagne.
''' </summary>
''' <param name="dsDataProject"></param>
''' <returns>Dataset con la informacion devuelta por la base de datos.</returns>
''' <remarks></remarks>
''' <autor>Lbernal 01/05/2009</autor>
Public Function InsertExcel(ByVal dsDataProject As DataSet) As Boolean
Dim drFila As DataRow
Dim iFilaR As Integer = 0
Dim idCampagne As Integer = -1
Dim iHoja As Integer = 1
Dim iFilaCP As Integer = 1
Dim strFile As String
Dim strRuta As String
'' Crea e inicia una instancia a Excel
Dim ex As Excel.Application
Dim objLibroExcel As Excel.Workbook
'' Crea un objeto WorkBook
Try
ex = New Excel.Application
'' Crea un objeto WorkSheet
Dim objHojaExcelResumen As Excel.Worksheet
Dim objHojaExcelCaso As Excel.Worksheet
'' Crea un objeto Celda
Dim objCelda As Excel.Range
'strRuta = Server.MapPath("plantilla/Excel.xls")
strRuta = StrRutaReportes & "Excel.xls"
''strFile = "plantilla/Excel.xls"
strFile = StrRutaReportes & "Excel.xls"
ex.Visible = True
ex.DisplayAlerts = False
'' Crea una instancia del Workbooks de Excel
'' Crea una instancia de la primera hoja de trabajo de Excel
objLibroExcel = ex.Workbooks.Add()
objHojaExcelResumen = objLibroExcel.Worksheets(1)
'objLibroExcel.Worksheets.Item(2).Delete()
'objLibroExcel.Worksheets.Item(2).Delete()
objHojaExcelResumen.Name = "Resumen"
Int(iFilaR = 0)
For Each drFila In dsDataProject.Tables(0).Rows
If iFilaR = 0 Then
'' Crear el encabezado
objHojaExcelResumen.Range("A1:D1").Merge()
objHojaExcelResumen.Range("A1:D1").Font.Name = "Arial"
objHojaExcelResumen.Range("A1:D1").Font.Bold = True
objHojaExcelResumen.Range("A1:D1").Font.Size = 15
objHojaExcelResumen.Range("A1:D1").Value = drFila("nom_projet")
'' Crear el subencabezado
objHojaExcelResumen.Range("A2:D2").Font.Name = "Arial"
objHojaExcelResumen.Range("A2:D2").Font.Bold = True
objHojaExcelResumen.Range("A2:D2").Font.Italic = True
objHojaExcelResumen.Range("A2:D2").Font.Size = 13
objCelda = objHojaExcelResumen.Range("A2", Type.Missing)
objCelda.Value = "Familia"
objCelda = objHojaExcelResumen.Range("B2", Type.Missing)
objCelda.Value = "Suite"
objCelda = objHojaExcelResumen.Range("C2", Type.Missing)
objCelda.Value = "Escenario"
objCelda = objHojaExcelResumen.Range("D2", Type.Missing)
objCelda.Value = "Caso Prueba"
iFilaR = 3
End If
If idCampagne = Integer.Parse(drFila.Item("id_cas")) Then
'' Asignar los valores de los registros a las celdas
objHojaExcelCaso.Cells(iFilaCP, "A") = drFila.Item("nom_action") 'Nombre'
objHojaExcelCaso.Cells(iFilaCP, "B") = drFila.Item("description_action") 'Descripcion'
objHojaExcelCaso.Cells(iFilaCP, "C") = drFila.Item("res_attendu_action") 'R. Esperado'
objHojaExcelCaso.Cells(iFilaCP, "D") = drFila.Item("res_exec_action") 'R. Ejeución'
objHojaExcelCaso.Cells(iFilaCP, "E") = drFila.Item("nom_res_exec_camp") 'Ejección Campaña'
objHojaExcelCaso.Cells(iFilaCP, "F") = drFila.Item("resultat_res_exec_camp") 'R.Campaña'
'objHojaExcelCaso.Cells(iFilaCP, "D") = drFila.Item(8) 'Caso Prueba'
iFilaCP = iFilaCP + 1
Else
objHojaExcelResumen.Cells(iFilaR, "A") = drFila.Item("nom_famille") 'Familia'
objHojaExcelResumen.Cells(iFilaR, "B") = drFila.Item("nom_suite") 'Suite'
objHojaExcelResumen.Cells(iFilaR, "C") = drFila.Item("nom_camp") 'Escenario'
objHojaExcelResumen.Cells(iFilaR, "D") = drFila.Item("nom_cas") 'Caso Prueba'
If iHoja = 1 Then
objHojaExcelCaso = objLibroExcel.Sheets.Add(, objHojaExcelResumen, )
Else
objHojaExcelCaso.ListObjects.AddEx(Excel.XlListObjectSourceType.xlSrcRange, objHojaExcelCaso.Range("$A$2:$F$" & iFilaCP - 1), _
, Excel.XlYesNoGuess.xlYes).Name = "tCaso" & iHoja
objHojaExcelCaso.Columns("A:A").EntireColumn.AutoFit()
objHojaExcelCaso.Columns("B:B").EntireColumn.AutoFit()
objHojaExcelCaso.Columns("C:C").EntireColumn.AutoFit()
objHojaExcelCaso.Columns("D:D").EntireColumn.AutoFit()
objHojaExcelCaso.Columns("E:E").EntireColumn.AutoFit()
objHojaExcelCaso.Columns("F:F").EntireColumn.AutoFit()
objHojaExcelCaso.Rows.AutoFit()
objHojaExcelCaso = objLibroExcel.Sheets.Add(, objHojaExcelCaso, )
End If
'objHojaExcelCaso.Visible = Excel.XlSheetVisibility.xlSheetVisible
objHojaExcelCaso.Name = "Caso" & iHoja
objHojaExcelResumen.Hyperlinks.Add(objHojaExcelResumen.Range("D" & iFilaR), "", objHojaExcelCaso.Name & "!A1", , drFila.Item(8))
objHojaExcelCaso.Hyperlinks.Add(objHojaExcelCaso.Range("A1"), "", objHojaExcelResumen.Name & "!F" & iFilaR, , "")
objHojaExcelCaso.Range("A1:F1").Merge()
objHojaExcelCaso.Range("A1:F1").Font.Name = "Arial"
objHojaExcelCaso.Range("A1:F1").Font.Bold = True
objHojaExcelCaso.Range("A1:F1").Font.Size = 14
objHojaExcelCaso.Range("A1:F1").Font.TintAndShade = 0
objHojaExcelCaso.Range("A1:F1").Font.ColorIndex = 0
objHojaExcelCaso.Range("A1:F1").Value = drFila("nom_cas")
'' Crear el subencabezado
objHojaExcelCaso.Range("A2:F2").Font.Name = "Arial"
objHojaExcelCaso.Range("A2:F2").Font.Bold = True
objHojaExcelCaso.Range("A2:F2").Font.Italic = True
objHojaExcelCaso.Range("A2:F2").Font.Size = 12
objCelda = objHojaExcelCaso.Range("A2", Type.Missing)
objCelda.Value = "Nombre"
objCelda = objHojaExcelCaso.Range("B2", Type.Missing)
objCelda.Value = "Descripción"
objCelda = objHojaExcelCaso.Range("C2", Type.Missing)
objCelda.Value = "Resultado Esp"
objCelda = objHojaExcelCaso.Range("D2", Type.Missing)
objCelda.Value = "Resultado Ejecución"
objCelda = objHojaExcelCaso.Range("E2", Type.Missing)
objCelda.Value = "Ejecución de Campaña"
objCelda = objHojaExcelCaso.Range("F2", Type.Missing)
objCelda.Value = "Estado de Ejeución de Campaña"
iFilaCP = 3
objHojaExcelCaso.Cells(iFilaCP, "A") = drFila.Item("nom_action") 'Nombre'
objHojaExcelCaso.Cells(iFilaCP, "B") = drFila.Item("description_action") 'Descripcion'
objHojaExcelCaso.Cells(iFilaCP, "C") = drFila.Item("res_attendu_action") 'R. Esperado'
objHojaExcelCaso.Cells(iFilaCP, "D") = drFila.Item("res_exec_action") 'R. Esperado'
objHojaExcelCaso.Cells(iFilaCP, "E") = drFila.Item("nom_res_exec_camp") 'R. Esperado'
objHojaExcelCaso.Cells(iFilaCP, "F") = drFila.Item("resultat_res_exec_camp") 'R. Esperado'
'objHojaExcelCaso.Cells(iFilaCP, "D") = drFila.Item(8) 'Caso Prueba'
idCampagne = Integer.Parse(drFila.Item("id_cas"))
iFilaR = iFilaR + 1
iHoja = iHoja + 1
iFilaCP = 4
End If
Next
objHojaExcelResumen.ListObjects.AddEx(Excel.XlListObjectSourceType.xlSrcRange, objHojaExcelResumen.Range("$A$2:$D$" & iFilaR - 1), _
, Excel.XlYesNoGuess.xlYes).Name = "tResumen"
objHojaExcelCaso.ListObjects.AddEx(Excel.XlListObjectSourceType.xlSrcRange, objHojaExcelCaso.Range("$A$2:$F$" & iFilaCP - 1), _
, Excel.XlYesNoGuess.xlYes).Name = "tCaso" & iHoja
objHojaExcelCaso.Columns("A:A").EntireColumn.AutoFit()
objHojaExcelCaso.Columns("B:B").EntireColumn.AutoFit()
objHojaExcelCaso.Columns("C:C").EntireColumn.AutoFit()
objHojaExcelCaso.Columns("D:D").EntireColumn.AutoFit()
objHojaExcelCaso.Columns("E:E").EntireColumn.AutoFit()
objHojaExcelCaso.Columns("F:F").EntireColumn.AutoFit()
objHojaExcelCaso.Rows.AutoFit()
objHojaExcelResumen.Columns("A:A").EntireColumn.AutoFit()
objHojaExcelResumen.Columns("B:B").EntireColumn.AutoFit()
objHojaExcelResumen.Columns("C:C").EntireColumn.AutoFit()
objHojaExcelResumen.Columns("D:D").EntireColumn.AutoFit()
objHojaExcelResumen.Rows.AutoFit()
objHojaExcelResumen.Activate()
' Save created sheets as a file
objLibroExcel.SaveAs(strRuta)
' Make sure all objects are disposed
objLibroExcel.Close()
ex.Quit()
Response.Redirect("descarga.aspx?file=" & strFile)
Catch exp As Exception
Response.Write(exp.Message)
Throw exp
Finally
ex.Quit()
End Try
End Function
End Class
Gracias por cualquier colaboración