Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Экспорт данных из SQL Server в Word  [new]
GoodMind
Member

Откуда: Москва
Сообщений: 140
День добрый!

Нужно написать хранимую процедуру, которая экспортирует данные (фио, пол и т.д.) в документ Word, вставляя в соответствующие поля (docvariable). Подскажите как передать данные в переменную Word'а.

Сам юзал
автор
...
Exec sp_OACreate 'Word.Application', @WordObject OUTPUT, 4
...


Но постоянно возникает ошибка при сохранении документа (пишет "ошибка команды"):
автор
Exec sp_OAMethod @WordObject, 'ActiveDocument.SaveAs' , NULL , @Filename


Да и сам ворд из памяти не выгружается, хотя
автор
Exec sp_OAMethod @WordObject, 'Quit'
и
автор
Exec sp_OAStop

отрабатывают вроде без ошибок.
14 май 08, 16:02    [5662633]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из SQL Server в Word  [new]
Glory
Member

Откуда:
Сообщений: 104751
Вопрос то у вас какой ?
14 май 08, 16:05    [5662662]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из SQL Server в Word  [new]
noliker
Member

Откуда: Москва
Сообщений: 52
GoodMind
День добрый!

Сам юзал
автор
...
Exec sp_OACreate 'Word.Application', @WordObject OUTPUT, 4
...




Не могли бы вы полностью выложить свой скрипт. Экспорт из sql в word очень бы пригодился!
14 май 08, 16:06    [5662672]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из SQL Server в Word  [new]
GoodMind
Member

Откуда: Москва
Сообщений: 140
Glory
Вопрос то у вас какой ?


Вопросов несколько:
1. Как передать данные из таблицы в переменную Word'а?
2. Как сохранить документ Word? (при использовании Exec sp_OAMethod @WordObject, 'ActiveDocument.SaveAs' , NULL , @Filename - пишет "ошибка команды и естественно не сохраняет" )
14 май 08, 16:09    [5662693]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из SQL Server в Word  [new]
GoodMind
Member

Откуда: Москва
Сообщений: 140
noliker

Не могли бы вы полностью выложить свой скрипт. Экспорт из sql в word очень бы пригодился!


Код брал здесь
14 май 08, 16:11    [5662708]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из SQL Server в Word  [new]
Glory
Member

Откуда:
Сообщений: 104751
GoodMind
Glory
Вопрос то у вас какой ?


Вопросов несколько:
1. Как передать данные из таблицы в переменную Word'а?
2. Как сохранить документ Word? (при использовании Exec sp_OAMethod @WordObject, 'ActiveDocument.SaveAs' , NULL , @Filename - пишет "ошибка команды и естественно не сохраняет" )

1. Читать из таблицы значения в переменные и вызывать sp_OAMethod
2. Для получения текста ошибки нужно использовать sp_OAGetErrorInfo
14 май 08, 16:12    [5662725]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из SQL Server в Word  [new]
GoodMind
Member

Откуда: Москва
Сообщений: 140
Glory

1. Читать из таблицы значения в переменные и вызывать sp_OAMethod

А конкретно код можете привести?

Glory

2. Для получения текста ошибки нужно использовать sp_OAGetErrorInfo

"Ошибка команды" - это и есть текст ошибка, возвращаемый sp_OAGetErrorInfo
14 май 08, 16:15    [5662759]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из SQL Server в Word  [new]
Glory
Member

Откуда:
Сообщений: 104751
GoodMind
Glory

1. Читать из таблицы значения в переменные и вызывать sp_OAMethod

А конкретно код можете привести?

Glory

2. Для получения текста ошибки нужно использовать sp_OAGetErrorInfo

"Ошибка команды" - это и есть текст ошибка, возвращаемый sp_OAGetErrorInfo

1. Это зависит от того, какой метод Word вы собрались использовать
2. Значит у вас ошибка в тексте. Вы имена методов и свойств откуда черпаете ?
14 май 08, 16:18    [5662788]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из SQL Server в Word  [new]
GoodMind
Member

Откуда: Москва
Сообщений: 140
Glory

1. Это зависит от того, какой метод Word вы собрались использовать
2. Значит у вас ошибка в тексте. Вы имена методов и свойств откуда черпаете ?


1. Word 2003, SQL Server 2005, OS Vista
2. Имена методов и свойств - это все OLE
14 май 08, 16:21    [5662821]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из SQL Server в Word  [new]
Glory
Member

Откуда:
Сообщений: 104751
GoodMind
Glory

1. Это зависит от того, какой метод Word вы собрались использовать
2. Значит у вас ошибка в тексте. Вы имена методов и свойств откуда черпаете ?


1. Word 2003, SQL Server 2005, OS Vista
2. Имена методов и свойств - это все OLE

Ну вы их изучили ? Эти методы и свойства ?
14 май 08, 16:26    [5662880]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из SQL Server в Word  [new]
KGP
Member

Откуда: Москва
Сообщений: 4554
GoodMind
Glory

1. Это зависит от того, какой метод Word вы собрались использовать
2. Значит у вас ошибка в тексте. Вы имена методов и свойств откуда черпаете ?


1. Word 2003, SQL Server 2005, OS Vista
2. Имена методов и свойств - это все OLE


с ole все ok ... если путь, куда записываете нормальный и пробелы уберете из имени файла там где передача как параметра.
14 май 08, 16:30    [5662935]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из SQL Server в Word  [new]
GoodMind
Member

Откуда: Москва
Сообщений: 140
KGP

с ole все ok ... если путь, куда записываете нормальный и пробелы уберете из имени файла там где передача как параметра.


Вот так делаю:

set @NewName = '"C:\Temp\TempDoc.doc"'

-- или так set @NewName = 'C:\Temp\TempDoc.doc'

EXEC @RetCode = sp_OAMethod @WordObject, 'ActiveDocument.SaveAs', NULL , @NewName

Все одно ругается: "ошибка команды"
14 май 08, 16:35    [5662986]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из SQL Server в Word  [new]
Glory
Member

Откуда:
Сообщений: 104751
И у вас на сервере есть каталог C:\Temp\ ? И у учетной записи сервера есть права записи туда ?
14 май 08, 16:37    [5663006]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из SQL Server в Word  [new]
GoodMind
Member

Откуда: Москва
Сообщений: 140
Glory
И у вас на сервере есть каталог C:\Temp\ ? И у учетной записи сервера есть права записи туда ?


Да, все есть
14 май 08, 16:43    [5663063]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из SQL Server в Word  [new]
Glory
Member

Откуда:
Сообщений: 104751
GoodMind
Glory
И у вас на сервере есть каталог C:\Temp\ ? И у учетной записи сервера есть права записи туда ?


Да, все есть

exec master..xp_cmdshell 'dir C:\Temp\*.*' тоже с вами согласен ?
14 май 08, 16:45    [5663085]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из SQL Server в Word  [new]
GoodMind
Member

Откуда: Москва
Сообщений: 140
Glory

exec master..xp_cmdshell 'dir C:\Temp\*.*' тоже с вами согласен ?

И он согласен
14 май 08, 16:59    [5663216]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из SQL Server в Word  [new]
KGP
Member

Откуда: Москва
Сообщений: 4554
GoodMind
Glory

exec master..xp_cmdshell 'dir C:\Temp\*.*' тоже с вами согласен ?

И он согласен


что такое отвечает?

Declare @WordObject int, @RetCode int, @Document int , @Filename varchar(255)
Exec @RetCode = sp_OACreate 'Word.Application', @WordObject OUTPUT, 4
If @RetCode <> 0 or @@Error <> 0 Goto OLE_Error_Handler

Exec @RetCode = sp_OAMethod @WordObject, 'Documents.Add', @Document OUTPUT
If @RetCode <> 0 or @@Error <> 0 Goto OLE_Error_Handler
Exec @RetCode = sp_OAMethod @WordObject,
'Selection.TypeText("Created from within SQL Server SP using OLE Automation.")'
If @RetCode <> 0 or @@Error <> 0 Goto OLE_Error_Handler

DECLARE @Method varchar(255)
SELECT @Method = 'ActiveDocument.SaveAs("'C:\SQLServer1.doc")' 
Exec @RetCode = sp_OAMethod @WordObject, @Method 

set @Filename = 'C:\SQLServer2.doc'
Exec @RetCode = sp_OAMethod @WordObject,
'ActiveDocument.SaveAs' , NULL , @Filename
If @RetCode <> 0 or @@Error <> 0 Goto OLE_Error_Handler
Exec @RetCode = sp_OAMethod @WordObject, 'Quit'
Exec sp_OADestroy @WordObject
Goto Done
OLE_Error_Handler:
Exec @RetCode = sp_OAMethod @WordObject, 'Quit'
Exec sp_OADestroy @WordObject
Goto Done
Done:
Exec sp_OAStop
14 май 08, 17:10    [5663327]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из SQL Server в Word  [new]
GoodMind
Member

Откуда: Москва
Сообщений: 140
Declare @WordObject int, @RetCode int, @Document int , @Filename varchar(255)
Exec @RetCode = sp_OACreate 'Word.Application', @WordObject OUTPUT, 4
If @RetCode <> 0 or @@Error <> 0 Goto OLE_Error_Handler

