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°`°º¤ø,¸¸,ø¤º°

Preguntas similare

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°`°º¤ø,¸¸,ø¤º°

Respuesta Responder a este mensaje
#2 dhvilla
26/09/2006 - 21:27 | Informe spam
Hola Matias:

Ya solucione el problema, la razón por la que se quedaba colgado era, porque
estaba agregando el DLL en el COM+ como aplicación de Biblioteca y debe de
ser como aplicación de Servidor. Al corregirlo ya puedo abrir mi Archivo en
el IE.

Por esta ocasión de las sugerencias que me diste (que son muy buenas también
y las acepto), no fueron por ahí.

Saludos desde México


Salu2 Cordiales

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



"Matias Iacono" wrote:

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°`°º¤ø,¸¸,ø¤º°
>
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida