Foros del Web » Programando para Internet » ASPX (.net) »

Error HRESULT E_FAIL de una llamada a un componente COM

Estas en el tema de Error HRESULT E_FAIL de una llamada a un componente COM en el foro de ASPX (.net) en Foros del Web. Hola, la situacion es la sigueinte: agrego mediante codigo un pivot table desde el lad del cs de una pagina aspx: Código: PivotTable pv = ...
  #1 (permalink)  
Antiguo 28/06/2008, 20:29
 
Fecha de Ingreso: marzo-2008
Mensajes: 28
Antigüedad: 16 años, 1 mes
Puntos: 0
Error HRESULT E_FAIL de una llamada a un componente COM

Hola, la situacion es la sigueinte: agrego mediante codigo un pivot table desde el lad del cs de una pagina aspx:

Código:
   
        PivotTable pv = new PivotTable();

        pv.ConnectionString = "Provider=MSOLAP.3;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=BICubo;Data Source=Server";
        pv.DisplayFieldList = true;
        pv.DataMember = "Vista Asistencia";
        pv.DisplayExpandIndicator = true;
        pv.AllowDetails = true;
        pv.DisplayAlerts = true;
        pv.ActiveView.TitleBar.Caption = "Vista Cubo";

        Response.Write("<OBJECT id='pTable' style='Z-INDEX: 109; LEFT: 300px; WIDTH: 502px; POSITION: absolute; TOP: 500px; HEIGHT: 217px' classid='clsid:0002E55A-0000-0000-C000-000000000046'VIEWASTEXT>");
        Response.Write("<param name=\"XMLData\" value='" + pv.XMLData.ToString() + "'>");
        Response.Write("</OBJECT>");
El proyecto se genera sin ningun problema, al momento de ejcutarlo me muestra el siguiente error, al momento de pasar por el DataMember:

System.Runtime.InteropService.COMException : {"Devuelto error HRESULT E_FAIL de una llamada a un componente COM."}

Codigo de error: -2147467259

Cabe aclarar que el cubo esta implementado mediante analisys service 2005.
  #2 (permalink)  
Antiguo 01/07/2008, 01:25
 
Fecha de Ingreso: diciembre-2007
Mensajes: 100
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Error HRESULT E_FAIL de una llamada a un componente COM

Hola,

A mi me han ocurrido errores similares al agregar los componente por código.
Trabajo con Visual Studio y a veces lo he solucionado aregando los compnentes mediante los menus de VS. "Project o WebSite -> Add References -> Pestaña COM" y seleccionar el desado. Despues Debug -> Rebuild para que vuelva a coger todas las referencias a objetos COM
  #3 (permalink)  
Antiguo 01/07/2008, 19:49
 
Fecha de Ingreso: marzo-2008
Mensajes: 28
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Error HRESULT E_FAIL de una llamada a un componente COM

Gracias! Sil... pero tenes una idea de cual de todos los que esta ahi hay que agregar???
  #4 (permalink)  
Antiguo 01/07/2008, 23:36
 
Fecha de Ingreso: diciembre-2007
Mensajes: 100
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Error HRESULT E_FAIL de una llamada a un componente COM

Lo siento ayer algo raro me pasó al escribir el POST y lo dejé a medias.

Una vez que ves todos los componentes COM, tienes que agregar:
1) Microsoft Office Interop 11.0
2) Microsoft Excel 11.0

Tras haber agregado las referencias en el código desde donde quieres trabajar con Excel debes agregar los siguientes Imports:

1) Imports System.Runtime.InteropServices.Marshal
2) Imports Microsoft.Office.Interop

A partir de ahora puedes trabajar con Excel sin problemas.

El modo de trabajo básicamente consiste en crear un objeto que de algún modo hará de aplicación Excel

Dim oXL As Excel.Application

Un Libro de Excel
Dim oWB As Excel.Workbook

Y una oja del libro
Dim oSheet As Excel.Worksheet

Una vez declarados los tres objetos metemos la hoja dentro del libro, y el libro dentro de la aplicación Excel (como si trabajásemos con el Excel de verdad...)

Inicializar Excel y obtener un objeto de Aplicacion
oXL = CreateObject("Excel.Application")
oXL.Visible = True

