Гость
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Как запустить из Билдера экселевское подключение к данным? / 13 сообщений из 13, страница 1 из 1
01.06.2009, 17:04
    #36019580
Как запустить из Билдера экселевское подключение к данным?
Как запустить из Билдера экселевское подключение к данным?

В PB 11.5 при выполнении
AppET.Object.ActiveWorkbook.Connections(naConnect).ODBCConnection.CommandText = CmdText
выдаётся ошибка
Error Number 36.
Error Text = Name not found accessing external object property activeworkbook at line in function wf_bdtoet of object w_crparrep

и AppET.Object.Workbooks(Shabl).Connections(naConnect).ODBCConnection.CommandText = CmdText тоже не работает


AppExcel - элемент управления OleControl

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
String CmdText, naConnect
BLOB Img

...

AppExcel.ObjectData = Img
naConnect = 'Rep4'
CmdText = "SET NOCOUNT ON " + Chr( 13 ) + Chr( 10 ) + &
      " Exec crST @IdTask = " +  String(sCrd.IdTask) + ", @IdResult = " + String(dw_Par.Object.IdResult[ 1 ])

AppET.Object.ActiveWorkbook.Connections(naConnect).ODBCConnection.CommandText = CmdText // не работает
AppET.Object.Application.ActiveWorkbook.Connections(naConnect).Refresh 


А в VBA в Excele 2007 выполняется аналогичный код без ошибок:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
With ActiveWorkbook.Connections("Rep4")

    .OLEDBConnection.CommandText = Array("SET NOCOUNT ON " & Chr( 13 ) & Chr( 10 ) & _
      " Exec crST @IdTask = " & Worksheets("Параметры").Cells( 2 ,  3 ).Value & ", @IdResult = " & _
                                Worksheets("Параметры").Cells( 3 ,  3 ).Value)
    .Refresh

End With
...
Рейтинг: 0 / 0
01.06.2009, 17:25
    #36019650
Ikar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запустить из Билдера экселевское подключение к данным?
Владимииир...
AppExcel - элемент управления OleControl
...
А что такое AppET ?
...
Рейтинг: 0 / 0
01.06.2009, 17:29
    #36019663
Как запустить из Билдера экселевское подключение к данным?
Ikar
А что такое AppET ?

AppET - элемент управления OleControl

(обшибся)
...
Рейтинг: 0 / 0
02.06.2009, 09:51
    #36020513
ChV
ChV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запустить из Билдера экселевское подключение к данным?
ВладимииирIkar
А что такое AppET ?

AppET - элемент управления OleControl

(обшибся)
...
Рейтинг: 0 / 0
02.06.2009, 10:14
    #36020561
ChV
ChV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запустить из Билдера экселевское подключение к данным?
Владимииир
AppET - элемент управления OleControl

Отлично, что OleControl. А "об какие берега" PB должен догадаться, что надо открыть именно Excel, а не к примеру Word или еще-что-нибудь. Вы же нигде не указываете, что Вы хотите использовать.
Владимииир
А в VBA в Excele 2007 выполняется аналогичный код без ошибок:

Тут Вы же сами написали, что в "в Excele 2007" - т.е. Вы уже в среде Excel. Поэтому и все работает без проблем.
Посмотрите через поиск - подключение к Excel и работа с ним обсуждалась не один раз.

Good Luck !
...
Рейтинг: 0 / 0
03.06.2009, 10:56
    #36022950
Как запустить из Билдера экселевское подключение к данным?
Я ранее не совсем тот PB-текст привёл.
Различия выделены жёлтым, но они не меняют суть - не удаётся переопределить текст команды в подключении Excel.

Ошибка выдаётся другая, но похожая:
Error Number 39.
Error Text = Error accessing external object property odbcconnection at line 117 in function wf_print of object w_crparrep

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
String CmdText, naConnect
BLOB Img

...

AppET.ObjectData = Img
naConnect = 'Rep4'
CmdText = "SET NOCOUNT ON " + Chr( 13 ) + Chr( 10 ) + &
      " Exec crST @IdTask = " +  String(sCrd.IdTask) + ", @IdResult = " + String(dw_Par.Object.IdResult[ 1 ])

AppET.Object.Application.ActiveWorkbook.Connections(naConnect).ODBCConnection.CommandText = CmdText // не работает
AppET.Object.Application.ActiveWorkbook.Connections(naConnect).Refresh 

Понял, что PB не догадывается, что надо открыть именно Excel, потому что я не указываю, что хочу использовать.
Спасибо.

Делаю по другому:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
Long BufLong
String CmdText, naConnect
BLOB Img
oleObject 	oleObj

...

oleObj = Create oleObject

 // указываю что хочу работать с Excelем
BufLong = oleObj.ConnectToNewObject('Excel.Application') 

If IsNull(BufLong) Or BufLong <  0  Then
  Destroy oleObj
  Return  1 
End If

oleObj.ObjectData = Img // не работает
oleObj.Activate(OffSite!)
oleObj.Object.Application.Visible = False 	 	

