Se queda Colgado al Exportar Archivo de Excel y visualizarlo en el

25/09/2006 - 21:23 por dhvilla | Informe spam
Hola Grupo:

He estado solucionando un problema para Exportar un Archivo de Crystal
Report a Excel. Esta aplicación funciona correctamente. Pero al momento de
Trabajarlo en una pagina ASP.NET se queda cogado. Les proporciono la sintaxis
que estoy aplicando en una Función que fue hecha en Visual Basic 6.0:


Const m_modName As String = "ADMON_EXP_DLL_CIFRAS_EDOCTA"
Public Function Exporta(ByVal vli_CveGrupo As Integer, _
ByVal vli_CvePtoVta As Integer, _
ByVal vls_Periodo As String, _
ByVal vli_CveRamo As Integer, _
ByVal vls_Usuario As String, _
ByVal vls_ReportName As String, _
ByVal vls_Origen As String, _
ByVal vls_Destino As String)


Dim fs, ParamValue, Param1, Param2, Param3, Param4, Param5

Dim crystalApplication As CRAXDRT.Application
Dim crystalReport As CRAXDRT.Report
Dim crystalExportOptions As CRAXDRT.ExportOptions

'********
On Error GoTo ErrorHandler

Set crystalApplication = CreateObject("CrystalRunTime.Application")
Set crystalReport = crystalApplication.OpenReport(vls_ReportName)


'Crea una variable para la coleccion de parametros

Set Param1 = crystalReport.ParameterFields.Item(1)
ParamValue = vli_CveGrupo
Call Param1.SetCurrentValue(CInt(ParamValue), 7)

Set Param2 = crystalReport.ParameterFields.Item(2)
ParamValue = vli_CvePtoVta
Call Param2.SetCurrentValue(CInt(ParamValue), 7)

Set Param3 = crystalReport.ParameterFields.Item(3)
ParamValue = vls_Periodo
Call Param3.SetCurrentValue(CStr(ParamValue), 12)

Set Param4 = crystalReport.ParameterFields.Item(4)
ParamValue = vli_CveRamo
Call Param4.SetCurrentValue(CInt(ParamValue), 7)

Set Param5 = crystalReport.ParameterFields.Item(5)
ParamValue = vls_Usuario
Call Param5.SetCurrentValue(CStr(ParamValue), 12)

' 'and then we do it by setting the export options
Set crystalExportOptions = crystalReport.ExportOptions
crystalExportOptions.DiskFileName = vls_Origen
crystalExportOptions.UseReportDateFormat = True
crystalExportOptions.FormatType = crEFTExcel80
' ' 0=no format, 1=crystal report, 2=data interchange,
' ' 3=html, 4=richtext, ... 14=word for windows, and lots of others
' ' look for CRExportFormatType in the Object Browser
'
crystalExportOptions.UseReportNumberFormat = True
crystalExportOptions.DestinationType = 1
' 0=no destination,1=diskfile,2=mapi,3=mailVIM,4=MicrosoftExchange
' found under CRExportDestinationType in the Object Browser

Call crystalReport.Export(False)

Set fs = CreateObject("Scripting.FileSystemObject")
fs.CopyFile vls_Origen, vls_Destino

' GetObjectContext.SetComplete
Exit Function

ErrorHandler:
'GetObjectContext.SetAbort
RaiseError m_modName, "Archivo GE Capital Batch"
End Function


Dicha función la guardo como DLL y lo doy de alta en COM+




aqui llamo la función en ASP.NET

sNombreDll = "ADMON_EXP_DLL_CIFRAS_EDOCTA.DataAccess"
sNombreArchivo = "cifras_25092006.xls"
sReportname = "Rpt_Reporte_Cifras_Ctrl_Desarrollo.rpt"
sUrl = "../../ReportesExcel/" & sNombreArchivo
sPathReportname = "C:\ResportesEmisor2006\ADMON\" & sReportname
sPathOrigen = "C:\ReportesExcel\" & sNombreArchivo
sPathDestino = "C:\boanetxml\ReportesExcel\"

componente = CreateObject(sNombreDll)
componente.Exporta(7, 0, "200609", 2, "ADMIN", sPathReportname, sPathOrigen,
sPathDestino)

Al momento de debugear la linea componente.Exporta( es en esa
linea donde se queda colgado.


Ojala y alguien tenga una idea de lo que pueda estar pasando
Salu2 Cordiales

¸,ø¤º°`°º¤ø,¸ L.I. Daniel H. Villa°`°º¤ø,¸¸,ø¤º°
 

Leer las respuestas

#1 Matias Iacono
26/09/2006 - 14:28 | Informe spam
Como sugerencia, deberias cambiar todos los CreateObjects por la correcta
instanciacion de objetos en .Net, ademas, importar el DLL que usas a tu
proyecto.

Por otra parte, si el DLL de Visual Basic arroja alguna pantalla grafica, o
sea, requiere mostrar alguna ventana tipo windows, es seguro que te arrojara
un error en el servidor, posiblemente, como el que comentas.

Si usas Crystal Reports, es posible que te sea mas conveniente usar el
apropiado para .Net, que viene incluido dentro de Visual Studio, y no manejar
una version COM ActiveX.

Saludos.

Microsoft MVP
Orador Regional INETA


"dhvilla" wrote:

Hola Grupo:

He estado solucionando un problema para Exportar un Archivo de Crystal
Report a Excel. Esta aplicación funciona correctamente. Pero al momento de
Trabajarlo en una pagina ASP.NET se queda cogado. Les proporciono la sintaxis
que estoy aplicando en una Función que fue hecha en Visual Basic 6.0:


Const m_modName As String = "ADMON_EXP_DLL_CIFRAS_EDOCTA"
Public Function Exporta(ByVal vli_CveGrupo As Integer, _
ByVal vli_CvePtoVta As Integer, _
ByVal vls_Periodo As String, _
ByVal vli_CveRamo As Integer, _
ByVal vls_Usuario As String, _
ByVal vls_ReportName As String, _
ByVal vls_Origen As String, _
ByVal vls_Destino As String)


Dim fs, ParamValue, Param1, Param2, Param3, Param4, Param5

Dim crystalApplication As CRAXDRT.Application
Dim crystalReport As CRAXDRT.Report
Dim crystalExportOptions As CRAXDRT.ExportOptions

'********
On Error GoTo ErrorHandler

Set crystalApplication = CreateObject("CrystalRunTime.Application")
Set crystalReport = crystalApplication.OpenReport(vls_ReportName)


'Crea una variable para la coleccion de parametros

Set Param1 = crystalReport.ParameterFields.Item(1)
ParamValue = vli_CveGrupo
Call Param1.SetCurrentValue(CInt(ParamValue), 7)

Set Param2 = crystalReport.ParameterFields.Item(2)
ParamValue = vli_CvePtoVta
Call Param2.SetCurrentValue(CInt(ParamValue), 7)

Set Param3 = crystalReport.ParameterFields.Item(3)
ParamValue = vls_Periodo
Call Param3.SetCurrentValue(CStr(ParamValue), 12)

Set Param4 = crystalReport.ParameterFields.Item(4)
ParamValue = vli_CveRamo
Call Param4.SetCurrentValue(CInt(ParamValue), 7)

Set Param5 = crystalReport.ParameterFields.Item(5)
ParamValue = vls_Usuario
Call Param5.SetCurrentValue(CStr(ParamValue), 12)

' 'and then we do it by setting the export options
Set crystalExportOptions = crystalReport.ExportOptions
crystalExportOptions.DiskFileName = vls_Origen
crystalExportOptions.UseReportDateFormat = True
crystalExportOptions.FormatType = crEFTExcel80
' ' 0=no format, 1=crystal report, 2=data interchange,
' ' 3=html, 4=richtext, ... 14=word for windows, and lots of others
' ' look for CRExportFormatType in the Object Browser
'
crystalExportOptions.UseReportNumberFormat = True
crystalExportOptions.DestinationType = 1
' 0=no destination,1=diskfile,2=mapi,3=mailVIM,4=MicrosoftExchange
' found under CRExportDestinationType in the Object Browser

Call crystalReport.Export(False)

Set fs = CreateObject("Scripting.FileSystemObject")
fs.CopyFile vls_Origen, vls_Destino

' GetObjectContext.SetComplete
Exit Function

ErrorHandler:
'GetObjectContext.SetAbort
RaiseError m_modName, "Archivo GE Capital Batch"
End Function


Dicha función la guardo como DLL y lo doy de alta en COM+




aqui llamo la función en ASP.NET

sNombreDll = "ADMON_EXP_DLL_CIFRAS_EDOCTA.DataAccess"
sNombreArchivo = "cifras_25092006.xls"
sReportname = "Rpt_Reporte_Cifras_Ctrl_Desarrollo.rpt"
sUrl = "../../ReportesExcel/" & sNombreArchivo
sPathReportname = "C:\ResportesEmisor2006\ADMON\" & sReportname
sPathOrigen = "C:\ReportesExcel\" & sNombreArchivo
sPathDestino = "C:\boanetxml\ReportesExcel\"

componente = CreateObject(sNombreDll)
componente.Exporta(7, 0, "200609", 2, "ADMIN", sPathReportname, sPathOrigen,
sPathDestino)

Al momento de debugear la linea componente.Exporta( es en esa
linea donde se queda colgado.


Ojala y alguien tenga una idea de lo que pueda estar pasando
Salu2 Cordiales

¸,ø¤º°`°º¤ø,¸ L.I. Daniel H. Villa°`°º¤ø,¸¸,ø¤º°

Preguntas similares