Exec @RetCode = sp_OAMethod @WordObject, 'Documents.Add', @Document OUTPUT
If @RetCode <> 0 or @@Error <> 0 Goto OLE_Error_Handler
Exec @RetCode = sp_OAMethod @WordObject,
'Selection.TypeText("Created from within SQL Server SP using OLE Automation.")'
If @RetCode <> 0 or @@Error <> 0 Goto OLE_Error_Handler

DECLARE @Method varchar(255)
SELECT @Method = 'ActiveDocument.SaveAs("C:\Temp\SQLServer1.doc")' 
Exec @RetCode = sp_OAMethod @WordObject, @Method 

--добавил
If @RetCode <> 0 or @@Error <> 0 Goto OLE_Error_Handler

set @Filename = 'C:\Temp\SQLServer2.doc'
Exec @RetCode = sp_OAMethod @WordObject, 'ActiveDocument.SaveAs' , NULL , @Filename
If @RetCode <> 0 or @@Error <> 0 Goto OLE_Error_Handler
Exec @RetCode = sp_OAMethod @WordObject, 'Quit'
Exec sp_OADestroy @WordObject
Goto Done
OLE_Error_Handler:
--добавил
	declare @source varchar(255), @description varchar(1000)
	EXEC sp_OAGetErrorInfo @WordObject, @source output, @description output
	print @Method
	print @Filename
	print @source+' - '+@description	
	print cast(@RetCode as varchar(255))
--
Exec @RetCode = sp_OAMethod @WordObject, 'Quit'
Exec sp_OADestroy @WordObject
Goto Done
Done:
Exec sp_OAStop

Пишет:

Microsoft Word - Ошибка команды
-2146824090
14 май 08, 17:33    [5663564]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из SQL Server в Word  [new]
GoodMind
Member

Откуда: Москва
Сообщений: 140
И Word из памяти не выгружает, так и висит...
14 май 08, 17:34    [5663574]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Экспорт данных из SQL Server в Word  [new]
Bodom
Member

Откуда:
Сообщений: 96
У меня точно такая же проблема как и топикстартера. Объект Word создается, но при попытке сохранения выдается сообщение
" Call was rejected by callee.". Где то в глубине я понимаю что дело в правах. но не пойму где.
Подскажите пожалуйста по сабжу.
16 мар 12, 12:51    [12259530]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из SQL Server в Word  [new]
aleks2
Guest
Bodom
У меня точно такая же проблема как и топикстартера. Объект Word создается, но при попытке сохранения выдается сообщение
" Call was rejected by callee.". Где то в глубине я понимаю что дело в правах. но не пойму где.
Подскажите пожалуйста по сабжу.

Взгляни на проблему с другой стороны. Нафега насиловать сервер, когда в Word-е есть MailMerge?
16 мар 12, 15:23    [12261040]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из SQL Server в Word  [new]
Bodom
Member

Откуда:
Сообщений: 96
Я бы и рад взглянуть. Но проблема стоит несколько шире того что я описал. Это лишь корень проблемы как я его вижу. Суть в же проблемы в том что программа у заказчика работает 10 лет и написана на Delphi 6. Есстесственно 32 бита. Программа использует собственные COM сервера для работы с Word файлами (поиск. генерация документов по шаблону и т.д.) Заказчик перешел полностью на 64 бита. Естесственно Com объекты переписал. вот тут и возникла прблема. Com объект внутри создает Word объект, который не может банально открыть файл на диске. Поэто му я и спрашиваю. Может у кого есть идеи. Спрос не бьет в нос.
16 мар 12, 16:04    [12261558]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из SQL Server в Word  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Это всё не касается MSSQL.
16 мар 12, 16:22    [12261780]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из SQL Server в Word  [new]
Bodom
Member

Откуда:
Сообщений: 96
Странно. Мне казалось если строчка моего кода в процедуре
Exec @RetCode = sp_OAMethod @WordObject, 'ActiveDocument.SaveAs' , NULL , 'c:\temp\12.doc'

возвращает ошибку : Call was rejected by callee.
Источник ошибки ODSOLE

То я имею право спросить совета на форуме ? Может кто нибудь помочь с этой ошибкой ?
Система windows 7 64. MS SQL 64. MS Office 2010
16 мар 12, 16:54    [12262170]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт данных из SQL Server в Word  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Bodom
Источник ошибки ODSOLE
То я имею право спросить совета на форуме ?
На другом подфоруме. OLE явно не скульное.
16 мар 12, 21:18    [12263595]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить