Добавлено: 17 Август 2004, 10:13
Привет всем!
Есть ли у кого опыт успешной работы с DTS из Clarion? DtsRun.exe - не интересно, нужно честно повторить функционал с использованием COM, который на VB занимает всего несколько строк:
Пользуюсь Clarion v.6.1 (Build 9026) + PWCOM классы (которые превратились в \Libsrc\svcom.* в поставке Clarion6)
Успешно получаю указатель на интерфейс _Package2 (dtspkg.dll), тривиальные методы интерфейса (например, _Package2
.GetDTSVersionInfo(pVersionMajor, pVersionMinor, pVersionBuild, pVersionComments)) успешно отрабатывают, а при попытке выполнить:
hr = dtsPackage2.LoadFromSQLServer('localhost','','',256,,,,'HelloFromDTS',)
получаю hr <> S_OK, интерпретируемый как "Need to run the object to perform this operation".
OleRun(address(IUnknown)) выполняется внутри базового pwCOMObject класса ...
Из VB, DtsRun.exe, Enterprise Manager DTS package отрабатывает без проблем. Собственно сам DTS package состоит из единственной AciveX Script Task следующего тривиального содержания:
Переписка с Clarion + COM guru - Jim Kane не помогла, увы, ...
Если кто-нибудь одолел дорогу, упомянутую в теме, поделитесь, пожалуйста.
P.S. Не выживет Clarion с такими дырами в поддержке COM, а жаль, ребеночек-то был симпатичный. MS уже расстается с COM (на словах, по-крайней мере), а в Clarion с COM работать приходится через ..., ну, да вы и так знаете, через что.
__________
www.newmail.ru -- Новая Почта: все по-новому.
(Добавление)
Раз некоторые методы вызываются, то могу посоветовать только заменить вызов hr = dtsPackage2.LoadFromSQLServer('localhost','','',256,,,,'HelloFromDTS',) на прямой вызов метода интерфейса с ручным преобразованием STRING в BSTR.
Кстати, в svcom.clw (и соответственно в pw) была грубейшая ошибка в классе CStr, хотя сейчас она исправлена.
С уважением, Михаил
Или ссылку дай на публичный ресурс.
Александр Агеев (aageev@satren.ru)
Написал: ClaList(2)
Есть ли у кого опыт успешной работы с DTS из Clarion? DtsRun.exe - не интересно, нужно честно повторить функционал с использованием COM, который на VB занимает всего несколько строк:
Код: Выделить всё
Dim objPackage As Package2
Private Sub ExecMyDTS_Click()
objPackage.GlobalVariables.Item("FileToProcess").Value = "c:\simple.txt"
objPackage.Execute
End Sub
Private Sub Form_Load()
Set objPackage = New DTS.Package2
objPackage.LoadFromSQLServer "localhost", "", "", "256", , , , "HelloFromDTS" '<--- *Застрял на реализации в Clarion этого оператора
End Sub
Private Sub Form_UnLoad(Cancel As Integer)
objPackage.UnInitialize
Set objPackage = Nothing
End Sub
Успешно получаю указатель на интерфейс _Package2 (dtspkg.dll), тривиальные методы интерфейса (например, _Package2
.GetDTSVersionInfo(pVersionMajor, pVersionMinor, pVersionBuild, pVersionComments)) успешно отрабатывают, а при попытке выполнить:
hr = dtsPackage2.LoadFromSQLServer('localhost','','',256,,,,'HelloFromDTS',)
получаю hr <> S_OK, интерпретируемый как "Need to run the object to perform this operation".
OleRun(address(IUnknown)) выполняется внутри базового pwCOMObject класса ...
Из VB, DtsRun.exe, Enterprise Manager DTS package отрабатывает без проблем. Собственно сам DTS package состоит из единственной AciveX Script Task следующего тривиального содержания:
Код: Выделить всё
'**********************************************************************
' Visual Basic ActiveX Script
'**********************************************************************
Function Main()
Main = DTSTaskExecResult_Success
MsgBox "Hello From DTS! " , 0 , "HelloFromDTS"
End Function
Если кто-нибудь одолел дорогу, упомянутую в теме, поделитесь, пожалуйста.
P.S. Не выживет Clarion с такими дырами в поддержке COM, а жаль, ребеночек-то был симпатичный. MS уже расстается с COM (на словах, по-крайней мере), а в Clarion с COM работать приходится через ..., ну, да вы и так знаете, через что.
__________
www.newmail.ru -- Новая Почта: все по-новому.
(Добавление)
Раз некоторые методы вызываются, то могу посоветовать только заменить вызов hr = dtsPackage2.LoadFromSQLServer('localhost','','',256,,,,'HelloFromDTS',) на прямой вызов метода интерфейса с ручным преобразованием STRING в BSTR.
Кстати, в svcom.clw (и соответственно в pw) была грубейшая ошибка в классе CStr, хотя сейчас она исправлена.
С уважением, Михаил
Напиши про эту ошибку, плиз. Где, в чём, как исправлена. Очень надо, однако.Кстати, в svcom.clw (и соответственно в pw) была грубейшая ошибка в классе CStr, хотя сейчас она исправлена.
Или ссылку дай на публичный ресурс.
Александр Агеев (aageev@satren.ru)
Написал: ClaList(2)