powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Как запустить из Билдера экселевское подключение к данным?
13 сообщений из 13, страница 1 из 1
Как запустить из Билдера экселевское подключение к данным?
    #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
Как запустить из Билдера экселевское подключение к данным?
    #36019650
Фотография Ikar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимииир...
AppExcel - элемент управления OleControl
...
А что такое AppET ?
...
Рейтинг: 0 / 0
Как запустить из Билдера экселевское подключение к данным?
    #36019663
Ikar
А что такое AppET ?

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

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

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

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

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

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

Good Luck !
...
Рейтинг: 0 / 0
Как запустить из Билдера экселевское подключение к данным?
    #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
Как запустить из Билдера экселевское подключение к данным?
    #36023041
Фотография Ikar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимииир...
Как достучаться до подключения к Excel через PB?
Воспользоваться поиском
...
Рейтинг: 0 / 0
Как запустить из Билдера экселевское подключение к данным?
    #36024251
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ikar,

И кто-то мне тут говорил, что это не ТОТ Владимир :-)))
...
Рейтинг: 0 / 0
Как запустить из Билдера экселевское подключение к данным?
    #36024410
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ФилиппIkar,
И кто-то мне тут говорил, что это не ТОТ Владимир :-)))Вообще, я говорил.
Теперь начинаю сомневаться :)
...
Рейтинг: 0 / 0
Как запустить из Билдера экселевское подключение к данным?
    #36025007
Фотография 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
Как запустить из Билдера экселевское подключение к данным?
    #36025891
ChV ... Хотя есть упорство. ...


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

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


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