oleObj.Application.ActiveWorkbook.Connections(mnaConnect[nRep]).ODBCConnection.CommandText =mCmdText[nRep] 
oleObj.Application.ActiveWorkbook.Connections(mnaConnect[nRep]).Refresh   

oleObj.Object.Application.Visible = True

oleObj.DisconnectObject()
Destroy oleObj

GarbageCollect()

PB ругается на жёлтую строчку
Error Number 36.
Error Text = Name not found accessing external object property objectdata at line 70 in function wf_print of object w_crparrep

Как достучаться до подключения к Excel через PB?
...
Рейтинг: 0 / 0
03.06.2009, 11:21
    #36023041
Ikar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запустить из Билдера экселевское подключение к данным?
Владимииир...
Как достучаться до подключения к Excel через PB?
Воспользоваться поиском
...
Рейтинг: 0 / 0
03.06.2009, 17:56
    #36024251
Филипп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запустить из Билдера экселевское подключение к данным?
Ikar,

И кто-то мне тут говорил, что это не ТОТ Владимир :-)))
...
Рейтинг: 0 / 0
03.06.2009, 19:47
    #36024410
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запустить из Билдера экселевское подключение к данным?
ФилиппIkar,
И кто-то мне тут говорил, что это не ТОТ Владимир :-)))Вообще, я говорил.
Теперь начинаю сомневаться :)
...
Рейтинг: 0 / 0
04.06.2009, 10:23
    #36025007
ChV
ChV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запустить из Билдера экселевское подключение к данным?
Владимииир
...

oleObj = Create oleObject

// указываю что хочу работать с Excelем
BufLong = oleObj.ConnectToNewObject('Excel.Application')

If IsNull(BufLong) Or BufLong < 0 Then
Destroy oleObj
Return 1
End If

oleObj.ObjectData = Img // не работает
....
PB ругается на жёлтую строчку
Error Number 36.
Error Text = Name not found accessing external object property objectdata at line 70 in function

Программирование все же должно отличаться от процедуры того, как алхимик пытается сварить неизвестное снадобье. Извините.
Попробуйте разобраться, что и почему надо указывать в скрипте.
PB ругается "Name not found accessing external object property objectdata"- т.e. у объекта oleObj нет такого свойства "ObjectData". А т.к. oleObj у Вас объект Excel.Application, то можете сами убедиться - какие свойства, функции и объекты - имеет Excel.Application. Посмотреть можно или через MSDN или в VBA в Excel ( только Вы должны и там выйти именно на объект Application ) или просто поискать материал в ин-те ( к примеру ссылку http://www.citforum.ru/programming/windows/excel_obj/ - я нашел за 2 минуты ).
Ну, а если лень или некогда, то воспользуйтесь поиском и найдите готовое решение. Хотя не советую - у Вас отсутствуют базовые понятия того, что Вам надо делать. Хотя есть упорство.
Для Вас было бы лучшим выходом поработать, хоть недолго, в коллективе разработчиков.

Good Luck !
...
Рейтинг: 0 / 0
04.06.2009, 15:25
    #36025891
Как запустить из Билдера экселевское подключение к данным?
ChV ... Хотя есть упорство. ...


Спасибо за доброе слово и за ссылку и за потраченное время.
...
Рейтинг: 0 / 0
06.06.2009, 10:14
    #36028968
Как запустить из Билдера экселевское подключение к данным?
Ответ найден!

Ошибка была из-за того, что я создал в Excele 2007 подключение к данным через OLE DB, а в PB использовал свойство ODBCConnection, вместо OLEDBConnection. Это видно из текстов программ в моём первом сообщении, если повнимательней приглядеться (что мне и надо было сделать).

Перед тем как создать тему я, разумеется, просмотрел результаты поиска по ней в этом форуме, и не нашёл решения проблемы. Внешние ссылки и сообщения здесь по этой теме тоже, к сожалению, не привели к ответу на прямо поставленный вопрос.

Итак, как же запустить из Билдера экселевское подключение к данным?

Да вот как:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
String CmdText, naConnect, naSheet

...

// в Excelе  2007  есть ODBC-подключение данных
AppET.Object.ActiveWorkbook.Connections(naConnect).ODBCConnection.CommandText = CmdText 
AppET.Object.Application.ActiveWorkbook.Connections(naConnect).Refresh 

...

// в Excelе  2007  есть OLEDB-подключение данных
AppET.Object.ActiveWorkbook.Connections(naConnect).OLEDBConnection.CommandText = CmdText 
AppET.Object.Application.ActiveWorkbook.Connections(naConnect).Refresh 

...

// в Excelе  2003  есть подключение данных посредством диапазона внешних данных
AppET.Object.ActiveWorkbook.WorkSheets(naSheet).QueryTables( 1 ).CommandText = CmdText 
AppET.Object.ActiveWorkbook.WorkSheets(naSheet).QueryTables( 1 ).Refresh 

...
Рейтинг: 0 / 0
08.06.2009, 10:01
    #36030393
ChV
ChV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запустить из Билдера экселевское подключение к данным?
Поздравляю.
"... и опыт, сын ошибок трудных, ..."

Good Luck !
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Как запустить из Билдера экселевское подключение к данным? / 13 сообщений из 13, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]