16.03.2005, 16:43 | #1 |
Участник
|
Вопрос про Com+
Может кто подскажет как передать в dll объект
QueryRun, QueryBuildDatasource, Query из Axapta... Если можно пример на delphi .. ОЧЕНЬ НУЖНО..... ПОМОГИТЕ ПОЖАЛУЙСТА |
|
16.03.2005, 16:55 | #2 |
Участник
|
передать Аксаптовский класс не получится.
поскольку структура хранения классов не описана. для работы с COM используйте классы COM, COMVariant и т.п... |
|
16.03.2005, 17:02 | #3 |
Участник
|
Я попробовал импортировать class Axapta...
Как то выкладывал на всеобщее обозрение... может через него могу еще раз выложить... Просто опыта маловато... Тут кто то подключался из delphi к axapte но я пробовал у меня не получалось.. может кто поделится опытом... |
|
16.03.2005, 17:39 | #4 |
NavAx
|
В принципе, можно использовать сериализацию, но в данных классах она не реализована и реализовать ее нет возможности. Может, в качестве компромиса, передавать сгенерированный запрос?
__________________
Isn't it nice when things just work? |
|
16.03.2005, 19:01 | #5 |
Участник
|
запихал простенький пример на Delphi сюда:
http://erpkb.com/Axapta/AxaptaBusinessConnector |
|
17.03.2005, 07:56 | #6 |
Участник
|
Спасибо удем пробовать...
|
|
17.03.2005, 08:14 | #7 |
Участник
|
А этот пример у кого нибдь работает?
Пример кода на Delphi: procedure TForm1.FormCreate(Sender: TObject); begin Axapta := CreateCOMObject(StringToGUID('AxaptaCOMConnector.Axapta')) as IAxapta ; Axapta.Logon('Admin'); AxaptaQuery := Axapta.CreateObject('Query'); AxaptaDataSource := AxaptaQuery.Call('AddDataSource', CustTable); // 77 AxaptaRange := AxaptaDataSource.Call('AddRange', CustTable_Name); // 2 AxaptaRange.Call('Value', '*'); AxaptaQueryRun := Axapta.CreateObject( 'QueryRun', AxaptaQuery); While (AxaptaQueryRun.Call('Next')) do begin AxaptaTableBuffer := AxaptaQueryRun.Call('GetNo', 1); StrList.Add(AxaptaTableBuffer.field['AccountNum']); end; end; procedure TForm1.Button1Click(Sender: TObject); begin AxaptaDataSource := AxaptaQuery.Call('AddDataSource', VendTable); // 505 AxaptaRange := AxaptaDataSource.Call('AddRange', VendTable_Name); // 2 AxaptaRange.Call('Value', '*'); AxaptaQueryRun := Axapta.CreateObject( 'QueryRun', AxaptaQuery); While (AxaptaQueryRun.Call('Next')) do begin AxaptaTableBuffer := AxaptaQueryRun.Call('GetNo', 1); StrList.Add(AxaptaTableBuffer.field['AccountNum']); end; end; |
|
17.03.2005, 08:21 | #8 |
Участник
|
Либо этот
procedure TForm1.Button1Click(Sender: TObject); Var Axapta : Taxapta2; begin Axapta := TAxapta2.Create(NIL); Axapta.Logon2('','','cor','ru','','','WORK_DIRECT'); Axapta.CallJob(WideString('CORI01_FillCASnapshot_Job')); Axapta.Logoff(); end; |
|
17.10.2005, 12:54 | #9 |
Участник
|
Подскажите пожалуйста что за ошибка и как решить эту проблему
Не хватает лицензионных прав : Запустить Microsoft Axapta невозможно, поскольку к системе подключено больше пользователей, чем дозволено лицензионными правами. Please restart the Axapta Business Connector before logging on. |
|
17.10.2005, 13:02 | #10 |
Участник
|
см. Лиензирование ABC судя по всему у вас не лицензии “COM Client” или слишком много одновременных подключений
|
|
17.10.2005, 13:06 | #11 |
Участник
|
понятно... подскажите как решить эту проблему?
одновременных соеденинений нет.. |
|
17.10.2005, 22:17 | #12 |
Участник
|
купить лицензию.
другие ответы противоречат правилам |
|
18.10.2005, 07:59 | #13 |
Участник
|
Я это понимаю, но что за лицензия???
На Axapty купили на windows купили.. что еще то надо.. УЖАС КАКОЙ ТО.... |
|
18.10.2005, 08:33 | #14 |
Участник
|
Посмотрите в форме "Лицензионные условия" в Axapta'е. На первой же закладке есть лицензия COM Clients. Закупается на определенное кол-во подключений (в поле статус указывается кол-во закупленных лицензий)
PS Да, в прайс-листе они называются "COM Пользователи"
__________________
Axapta v.3.0 sp5 kr2 Последний раз редактировалось AndyD; 18.10.2005 в 08:36. |
|
18.10.2005, 08:50 | #15 |
Участник
|
Спасибо...
|
|