' Obtener nuevo libro (workbook)
oWB = oXL.Workbooks.Add

' Activar la hoja del libro
oSheet = oWB.ActiveSheet

Después de todo eso aplicamos métodos a la hoja para escribirla, cambiarle los tipos de letra... etc
' Escribir titulo del informe
oSheet.Cells(1, 1).Value = "Estoy escribiendo en una celda de Excel "
oSheet.Cells(1, 2).Value = "Estoy escribiendo en la siguiente celda "

' Poner un rango en negrita...
oSheet.Range("A1", "D1").Font.Bold = True

Este ejemplo es para escribir un documento. Supongo queal crear la aplicación si en vez de "NewExcelAplication" le pasas tu fichero excel, abrirá ese en vez de uno nuevo:
oXL = CreateObject("C\:UnExcel.xls")

Si no es ese método para abrir uno existente seguro que hay uno, yo he trabajado con plantillas pero ahora mismo no encuentro el código exacto.

De todos modos te dejo un link que hablan algo sobre ello:
http://www.c-sharpcorner.com/UploadFile/mgold/HowtoOepnandReadanExcelSpreadsheetinaListViewin.NE T11282005034134AM/HowtoOepnandReadanExcelSpreadsheetinaListViewin.NE T.aspx

Si haces en google la siguietne búsqueda "Accessing Excel from .NET" entocntrarás bastantes ejemplos.

Espero que te haya servido de algo, y si tienes alguna cosa mas que pregutnar, para eso estamos.
  #5 (permalink)  
Antiguo 02/07/2008, 17:11
 
Fecha de Ingreso: marzo-2008
Mensajes: 28
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Error HRESULT E_FAIL de una llamada a un componente COM

Hola, sil, mira empece a probar tu solución y

Cita:
Iniciado por Sil_va Ver Mensaje

1) Microsoft Office Interop 11.0
2) Microsoft Excel 11.0
No me aparecen ninguna de las dos. Pero busque la primera y encontre Microsoft.Office.Interop.Owc11.dll supongo servira.

Seguidamente decidi probar los demas pasos, a ver si me funcionaba, pero de

Cita:
Iniciado por Sil_va Ver Mensaje

1) Imports System.Runtime.InteropServices.Marshal
2) Imports Microsoft.Office.Interop
la primera no aparece Marshal, solo aparecen Comtypes y Expando, por lo que solo agregué System.Runtime.InteropServices y la segunda.

Luego, al ejecutar el error me sigue apareciendo.

De todas formas no eniendo la parte que mencionas de excel... Te referis al hecho de que cargue en excel todo el contenido del resultado de la vista que se encuentra implementada en Analysis Service...???? Por que el error me da al momento de que trata de leer el cubo.

Por si te sirve de dato, estoy trabajando con ASP. net 2005, C#, SQL 2005, Analysis Service 2005 y Office 2007.

Gracias!
  #6 (permalink)  
Antiguo 02/07/2008, 23:53
 
Fecha de Ingreso: diciembre-2007
Mensajes: 100
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Error HRESULT E_FAIL de una llamada a un componente COM

Hola,

Si no te aparecen en la pestaña COM lo que te digo es posible que no tengas el Office instalado completamente.

En Office 2003 que es con el que trabajo yo para instalar la parte de compatibilidad con programación hay que hacer lo siguiente:

1) Meter el CD y en los checkbox donde elijes lo que vas a instalar pinchas en Excel (aunque ya lo tengas instalado)

2) Abajo hay un boton que pone Opciones avanzadas. Pincha ahí

3) Aparece una lista desplegable con todos los componentes de Office. Despliega la parte de Excel y hac click en la casilla que pone algo así como "Habilitar compatibilidad con programación .NET"

(Creo que también hay que clickar esta opción en algún otro nodo de la lista desplegable que hace alusión a todo el Office en general pero no al Excel en particular)

Seguir con la instalación normalmente.

Ahora sí te deberían aparecer los dos en la lista COM. Creo que en caso de Office 2007 son Microsoft Excel 12.0 Object Library y lo mismo para Microsoft Office Interop 12.00...

Una vez agregadas estas referencias al hacer las imports no deberñia darte problemas.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:14.