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
 

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

Preguntas similares