Importar datos Excel Sql con opendatasource y nombre de hoja con puntos

04/10/2006 - 13:21 por Marisa | Informe spam
Hola, estoy intentando importar datos desde un libro de Excel con una
hoja cuyo nombre tiene espacios y puntos.La importación la hago a
través de un sp:
SET @select = N'INSERT CostesRRHH
SELECT
almacen.dbo.Ofertas.IdOferta,'
+Str(@idEmpresa) + ' as IdEmpresa,
Costes.[Unidad operativa],
Costes.[Categoría],
Costes.HorasInforme,
Costes.TotalObraInforme,'
+ Str(@mes) +' as Mes,'
+ Str(@año) + ' as Año,
'''+ cast (getdate() as varchar(40)) +''' as FechaIntegracion,
'''+ suser_sname() + '@' + HOST_NAME() +''' as UC ,
'''+ cast (getdate() as varchar(40)) +''' as MC,
null as UE,
null as ME
FROM
(SELECT
[Unidad operativa],
Obra,
[Categoría],
sum([Nº horas obra]) as HorasInforme,
Sum([Total obra]) as TotalObraInforme
FROM
OpenDataSource(''Microsoft.Jet.OLEDB.4.0'',''Data Source="' +@ruta
+'";Extended properties=Excel 8.0;'')...['''+@hoja+'$'']
GROUP BY
[Unidad operativa],
Obra,
[Categoría]) Costes
INNER JOIN almacen.dbo.Ofertas ON almacen.dbo.Ofertas.Referencia Costes.Obra'
EXECUTE sp_executesql @select

El problema es que me da el siguiente error cuando la hoja tiene puntos
en el nombre:

Servidor: mensaje 7314, nivel 16, estado 1, línea 7
El proveedor OLE DB 'Microsoft.Jet.OLEDB.4.0' no contiene la tabla
''FABRICACION S.A. $''. La tabla no existe o bien el usuario actual no
tiene permisos para ella.
Traza de error de OLE DB [Non-interface error: OLE DB provider does
not contain the table: ProviderName='Microsoft.Jet.OLEDB.4.0',
TableName=''FABRICACION S.A. $''].

¿Alguna sugerencia?.
Gracias

Preguntas similare

Leer las respuestas

#1 Maxi
04/10/2006 - 14:30 | Informe spam
Hola Marisa, eso mas que un error de SQL es un problema del ODBC como
interpreta estos datos. Te recomiendo que preguntes en algun foro de ADO o
DAO


Salu2

Microsoft MVP SQL Server
Culminis Speaker
INETA Speaker

"Marisa" escribió en el mensaje
news:
Hola, estoy intentando importar datos desde un libro de Excel con una
hoja cuyo nombre tiene espacios y puntos.La importación la hago a
través de un sp:
SET @select = N'INSERT CostesRRHH
SELECT
almacen.dbo.Ofertas.IdOferta,'
+Str(@idEmpresa) + ' as IdEmpresa,
Costes.[Unidad operativa],
Costes.[Categoría],
Costes.HorasInforme,
Costes.TotalObraInforme,'
+ Str(@mes) +' as Mes,'
+ Str(@año) + ' as Año,
'''+ cast (getdate() as varchar(40)) +''' as FechaIntegracion,
'''+ suser_sname() + '@' + HOST_NAME() +''' as UC ,
'''+ cast (getdate() as varchar(40)) +''' as MC,
null as UE,
null as ME
FROM
(SELECT
[Unidad operativa],
Obra,
[Categoría],
sum([Nº horas obra]) as HorasInforme,
Sum([Total obra]) as TotalObraInforme
FROM
OpenDataSource(''Microsoft.Jet.OLEDB.4.0'',''Data Source="' +@ruta
+'";Extended properties=Excel 8.0;'')...['''+@hoja+'$'']
GROUP BY
[Unidad operativa],
Obra,
[Categoría]) Costes
INNER JOIN almacen.dbo.Ofertas ON almacen.dbo.Ofertas.Referencia Costes.Obra'
EXECUTE sp_executesql @select

El problema es que me da el siguiente error cuando la hoja tiene puntos
en el nombre:

Servidor: mensaje 7314, nivel 16, estado 1, línea 7
El proveedor OLE DB 'Microsoft.Jet.OLEDB.4.0' no contiene la tabla
''FABRICACION S.A. $''. La tabla no existe o bien el usuario actual no
tiene permisos para ella.
Traza de error de OLE DB [Non-interface error: OLE DB provider does
not contain the table: ProviderName='Microsoft.Jet.OLEDB.4.0',
TableName=''FABRICACION S.A. $''].

¿Alguna sugerencia?.
Gracias
Respuesta Responder a este mensaje
#2 Gustavo Larriera \(MVP\)
04/10/2006 - 15:14 | Informe spam
Además de lo que sugiere Maxi, revisa si la tabla 'FABRICACION S.A. $ existe
realmente. Prueba a usra una tabla con un nombre más normal (es decir, sin
espacios en blanco ni signos de puntuación).

Gustavo Larriera, MVP
Solid Quality Mentors
MVP profile: http://aspnet2.com/mvp.ashx?GustavoLarriera
Blog: http://solidqualitylearning.com/blogs/glarriera/


"Maxi" wrote in message
news:
Hola Marisa, eso mas que un error de SQL es un problema del ODBC como
interpreta estos datos. Te recomiendo que preguntes en algun foro de ADO o
DAO


Salu2

Microsoft MVP SQL Server
Culminis Speaker
INETA Speaker

"Marisa" escribió en el mensaje
news:
Hola, estoy intentando importar datos desde un libro de Excel con una
hoja cuyo nombre tiene espacios y puntos.La importación la hago a
través de un sp:
SET @select = N'INSERT CostesRRHH
SELECT
almacen.dbo.Ofertas.IdOferta,'
+Str(@idEmpresa) + ' as IdEmpresa,
Costes.[Unidad operativa],
Costes.[Categoría],
Costes.HorasInforme,
Costes.TotalObraInforme,'
+ Str(@mes) +' as Mes,'
+ Str(@año) + ' as Año,
'''+ cast (getdate() as varchar(40)) +''' as FechaIntegracion,
'''+ suser_sname() + '@' + HOST_NAME() +''' as UC ,
'''+ cast (getdate() as varchar(40)) +''' as MC,
null as UE,
null as ME
FROM
(SELECT
[Unidad operativa],
Obra,
[Categoría],
sum([Nº horas obra]) as HorasInforme,
Sum([Total obra]) as TotalObraInforme
FROM
OpenDataSource(''Microsoft.Jet.OLEDB.4.0'',''Data Source="' +@ruta
+'";Extended properties=Excel 8.0;'')...['''+@hoja+'$'']
GROUP BY
[Unidad operativa],
Obra,
[Categoría]) Costes
INNER JOIN almacen.dbo.Ofertas ON almacen.dbo.Ofertas.Referencia > Costes.Obra'
EXECUTE sp_executesql @select

El problema es que me da el siguiente error cuando la hoja tiene puntos
en el nombre:

Servidor: mensaje 7314, nivel 16, estado 1, línea 7
El proveedor OLE DB 'Microsoft.Jet.OLEDB.4.0' no contiene la tabla
''FABRICACION S.A. $''. La tabla no existe o bien el usuario actual no
tiene permisos para ella.
Traza de error de OLE DB [Non-interface error: OLE DB provider does
not contain the table: ProviderName='Microsoft.Jet.OLEDB.4.0',
TableName=''FABRICACION S.A. $''].

¿Alguna sugerencia?.
Gracias


Respuesta Responder a este mensaje
#3 Marisa
04/10/2006 - 15:53 | Informe spam
Bueno, primero muchas gracias por la rápidez,

contestando a la pregunta de Gustavo Larriera, sí que lo he probado
con otros nombres de pestañas, y me funciona con todos los caracteres,
incluso con espacios en blanco, el único caracter que me está dando
problemas es el punto.

El caso es que si tienes una tabla en cuyo nombre tiene puntos, hay que
pasarle el nombre entre corchetes,y supuse que esto era algo parecido.

De todas formas tenia un espacio en blanco entre el nombre de la pagina
y el $, lo he corregido y ahora obtengo este otro mensaje:
Servidor: mensaje 7399, nivel 16, estado 1, línea 7

El proveedor OLE DB 'Microsoft.Jet.OLEDB.4.0' informa de un error. El
proveedor no proporcionó información acerca del error.
Traza de error de OLE DB [OLE/DB Provider 'Microsoft.Jet.OLEDB.4.0'
IDBInitialize::Initialize returned 0x80004005: El proveedor no
proporcionó información acerca del error.].

¿Esto dice algo nuevo?

Mirare también en los grupos de ADO o DAO

Gracias chicos!

Saludos
Respuesta Responder a este mensaje
#4 Marisa
04/10/2006 - 18:05 | Informe spam
Por si alguien lo necesita, el error con el punto me lo sigue dando,
asi que desde visual le cambio el nombre a la hoja de excel y ejecuto
el sp y la dejo como estaba.

Gracias
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida