Ayuda con SQL y Excel....

18/01/2010 - 04:31 por NATHALY_EC | Informe spam
Hola amigos, estoy tratando de enviar datos desde un sp de SQL a excel y
aunque actualmente logre enviar los datos y que se formateen los mismo (con
color, y negrita) luego que ejecuto mi sp el sistema operativo lanza un error
en Excel.exe y no entiendo porque... :o( alguien tiene una idea de que puede
estar pasando?

Ademas, necesito enviar los datos y que estos se agrupen en excel, alguien
tiene idea de como hacer eso? estuve revisando OLE pero aun no doy con la
solucion a mi problema

El codigo que uso es:


alter PROCEDURE [ABC123_2]
@PathAttach VARCHAR(50)=NULL
AS
BEGIN
PRINT @PathAttach
SET @PathAttach= '''' + @PathAttach + ''''
PRINT @PathAttach

DECLARE @desc varchar(255) -- text desctiption OF the error
DECLARE @Counter int-- internal counter TO iterate through the records OF
the CURSOR
SET @Counter=0
DECLARE @ExlValue varchar(100) -- this variable holds the value that
should be assigned TO Excel cell
DECLARE @ObjProp varchar(100) -- holds the FULL description OF the property
DECLARE @WordObject int, @RetCode int, @Document int , @Filename
varchar(255)
EXEC @RetCode = sp_OACreate 'Excel.Application', @WordObject OUTPUT, 4
PRINT 'se creo'
EXEC @RetCode = sp_OAMethod @WordObject, 'Workbooks.Open', @Document
OUTPUT,'C:\SUCCESS2.xls'--@PathAttach

PRINT 'se abrio'

PRINT 'se coloco propiedad'
SET @ObjProp='Application.ActiveWorkbook.Sheets(1).Cells(25, 4).value'
Robotico de SQL'
-
4).font.colorindex'
@ObjProp='Application.ActiveWorkbook.Sheets(1).Range("A2:F4").Group(null,null,null,null)'
EXEC @RetCode = sp_OASetProperty @WordObject, @ObjProp, 1
-
PRINT 'voy a grabar'
EXEC @RetCode = sp_OAMethod @WordObject,
'Application.ActiveWorkbook.Save',NULL
IF @RetCode <> 0 or @@Error <> 0
BEGIN
PRINT 'grabe'
EXEC @RetCode = sp_OAMethod @WordObject, 'Quit'
EXEC sp_oageterrorinfo @WordObject, @RetCode out, @desc out
SELECT @RetCode, @desc

EXEC sp_OADestroy @WordObject
PRINT 'se paro'
EXEC sp_OAStop
end
ELSE
begin

PRINT 'error'

EXEC sp_oageterrorinfo @WordObject, @RetCode out, @desc out
SELECT @RetCode, @desc
EXEC @RetCode = sp_OAMethod @WordObject, 'Quit'
EXEC sp_OADestroy @WordObject


PRINT 'se destruyo'
EXEC sp_OAStop

PRINT 'se paro'
end



END
 

Leer las respuestas

#1 Miguel Egea
25/01/2010 - 10:46 | Informe spam
Lo mas normal nathaly es que lo hayas desrrollado y probado en tu pc, y que
en el server esto no funcione,... El server no suele tener excel instalado.
Yo usaría el método contrario, haría que excel ejecutase el procedimiento
almacenado o la sentencia

Saludos
Miguel Egea

"NATHALY_EC" escribió en el mensaje de
noticias:
Hola amigos, estoy tratando de enviar datos desde un sp de SQL a excel y
aunque actualmente logre enviar los datos y que se formateen los mismo
(con
color, y negrita) luego que ejecuto mi sp el sistema operativo lanza un
error
en Excel.exe y no entiendo porque... :o( alguien tiene una idea de que
puede
estar pasando?

Ademas, necesito enviar los datos y que estos se agrupen en excel, alguien
tiene idea de como hacer eso? estuve revisando OLE pero aun no doy con la
solucion a mi problema

El codigo que uso es:


alter PROCEDURE [ABC123_2]
@PathAttach VARCHAR(50)=NULL
AS
BEGIN
PRINT @PathAttach
SET @PathAttach= '''' + @PathAttach + ''''
PRINT @PathAttach

DECLARE @desc varchar(255) -- text desctiption OF the error
DECLARE @Counter int-- internal counter TO iterate through the records OF
the CURSOR
SET @Counter=0
DECLARE @ExlValue varchar(100) -- this variable holds the value that
should be assigned TO Excel cell
DECLARE @ObjProp varchar(100) -- holds the FULL description OF the
property
DECLARE @WordObject int, @RetCode int, @Document int , @Filename
varchar(255)
EXEC @RetCode = sp_OACreate 'Excel.Application', @WordObject OUTPUT, 4
PRINT 'se creo'
EXEC @RetCode = sp_OAMethod @WordObject, 'Workbooks.Open', @Document
OUTPUT,'C:\SUCCESS2.xls'

PRINT 'se abrio'

PRINT 'se coloco propiedad'
SET @ObjProp='Application.ActiveWorkbook.Sheets(1).Cells(25, 4).value'
Robotico de SQL'
-
4).font.bold'
4).font.colorindex'
@ObjProp='Application.ActiveWorkbook.Sheets(1).Range("A2:F4").Group(null,null,null,null)'
EXEC @RetCode = sp_OASetProperty @WordObject, @ObjProp, 1
-
PRINT 'voy a grabar'
EXEC @RetCode = sp_OAMethod @WordObject,
'Application.ActiveWorkbook.Save',NULL
IF @RetCode <> 0 or @@Error <> 0
BEGIN
PRINT 'grabe'
EXEC @RetCode = sp_OAMethod @WordObject, 'Quit'
EXEC sp_oageterrorinfo @WordObject, @RetCode out, @desc out
SELECT @RetCode, @desc

EXEC sp_OADestroy @WordObject
PRINT 'se paro'
EXEC sp_OAStop
end
ELSE
begin

PRINT 'error'

EXEC sp_oageterrorinfo @WordObject, @RetCode out, @desc out
SELECT @RetCode, @desc
EXEC @RetCode = sp_OAMethod @WordObject, 'Quit'
EXEC sp_OADestroy @WordObject


PRINT 'se destruyo'
EXEC sp_OAStop

PRINT 'se paro'
end



END

Preguntas similares